- Использование HTTP proxy и SOCKS в Linux
- curl: передача данных через proxy
- wget: закачка файлов через proxy
- ssh: доступ к серверам
- Соксификатор dante
- DNS запросы через proxy
- Как настроить прокси-сервер на Ubuntu
- Что вам понадобится
- Как настроить прокси в Ubuntu через GUI
- Как настроить прокси на Ubuntu через консоль
- Как настроить общесистемный постоянный прокси для всех пользователей
- Как настроить постоянный прокси только для одного пользователя?
- Как настроить прокси для одного пользователя до перезагрузки?
- В чем разница между прокси и VPN
Использование HTTP proxy и SOCKS в Linux
В Linux существует много полезных консольных команд, которые при необходимости хотелось бы запустить через proxy. Некоторые приложения имеют встроенную поддержку proxy, а некоторые нет. Далее описано как пользоваться востребованными утилитами через proxy, даже теми, которые этой поддержки не имеют.
curl: передача данных через proxy
curl имеет полноценную поддержку как HTTP proxy так и SOCKS.
Для тестирования возможно использовать proxy сервера из бесплатных списков (socks — sockslist.net, и HTTP proxy — proxyhttp.net). Проверка IP адреса будет производиться с помощью ресурса check-host.net
# Проверить HTTP proxy curl --proxy 11.22.33.44:5555 check-host.net/ip # Тоже самое, но если для HTTP proxy требуется авторизация curl --proxy 11.22.33.44:5555 -U username:password check-host.net/ip # Проверить socks4 curl --socks4 11.22.33.44:5555 check-host.net/ip # Проверить socks5 curl --socks5 11.22.33.44:5555 check-host.net/ip # Тоже самое, только преобразование имен идет также через SOCKS # (подробнее о преобразовании имен можно прочитать ниже в подразделе "DNS запросы через proxy") curl --socks5-hostname 11.22.33.44:5555 check-host.net/ip
Часть параметров curl можно записать в файл ~/.curlrc:
socks5 = 11.22.33.44:5555 proxy-user = username:password user-agent = "Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1"
С помощью time и curl также можно замерить время отклика сервера:
# Без proxy: time curl check-host.net/ip # С proxy: time curl --socks5 11.22.33.44:5555 check-host.net/ip # Или любого сайта: time curl habrahabr.ru
Результат будет выглядеть так:
real 0m0.307s user 0m0.000s sys 0m0.004s
wget: закачка файлов через proxy
wget имеет встроенную поддержку proxy. Недостаток лишь в том, что только поддержку HTTP proxy. Для использования совместно с SOCKS рекомендуется использовать соксификатор dante.
# Скачать файл через proxy: http_proxy="http://33.22.44.44:8080" wget http://www.google.com/favicon.ico Тоже самое, но для HTTPS https_proxy="http://33.22.44.44:8080" wget https://www.google.com/favicon.ico # Использовать proxy с авторизацией http_proxy="http://33.22.44.44:8080" wget --proxy-user=user --proxy-password=password http://www.google.com/favicon.ico
Чтобы все время не указывать —proxy-user и —proxy-password можно их прописать в файл ~/.wgetrc:
proxy-user = username proxy-password = password user-agent = Mozilla/5.0 (X11; Linux i686; rv:7.0.1) Gecko/20100101 Firefox/7.0.1
ssh: доступ к серверам
Для доступа к серверам через ssh и proxy также лучше использовать соксификатор dante.
Соксификатор dante
apt-get install dante-client # пример для Debian-based систем
# Если требуется зайти по ssh на сервер SOCKS_PASSWORD="" SOCKS_SERVER="11.22.33.44:1080" socksify ssh myserver # Тоже самое, только если для подключения к соксу требуется авторизация SOCKS_USERNAME="user" SOCKS_PASSWORD="password" SOCKS_SERVER="11.22.33.44:1080" socksify ssh myserver # Пример с использованием IRC клиента - irssi SOCKS_PASSWORD="" SOCKS_SERVER="11.22.33.44:1080" socksify irssi # Тоже самое, только с использованием HTTP proxy с поддержкой метода CONNECT HTTP_CONNECT_PROXY="http://11.22.33.44:8080" socksify irssi
С помощью socksify можно направить через proxy почти любое приложение, не только консольное.
Чтобы все время не вводить данные о proxy можно создать файл /etc/socks.conf
Пример для SOCKS:
Пример для HTTP proxy с авторизацией:
А также экспортировать переменные SOCKS_USERNAME и SOCKS_PASSWORD, если для SOCKS или HTTP proxy требуется авторизация:
export SOCKS_USERNAME="username" export SOCKS_PASSWORD="password"
DNS запросы через proxy
Часто требуется чтобы и преобразование имен происходило через proxy. Если использовать dante, то запрос на преобразование имен идет и через proxy, и через именной сервер указанный в /etc/resolv.conf . Понять почему же идет два одинаковых запроса вместо одного не удалось. Поэтому можно предложить два варианта:
1) Закомментировать именные сервера в файле /etc/resolv.conf, чтобы преобразование имен шло только через proxy. Это отразится на всей системе.
2) Изменить /etc/resolv.conf и выставить именные сервера необходимой страны, или просто отличные от серверов провайдера. Например установить сервера Google:
nameserver 8.8.8.8 nameserver 8.8.4.4
Чтобы данные не были перезаписаны именными серверами провайдера (при переподключении), можно запретить обновление списка именных серверов сетевому менеджеру (NetworkManager/wicd) или DHCP-клиенту (спасибо ergil за корректировку).
Или воспользоваться «грубым» методом — запрещением изменения файла /etc/resolv.conf:
sudo chattr +i /etc/resolv.conf
Если есть какие-то дополнения, пожалуйста, напишите, это будет полезно узнать и применить.
Как настроить прокси-сервер на Ubuntu
В этом руководстве я покажу вам, как настроить прокси на Ubuntu, из приложения графической оболочки и командной строки.
Что вам понадобится
- Система Ubuntu. Это руководство было написано и протестировано на Ubuntu 22.04, но оно будет работать на любой другой версии Ubuntu или основанных на ней: Linux Mint, ElementaryOS, NeonOS и т.д.
- Прокси. Я использую прокси от Arch Wiki, но вы можете использовать любого другого провайдера. Вам понадобятся имя пользователя, пароль, IP, порты и протоколы для прокси, который вы планируете настроить.
- Доступ к интерфейсу командной строки ( CLI ) или графическому интерфейсу пользователя ( GUI ), в данном случае GNOME .
- Права суперпользователя root или доступ через sudo.
Как настроить прокси в Ubuntu через GUI
Во-первых, перейдите в приложение Settings (Настройки). Просто нажмите клавишу «Windows», введите «settings» и нажмите на иконку приложения.
Открыв приложение, перейдите на вкладку Network (Сеть) слева и нажмите на шестеренку Network Proxy.
Появится всплывающее окно, где вам нужно выбрать «Manual» и ввести данные прокси. Введите IP и порты и закройте все окна. Вы можете получить IP/порты у вашего провайдера прокси.
Вы настроили прокси на Ubuntu.
Как настроить прокси на Ubuntu через консоль
Если вы хотите сделать это через терминал, выполните следующие шаги. Это даст вам больше возможностей и гибкости в настройке прокси.
Как настроить общесистемный постоянный прокси для всех пользователей
Чтобы настроить общесистемный прокси для всех пользователей, откройте /etc/environment:
И добавьте в файл строки ниже. Не забудьте изменить их на ваши прокси:
http_proxy="http://username:password@myproxy.server.com:8080/" https_proxy="http://username:password@myproxy.server.com:8080/" ftp_proxy="http://username:password@myproxy.server.com:8080/" no_proxy="localhost,127.0.0.1,localaddress,.localdomain.com" HTTP_PROXY="username:password@myproxy.server.com:8080/" HTTPS_PROXY="username:password@myproxy.server.com:8080/" FTP_PROXY="username:password@myproxy.server.com:8080/" NO_PROXY="localhost,127.0.0.1,localaddress,.localdomain.com"
Некоторые значения дублируются намеренно, потому что некоторые программы определяют только переменные в верхнем регистре, а другие – только в нижнем. Если вам не нужны некоторые прокси, вы можете удалить эти строки.
После добавления строк сохраните и закройте файл и перезайдите в систему, чтобы изменения вступили в силу.
Если вы используете apt (или software center), он не будет использовать эти настройки прокси. Вам придется настроить их отдельно.
Как настроить параметры прокси для aptitude (apt, apt-get)Во-первых, вам нужно создать файл в каталоге /etc/apt:
И добавьте в файл строки, приведенные ниже.
Acquire::http::proxy "http://username:password@myproxy.server.com:8080/"; Acquire::ftp::proxy "http://username:password@myproxy.server.com:8080/"; Acquire::https::proxy "http://username:password@myproxy.server.com:8080/";
Как настроить постоянный прокси только для одного пользователя?
Чтобы настроить прокси для одного пользователя, вам нужно отредактировать файл .bashrc.
И добавьте строки в конец файла.
export http_proxy=http://username:password@myproxy.server.com:8080/ export https_proxy=http://username:password@myproxy.server.com:8080/ export ftp_proxy=http://username:password@myproxy.server.com:8080/ export no_proxy=localhost,127.0.0.1,localaddress,.localdomain.com export HTTP_PROXY=username:password@myproxy.server.com:8080/ export HTTPS_PROXY=username:password@myproxy.server.com:8080/ export FTP_PROXY=username:password@myproxy.server.com:8080/ export NO_PROXY=localhost,127.0.0.1,localaddress.localdomain.com
Сохраните и закройте файл. Затем выполните следующую команду, чтобы применить изменения:
Как настроить прокси для одного пользователя до перезагрузки?
Этот временный прокси будет действовать только до перезагрузки системы. Выполните все команды ниже (или только те, которые вам нужны). Обязательно обновите их с вашими настройками:
export http_proxy=http://username:password@myproxy.server.com:8080/ export https_proxy=http://username:password@myproxy.server.com:8080/ export ftp_proxy=http://username:password@myproxy.server.com:8080/ export no_proxy=localhost,127.0.0.1,localaddress,.localdomain.com export HTTP_PROXY=username:password@myproxy.server.com:8080/ export HTTPS_PROXY=username:password@myproxy.server.com:8080/ export FTP_PROXY=username:password@myproxy.server.com:8080/ export NO_PROXY=localhost,127.0.0.1,localaddress.localdomain.com
Я показал вам все варианты настройки прокси на Ubuntu.
Не забудьте изменить все команды с данными вашего прокси. Ваш прокси-провайдер может дать вам домен или IP. Он может дать вам прокси, который требует аутентификации (имя пользователя и пароль) или прокси, который не требует аутентификации. В любом случае, вам нужно будет обновить команды с вашими настройками.
В чем разница между прокси и VPN
В двух словах, VPN шифрует и защищает все данные и трафик и в большинстве случаев является общесистемным. Прокси можно настроить только для определенных приложений и служб. Они не обязательно должны быть общесистемными. В обоих случаях есть свои плюсы и минусы.
Парашютист со стажем. Много читаю и слушаю подкасты. Люблю посиделки у костра, песни под гитару и приближающиеся дедлайны. Люблю путешествовать.