Лисаков и макромир

Сам себе прокси-сервер

Описаны три способа превращения своей удалённой машины в прокси-сервер. Всё это в разное время я узнал от hombit. Обновлено 3 июня 2018.

SSH-туннель

Не требуется установка программ. Подойдёт как временное быстрое решение для компьютера. Чтобы проложить туннель через удалённую машину, выполните на своём компьютере:

user $
ssh -D 2222 username@hostname.com -N

Где

  • -D позволяет использовать порт 2222
  • -N запрещает выполнять команды на сервере

Если пароль введён или не требуется, то должно сложиться впечатление, что команда находится в процессе выполнения. Оставляйте терминал в этом состоянии и в мессенджере или браузере выставляйте настройки Proxy. Надо указать:

  • Host: localhost
  • Port: 2222
  • Type: SOCKS5

Имя пользователя и пароль указывать не надо.

В браузере Firefox, например, это можно сделать так: Настройки → Дополнительные → Сеть; в пункте «Соединение» нажимаете «Настроить», «Ручные настройки прокси», HTTP Прокси: localhost, Порт: 2222. Также надо поставить галочку «Использовать этот прокси-сервер для всех протоколов».

В браузере Chrome нужно выбрать Настройки → Дополнительно → Сеть → Прокси. Лично мне Chrome показал такое сообщение:

When running Google Chrome under a supported desktop environment, the system proxy settings will be used. However, either your system is not supported or there was a problem launching your system configuration.

But you can still configure via the command line. Please see man google-chrome-stable for more information on flags and environment variables.

Если в самом браузере настройку выполнить нельзя, то можно запустить его таким образом (это должна быть новая сессия, то есть до выполнения команды браузер должен быть закрыт):

user $
google-chrome --proxy-server="socks://localhost:2222"

Если хочется запустить команду в фоне, достаточно добавить ключ -f:

user $
ssh -f -D 2222 username@hostname.com -N

После выполнения этой команды терминал можно будет закрыть.

3proxy и аналоги

На удалённую машину устанавливается прокси-сервер, и вы подключаетесь к желаемому пункту назначения через этот сервер.

Следуйте, например, инструкции по установке и настройке прокси-сервера 3proxy. Обратите внимание на последнюю строку в файле /etc/3proxy/3proxy.cfg (шаг 4 в инструкции). Указано proxy -n -p3128 -a, то есть использоваться будет HTTP-прокси на порту 3128, а не SOCKS5-прокси. Чтобы изменить тип прокси и порт, можно в последней строке указать, например, socks -p1111.

Существуют и другие прокси-серверы, например, Squid, tinyproxy. Все они позволяют использовать SOCKS5 прокси, подключаясь к своей удалённой машине. Общий недостаток всех этих методов — логин и пароль передаются в незашифрованном виде, то есть при перехвате трафика они доступны злоумышленнику.

MTProto Proxy для Telegram

Протокол MTProto для Telegram позволяет использование шифрования при передаче логина и пароля. Приложение надо обновить до версии 4.8.8 и новее.

Можно либо собрать из исходников, либо установить с помощью докера:

  1. Установите docker (ссылка для Ubuntu, при необходимости ищите другие дистрибутивы), также можно настроить использование docker без root-привилегий.

  2. Выполните

    user $
    docker run -d -p110:443 --name=mtproto-proxy --restart=always -v proxy-config:/data telegrammessenger/proxy:latest
  3. Выполните

    user $
    docker logs mtproto-proxy

    Найдите в выводе команды похожую строку:

     [*]   tg:// link for secret 1 auto configuration: tg://proxy?server=46.161.39.3&port=443&secret=8d5ec5e7f93d35d2ad780dfbd7499b73
    

    Измените порт на 110, получится ссылка, при нажатии на которую приложение Telegram предложит использовать MTProto Proxy через 110 порт:

     tg://proxy?server=46.161.39.3&port=110&secret=8d5ec5e7f93d35d2ad780dfbd7499b73
    

PS

Свой удалённый сервер можно получить за 200₽/месяц, к примеру, у vscale. На момент написания записи через vscale можно выходить в мир.