Обход прокси используя ssh, dynamic port forwarding | Bypassing proxy limits using ssh, dynamic port forwarding
В этой заметке я бы хотел описать решение одной злободневной проблемы — обход ограничений прокси-сервера (на работе, институте, стране, т.п.)
Многим из Вас знакома ситуация, когда при попытке открыть какую-либо страницу в интернете (например odnoklassniki.ru) или воспользоваться каким-либо сервисом (например icq) Вы получаете отказ в той или иной форме (таймаут соединения, отказ соеднинения, http 403).
Вцелом проблема решаема. Всё необходмое ПО вполне стандартно и открыто, никаких особенных выкрутасов ни для настройки, ни в смысле протоколов не будет.
Весь траффик будет успешно зашифрован, так что Ваш офисный админ-цербер не сможет расшифровать (yу, разве что с горячим утюгом у Вашего уха), при том, что траффик (в смысле содержимого) выглядит вполне себе безобидно (естесственно, что, если Вы начнёте качать гигабайты через этот канал, то Ваш админ может заинтересоваться, а что это там такое)
Для успешного преодоления прокси Вам понадобится:
  • скопировать к себе на компьютер программу putty (ссылка на закачку)
  • наличие компьютера во интернете с реальным ip-адресом, на котором Вы (или хозяин этого компьютера) можете запускать свои программы (тут сразу ремарка: по всей видимости в роли этого компьютера не может выступать компьютер на ADSL-канале от МТУ, в Москве). Тут потребуется ещё кое-что от этого компьютера (точнее от его соединения с интернетом, но об этом позже)

  • Очевидно, что это решение не всегда прокатит. Настоящий админ саткнёт в результате все дырки, если они ещё не заткнуты, но вцелом опыт подсказывает, что во многих случаях это решение работает.

    In this short article I'd like to tell about solution of a well-known problem — bypassing proxy limitations (office, university, country, etc)
    I think that the majority of people using internet from an office, university or some countries (China «The Great Wall firewall», Italy and Great Britain — blocking on-line foreign casino, etc)открыть какую-либо страницу в интернете (например odnoklassniki.ru) are sometime denied to obtain access to some service (MSN, ICQ, ...) or web-pages (facebook, classmates, livejournal, etc):
    You just get a connection timout, http 403 error, or some predefined web-page telling you about existing restrictions. In the majority of cases there's a solution. All the software one can need is open and standard, all protocols used are standard
    The traffic will be encripted and your office Cerber admin will not be able to decrypt it. And this traffic, as well, will be standard, unless you start to use it to download something that's beyond the "usual" limit for your office, but, agan, only the volume can be suspicious for your admin
    The prerequisities are:
  • Obtain a small programm named putty (Here's the direct link)
  • You'll need a computer in the Internet with a real ip, that either you or it's owner can use. (There's one more additional request for this computer, I'll tell below)
  • It can not be denied, that there are a lot of cases, when this solution will not work. Yeap, sure. A good admin will not allow this as well. But... but... In a lot of cases it works well. You may try!
    Предполагаемая схема соединений. Справа внизу — клиенские машины (1), посередине большой компьютер — офисный прокси-сервер (2), слева вверху — тот самый дополнительный компьютер (3).
    (3), должен иметь доступ до тех самых запретных ресурсов
    Настройка (3) состоит в том, что на нём необходимо запустить sshd порту, открытом для http-запросов на (2). Распротранёными являются порты 80 (http), 443 (https), 8080, другие. Если (3) — это Unix/Linux, то sshd -p <порт>, если Windows, то я бы рекомендовал Cygwin
    Моя рекомендация — использовать порт 443. В этом случае внешне всё выглядит совсем безобидно.
    (3) Может быть Вашей домашней машиной. В этом случае бозаботтесь, чтобы её адрес был постоянно Вам доступен, к примеру, используя сервис dyndns.org

    Expected scheme of connections. Lower right corner — client boxes(1), in the middle — office proxy (2), left upper corner — additional pc (3) that will be used to jailbreak your office connection.
    (3) should have access to these restriced resources
    Setup on (3) is running sshd at any ip-port, opened for http requests at (2). Well-known are 80 (http), 443 (https), 8080, etc. If (3) — Unix/Linux, just sshd -p <порт>, if Windows, I'd recomment installing Cygwin
    My recomendation: use port 443, as this will make your connections inoffensive.
    (3) can be your home pc, just make sure you allways now it's address (try using dyndns service).
    Запустить puuty. Указать хост (тот самый (3)), порт (тот, на котором запущен sshd), протокол
    Run putty, change host (the one that is (3)), port (the one used to run sshd), protocol
    В закладке proxy укажите прокси-сервер Вашего офисного прокси-сервера (если есть необходимость; если Вам надо из Китая или Ирана добраться до livejournal, то это может не понадобиться)
    In proxy settings put your office proxy server params (if needed; if you're trying to access, for example Livejournal from China or Iran, this might not be needed, it depends on your network settings)
    Сохраните соединение и попробуйте соединиться.
    Save the connection and try to open it.
    В результате Вы должны увидеть командную строку хоста (3). Собственно Вам надо этого добиться. Без этого никуда дальше. Пробуйте, смотрите, пробуйте включить логи у putty, ...
    Безусловно, может не получиться. Ограничения офисной прокси, закрытые порты, прочая, прочая... Тут целое поле для деятельности.

    You should see host (3) command line. Unless you do this, you can not proceed further. You must succeed at this step. Try to use different options, ports, try to turn on putty logging.
    For sure you may fail.
    Закройте терминал, запустите putty заново, загрузите соединение
    Close the terminal window, run putty again, load the connection
    В разделе tunnels в поле source 3128, dynamic, нажать кнопку add
    In tunnels settings, source 3128, dynamic, push add button
    Вот так должно выглядеть
    Should look like this
    Сохраняете соединение, и открываете его
    Save this connection and open it
    Для проверки того, что всё верно сконфигурировано, в командной строке попробуйте посмотреть результат вывода команды netstat -an, Вы должны увидеть что-то типа tcp 127.0.0.1:3128 LISTEN
    Just to check that you configured properly, run netstat -an in command line and check out for something like tcp 127.0.0.1:3128 LISTEN
    В настройках броузера (в данном случае Firefox) Tools-Options-Settings-Advanced-Network-Settings: manual proxy settings, socks5: 127.0.0.1:3128
    In browser setting (Firefox on screenshot) Tools-Options-Settings-Advanced-Network-Settings: manual proxy settings, socks5: 127.0.0.1:3128
    Попробуйте зайти на прежде запретную страницу.

    Де-факто теперь у Вас есть свой собственный прокси сервер, и Вы можете сконфигурировать его для любой проограммы, которая умеет пользоваться SOCKS5. ICQ, Jabber, MSN, броузеры (Для Firefox настойчиво рекомендую поставть Foxy Proxy, настроить нужные фильтры один раз и вообще забыть о том, что админ чего-то там запретил)

    Все Ваши запросы через этот мини-прокси в результате в шифрованном виде пойдут с Вашей клиентской машины (1) до компьютера (3), а дальше уже в интернет.

    Try to visit a forbidden resource.

    De-facto, now you have your own proxy server and you can configure it's usage for any software that can uilize SOCKS5. ICQ, Jabber, MSN, Browsers (For Firefox I strongly recommend Foxy Proxy, configure filters and forget about all restrictions)

    All your data will be send through this mini proxy in a encrypted way from your client box (1) to computer (3), and only after to the Internet.