Использование 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
С помощью прокси сервера вы можете скрыть свой реальный ip адрес и заставить веб-сайт думать, что вы совсем из другой страны или используете другого провайдера, чем это есть на самом деле. Прокси может использоваться не только для просмотра сайтов интернета, но и для обновления системы, загрузки пакетов через apt и многого другого.
В этой статье мы поговорим о том как выполняется настройка прокси Ubuntu с помощью графического интерфейса или через терминал.
Настройка прокси на Ubuntu через GUI
В Ubuntu можно настроить прокси Ubuntu через стандартное приложение Параметры. Откройте программу, затем перейдите в раздел Сеть и кликните по шестеренке Сетевой прокси:
Здесь надо прописать IP адрес вашего прокси и порт в подходящем поле. Это зависит от типа вашего прокси, например, HTTP/HTTPS или SOCKS:
Если для прокси необходима авторизация, вы можете прописать данные авторизации в поле IP адреса:
логин : пароль @ ip_адрес
Теперь вы можете проверить работает ли новый прокси по всей системе. Например, через терминал:
Настройка прокси в Ubuntu через терминал
Все настройки среды рабочего стола в Ubuntu хранятся в базе данных DConf, в том числе и настройки прокси сервера. Настройки записываются в виде пар ключ значение. Если изменить какой либо параметр из меню настроек системы все изменения сразу же запишутся в DConf. Из командной строки настройками DConf можно управлять с помощью команд gsettings и dconf. Дальше я покажу как настроить прокси в Ubuntu из терминала с помощью gsettings.
Базовое использование gsettings для работы с базой данных Dconf выглядит следующим образом. Для чтения данных используем:
Рассмотрим подробнее как выполняется настройка прокси через консоль Ubuntu. Выполните следующие команды чтобы установить в качестве прокси сервера my.proxy.com:8000
gsettings set org.gnome.system.proxy.http host ‘my.proxy.com’
gsettings set org.gnome.system.proxy.http port 8000
gsettings set org.gnome.system.proxy mode ‘manual’
Если вы хотите использовать HTTPS/FTP прокси то вам нужно выполнить:
gsettings set org.gnome.system.proxy.https host ‘my.proxy.com’
gsettings set org.gnome.system.proxy.https port 8000
gsettings set org.gnome.system.proxy.ftp host ‘my.proxy.com’
gsettings set org.gnome.system.proxy.ftp port 8000
Для использования SOCKS прокси наберите:
gsettings set org.gnome.system.proxy.socks host ‘my.proxy.com’
gsettings set org.gnome.system.proxy.socks port 8000
Все изменения действуют только для текущего пользователя. Если вы хотите установить прокси для всех пользователей запускайте gsettings от суперпользователя добавив перед командой sudo, например:
sudo gsettings set org.gnome.system.proxy.http host ‘my.proxy.com’
sudo gsettings set org.gnome.system.proxy.http port 8000
sudo gsettings set org.gnome.system.proxy mode ‘manual’
Если вы используете автоматическую настройку прокси можете выполнить следующие команды:
gsettings set org.gnome.system.proxy mode ‘auto’
gsettings set org.gnome.system.proxy autoconfig-url http://my.proxy.com/autoproxy.pac
Для того чтобы удалить прежние настройки прокси и работать напрямую выполните:
gsettings set org.gnome.system.proxy mode ‘none’
Чтобы прописать прокси в Ubuntu с авторизацией, записывайте в поле host логин и пароль в том же формате, который предложен для настройки в графическом интерфейсе.
Утилита apt тоже умеет работать с глобальным прокси, настроенным как описано выше, однако вы можете настроить для неё прокси отдельно через конфигурационный файл /etc/apt/apt.conf. Для этого добавьте в этот одну из строк для активации нужного типа прокси:
Acquire::http::proxy «логин:пароль@ip_адрес:порт/»;
Acquire::https::proxy «логин:пароль@ip_адрес:порт/»;
И непосредственно для активации прокси:
После этого пакетный менеджер apt будет использовать свой отдельный прокси для обновления Ubuntu.
Выводы
В этой небольшой статье мы поговорили о том, как выполняется настройка прокси Ubuntu. Как видите, это совсем не сложно. Если вы хотите зайти с другой стороны и вам нужно настроить прокси сервер, смотрите статью о том как установить squid в Ubuntu.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.