Обход ограничений прокси во FreeBSD


Итак, вы работаете в компании где живут злобные админы. И эти плохие дядьки закрыли доступ к нашей всеми любимой аське, контакту и одноклассникам! И что теперь делать? весь день работать? выход есть %] И так, что нам дано? Есть доступ в инет с закрытыми сервисами, но часть сайтов у нас работает. Задача получить доступ ко всему. Вся статья по примеру связки httptunnel+polipo+freebsd

Нам нужно:
vds'ка (тут ничего не поделать, нужен root'овый доступ), стоит нынче совсем не дорого, порядка 200 рублей в месяц, а еще и хостить свои сайты будет где, да и файлики в интернете выложить. Наш любимый firstvds.ru пойдет в самый раз(на нем и настраивалось мной)
httptunnel (взять тут: http://nocrew.org/software/httptunnel/), если у вас винда, захватите и версию для нее. Если сервер на freebsd, то httptunnel есть в портах (/usr/ports/www/httptunnel).
какой-нибудь маленький proxy (3proxy, ziproxy (этот нам еще и трафик сэкономит), polipo и т.д.) Я взял себе polipo ибо он первый на глаза попался.

Все, поехали:

В чем смысл всего, мы прокидываем туннель до внешнего сервера (вашего) со своего компьютера. Весь трафик будет прикидываться http-шным летая по 80 порту до сервера, а оттуда уже по миру куда надо и назад по той же схеме через свой прокси.

Для начала нам надо все это дело собрать:
$ cd /usr/ports/www/httptunnel && make install && make clean
$ cd /usr/ports/www/polipo && make install && make clean

добавляем в /etc/rc.conf:
polipo_enable="YES"

Теперь некоторые особенности работы, на нашей vds'ке крутится еще apache который слушает 80 порт. Скорей всего в вашей (как в моем случае) компании наружу открыт только 80 (http) и 443 (https) порт. Но нашему веб-серверу он тоже нужен. Тут выхода по сути два. Первый не совсем правильный — это мы покупаем отдельную vds для нашего обхода и просто гасим там apache. Минусы очевидны, не сайта положить, ни файлика забросить. И второй более грамотный — мы покупаем просто дополнительный ip. Вешаем его на отдельный домен (благо домена третьего уровня сами клепать можем) и просим apache слушать только первый ip на котором и висит основной домен с нашими сайтами. Для этого нужно лишь чуток подправить конфигурацию apache:
$ vi /usr/local/etc/apache/httpd.conf
Listen first.vds.server.ip:80
Listen first.vds.server.ip:443

first.vds.server.ip &mash; это ip сервера первый (тот, что мы купили дополнительно привязываем к какому-нибудь домену по вашему вкусу и оставляем.

Теперь сервер слушает все домены кроме отдельно заведенного с новым ip (сделали вы это уже, да?;])

Поднимаем прокси:
$ cd /usr/local/etc/polipo && cp ./config.simple ./config && vi ./config
proxyAddress = "second.vds.server.ip" # IPv4 only
allowedClients = "127.0.0.1, 192.168.0.0/24"
proxyName = "obhod.youserver.com"
proxyPort = 3128

authCredentials = admin:pass

chunkHighMark = 819200
objectHighMark = 128

diskCacheFilePermissions=0640
diskCacheDirectoryPermissions=0750
diskCacheRoot = ""

Конфиг настроен, теперь запускаем его:
$ /usr/local/etc/rc.d/polipo.sh start

Проверьте запустился ли:
ps ax|grep polipo

если нет, читайте в чем проблема:
cat /var/log/polipo

Поднимаем тунель:
hts -F obhod.youserver.com:3128 obhod.youserver.com:80

Ну и теперь проверим, все ли отвечает и слушает нас:
$netstat -na||grep tcp
tcp4 0 0 92.63.98.42.80 *.* LISTEN
tcp4 0 0 92.63.98.42.3128 *.* LISTEN

Замечательно, видно, что оба сидят и слушают )) Все, осталось самое интересное, у себя на компьютере запускаете
htc -P proxy.company.com:3128 -F 1020 you.server.com:80

в случае винды соответственно htc.exe

Теперь чуток подправляем параметры вашего браузера/icq/и прочих клиентов. Указываем использовать прокси у себя с параметрами: server : localhost, port: 1020 и вперед, читайте общайтесь, но про работу все же не забывайте :]

Обновлено: 12.03.2015