Жизнь за прокси. Методы борьбы с прокси-сервером

Часто бывает, что Интернет в локальной сети доступен через прокси, и никаких радостей жизни вроде VPN нет и не предвидится. Вам, как администратору, это доставляет немало хлопот, особенно если ваш сервер на Линуксе. В этой статье мы рассмотрим настройку некоторых системных утилит на доступ через прокси.

apt – в нем скрыта коровья сила

Для того чтобы заставить менеджер пакетов тянуть обновления и инсталляции с репозиториев через прокси-сервер, откройте в редакторе
/etc/apt/apt.conf и поместите туда следующие строчки:

Acquire::http::Proxy "http://username:password@proxy.host:port/";
Acquire::Proxy "true";

Некоторые утилиты, такие как wget например, используют значение системных переменных http_proxy и ftp_proxy. В них тоже нужно прописать наш прокси-сервер со слэшем в конце.

exporthttp_proxy=http://username:password @proxy.host:port/
exportftp_proxy=ftp://username:password @proxy.host:port/

Настраиваем wget

Чтобы качать менеджером загрузок wget, открываем /etc/wgetrc и пишем следующие строчки:

http_proxy=http://username:password @proxy.host:port/
ftp_proxy=ftp://username:password @proxy.host:port/
use_proxy=on

После этого автоматически заработают все скрипты, которые загружают из Сети что-либо с помощью wget, например, зеркало репозитория или обновления для антивируса.

Прокидываем ssh

Предположим, что где-то на просторах Интернета есть сервер, к которому вы хотите получить доступ по ssh, но напрямую это невозможно, так как вы за прокси! Ничего сложного, есть несколько вариантов решения этой проблемы. Один из них – это организация специального туннеля, использующего протокол SSL. Но это довольно долгий способ, желающие могут ознакомиться здесь: http://www.opennet.ru/base/net/ssh_over_ssl.txt.html. Мы же с вами воспользуемся принципом наименьшего действия. Устанавливаем утилиту corkscrew (http://www.agroman.net/corkscrew/):

apt-get install corkscrew

Создаем в home файл proxy-auth, в него пишем логин:пароль для доступа к прокси-серверу. Если у вас авторизация на прокси по IP-адресу, то этот шаг пропускаем. Далее открываем /etc/ssh/ssh_configи добавляем команду после Host*:

ProxyCommand corkscrew proxy.hostport %h %p /home/proxy-auth

Теперь подключаемся к нашему серверу стандартно:

sshgoogle.com

Теперь главное, чтобы были открыты нужные порты на фаерволе.

Настраиваем openvpn

Клиент для VPN-соединений также поддерживает работу через прокси-сервер. Допустим, вам нужно организовать туннель с сервером в Интернете. В конфигурационном файле /etc/openvpn/client.conf добавляем строчки:

http-proxyproxy.hostport

http-proxy-retry

comp-lzo

Первая строчка понятна, вторая заставляет клиент восстанавливать соединение после дисконнекта, а третья включает сжатие. Только важный момент: если вы используете сжатие, то его нужно включить и на серверной стороне. Иначе клиент и сервер «не поймут» друг друга.

Синхронизируем время

На серверах очень часто выходит из строя батарейка на материнской плате. Из-за этого идут неправильно системные часы. Менять батарейку не всегда хочется, особенно если у вас пару лет аптайма, а вот засинхронизировать часы с сервером в Интернете можно. Обычно для этого используют протокол NTP и утилиту ntpdate, но его настроить на прокси-доступ нельзя. Однако выход как всегда есть - это хитрое использование одной особенности протокола HTTP. В соответствии с RFC 2616 — спецификацией HTTP — в заголовках ответа сервер должен указывать дату. С большой долей вероятности на крупных веб-серверах время настроено точно, и на него можно полагаться. Соответствующей утилитки нет в репозиториях, но ее можно скачать с сайта разработчика: http://www.clevervest.com/htp/ или http://www.rkeene.org/oss/htp/.

После заветной комбинации ./configure; make; makeinstall прописываем в cron.d такое правило:

htpdate -P proxy.host:port -s microsoft.com

Надеюсь, что microsoft.com не обманет нас со временем.

Заключение

Как видите, большинство популярных утилит поддерживает доступ через прокси. Если есть необходимость пустить через прокси какое-то редкое приложение либо вовсе сделать доступ прозрачным, можно поднять прокси-сервер squidс авторизацией на прокси верхнего уровня и сделать его прозрачным с помощью iptables. Подробнее об этом как-нибудь в другой раз.

Brian Warner, Minsk 2010


Компьютерная газета. Статья была опубликована в номере 28 за 2010 год в рубрике интернет

©1997-2024 Компьютерная газета