June 22, 2024

Как поднять Tor в качестве прокси-сервера

Многие из нас тем или иным образом привыкли обходить ограничения, которые накладывает на нас Роскомнадзор, да и не только он, в корпоратичных сетях существует немало ограничений. И, хотя мобильный телефон в последнем случае решает проблему, ограничения, наложенные Роскомнадзором, обходятся с некоторым геммороем.

Нашу проблему зачастую решает заблокированный в России Tor. Почему заблокированный, ну... потому что можно это сделать. В какой-то момент были выявлены пакеты, характерные только для Tor, и при их появлении в сети, они или обмен с узлом, куда они направлялись, стал блокироваться. Помните знаменитую попытку блокировки Telegram, когда Ростелеком вышел с растопыренными пальцами и заявил, что они блокируют Telegram лучше всех, потому что нашли характерные для Telegram пакеты и стали блокировать именно их? Только на следующий день вышла новость, что выпущена новая версия Telegram-клиента, где блок с этими характерными пакетами изменен так, что в него кидается рандомный мусор помимо полезных данных. Блокировка Ростелекома умирает, так и не начав толком внедрение по всей стране. Потом появляется протокол MTProto, с которым блокировка вообще становится бессмысленной.

Примерно то же самое и с Tor. Теперь для подключения используются так называемые мосты, которые непубличны, их немало, запросить их можно, но выдаются они гомеопатическими дозами, чтобы никто особо не выкладывал их в паблик, дабы пачками их не блокировали.

А теперь вопрос, а почему не Tor Browser? Запустил и пошёл сёрфить. Да, только он является фактически приватным окном Firefox. Его закрыл, и отлогинился от всего, куда зашел, почистился весь кэш, куки и прочее. Не всегда удобно. Еще не совсем удобно и то, если Tor не использовать часто, может подохнуть мост, и соединения нет, надо запрашивать новые мосты и корректировать настройки. Это касается Orbot в телефоне, который при неиспользовании соединяется так себе, очень вальяжненько. Вопрос второй: Но есть же VPNGate и прочие VPN-сервисы? Да, только они весь трафик, идущий через провайдера, начинают пропускать через свой маршрут. Отсюда следует два неудобных момента минимум: 1. У вас поменялся IP, и при нахождении в залогиненном состоянии в той или иной системе, будь то соцсети, Яндекс, интернет-банкинг и прочее, вас отлогинивает, потому что вы за секунду оказались в другой точке планеты, и теперь вам надо принять с десяток эсэмэсок, чтобы подтвердить, что вы - это вы, а при отсоединении от VPN, эта процедура в случае ее прохождения, потребуется повторно. Неудобно, верно? 2. Если что-то за вами в системе следит (а за вами следит даже драйвер видеокарты nVidia, если телеметрию не прибить) уход на другой IP сразу маякнётся, куда надо. На днях только была новость о том, что двое парней-уклонистов из Львова прилетели в Шереметьево с целью остаться в России, пока идет могилизация. Но в Шереметьево им припомнили, как они собирали деньги на дроны ВСУ, а так же много чего еще. Им даже напомнили, какого числа месяца и года к какой Wi-Fi сети они подключались, находясь в Италии. Теперь они в Турции, языка не знают, кроме русского, но россияне там их на работу не берут, а у турок можно только официально, а просто так там работать нельзя. В общем, у ребят кончаются деньги, хитрожопость сдуло, как пыль, но да и конь с ними.

А что нам в конечном итоге дает Tor, как прокси? В Linux по умолчанию он вообще работает, как служба, и никак себя не выдает, лишь соединяется с сетью Tor, поддерживает это соединение и слушает локальный порт на обратной петле, то есть 127.0.0.1, ожидая оттуда соединений. В Windows это отдельное консольное приложение, которое можно запустить и остановить, не залезая в службы, но если мешает черное окошко консоли, ну, можно, накрайняк, зарегистрировать это как службу, если это необходимо. Мне в винде это нужно редко, поэтому служба мне не нужна, а в Linux пусть она будет, все равно у меня он консольный, без графической оболочки, как раз для подобных вещей.

Если вкратце, мы имеем следующее:

• Исходная система не проксируется, то есть это не VPN;
• Tor не влияет на работу иных приложений, работающих в системе, где он установлен;
• Проксируется только то приложение, где мы явно укажем прокси;
• Возможность подключаться к прокси не только с компьютера, где стоит Tor

Из побочных эффектов можно отметить, что Tor работает только по протоколу SOCKS5, то есть если мы хотим, чтобы он работал как HTTP-прокси, то придется прикручивать приблуду типа Privoxy или аналогичное. Кроме этого такая операционная система, как Android, будет проксироваться вся, там все соединения пойдут через прокси.

Tor в Linux

Итак, начнем с Linux. У меня Debian выше 12-го. ну, то есть выше пока нет, но я на ветке testing, поэтому у меня все чуть новее, но, возможно, что-то не такое стабильное. Итак, нам нужен Tor и обфускатор, который будет соединяться через мосты. Устанавливаем:

sudo apt install tor obfs4proxy

У нас установилась и запустилась служба tor.service. Проверить ее статус можно так:

sudo systemctl status tor

Но для начала нам надо ее остановить, потому что она не коннектится к Tor, у нас нет мостов.

sudo systemctl stop tor

Теперь мы ищем в Telegram бот со следующим именем: @GetBridgesBot. Все просто, запускаем бот, получаем мосты, выдастся 4 моста. Что с ними делать?
Открываем конфигурационный файл tor:

sudo nano /etc/tor/torrc

Добавляем в конец следующие строки:

ClientTransportPlugin obfs4 exec /usr/bin/obfs4proxy
Bridge obfs4 185.220.101.103:52103 092D75D78FCBCD4487512FF09D077302B9EA5965 cert=p9L6+25s8bnfkye1ZxFeAE4mAGY7DH4Gaj7dxngIIzP9BtqrHHwZXdjMK0RVIQ34C7aqZw iat-mode=2
UseBridges 1

Где вторая строчка состоит из следующего: Слово Bridge и пробел после обязательно, а далее мост из Telegram-канала. Можно использовать несколько мостов, таким образом у нас будет несколько строчек со словом Bridge.

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

SOCKSPort 192.168.1.50:9100

Где IP - это IP-адрес компьютера, на который мы поставили Tor, а через двоеточие порт (можно поменять) - порт, который Tor будет слушать. Если добавить эту строчку, мы сможем подключаться к нему с любого устройства в локальной сети. В теории можно пробросить на роутере порт с внешки, тогда и с кнешки можно подключаться. Если эту строчку не добавлять в конфиг, то Tor поднимет порт 9050 на локальной петле 127.0.0.1, и подключиться можно будет только с того компьютера, на котором стоит Tor.

Сохранимся по Ctrl+O и выйдем по Ctrl+X. Запустим службу и посмотрим ее журнал:

sudo systemctl start tor
sudo journalctl -b --no-pager /usr/bin/tor

Если мы видим в журнале заветное:

Bootstrapped 100% (done): Done

Значит, у нас все получилось, и все работает. теперь можно подключаться к Tor из любого места локальной сети. Помним, что мы используем SOCKS5-прокси. Для браузеров достаточно удобно использовать дополнение Proxy SwitchyOmega, оно есть как для Chromium-браузеров, так и для Firefox, добавить туда наш прокси и переключаться между ним и Direct, то есть без прокси. Но это неудобно. Гораздо удобнее завести для прокси второй браузер, неважно, инсталлируемый, портабельный, не суть, в нужный момент открывать его, и он будет работать через прокси, и мы там будем залогинены на всяких там рутрекерах, нетфликсах, если кто-то нетфликсом вообще пользуется.

Tor в Windows

Для начала нам нужно скачать Tor Expert Bundle. Это условно портабельная штука, из архива нужно просто распаковать файлы в удобную папку. После этого мы запускаем

tor\tor.exe

И смотрим, что он не может соединиться, более того, он пишет, что у нас нет конфига. Ну и закрываем по Ctrl+C. Теперь нам надо создать конфиг (лучше создавать с разделителями строки LF, как в Linux):

SOCKSPort 192.168.1.50:9100
ClientTransportPlugin obfs2,obfs3,obfs4,scramblesuit exec h:\Portableapps\tor\tor\pluggable_transports\lyrebird.exe
Bridge obfs4 89.10.110.191:7624 7EC3CE9AB0640524C77FCF361C85E50A9E07F506 cert=i9s53eikMKz4BiU/yYyFpJaBfGm/9xvNf97dnkI6iPg3Ls5TRoyOwhaIQprLgPruBf/zYA iat-mode=2
UseBridges 1

Обратите внимание, что во второй строчке у нас идет путь к pluggable_transports\lyrebird.exe, исправьте его на свой. В первой - IP компьютера и порт (при необходимости) меняем на наш, чтобы подключаться из локальной сети. Мосты мы уже знаем, где ,брать, их можно использовать в конфиге несколько. Сохраняем конфиг с именем torrc в папку %userprofile%\AppData\Roaming\tor.

Запускаем tor.exe и ждем:

Bootstrapped 100% (done): Done

Все. У нас все получилось.

P.S. Можно добавить Tor как службу Windows, чтобы не мешало окно консоли, а так же, чтобы, при необходимости, служба стартовала автоматически при входе в систему. Для этого из командной строки, запущенной с правами администратора нужно отдать такую команду:

tor --service install

Для удаления созданной службы есть иная команда:

tor --service remove

И команды запуска/остановки службы вручную:

tor --service start
tor --service stop

Несколько замечаний

Я не рассматриваю здесь развертывание Tor Relay, то есть чтобы он работал в качестве передающего для других узла в сети Tor, то есть он будет просто клиентом. Разработчики сети Tor так и пишут: Никогда не поднимайте Relay у себя дома!!!

Не надо использовать Tor (как и любой другой прокси) в торрент-клиенте для всех соединений. Почему? А потому что у вас весь файлообменный трафик пойдет через узкое горлышко прокси. Мало того, что качать будете вечность, да еще и прокси от такого трафика задохнется, в общем, ни себе, ни людям. Как здесь поступить грамотно, ведь помимо самих форумов, где мы черпаем торрент-файлы или magnet-ссылки, блокируются Роскомнадзором и анонсеры, которые и заведуют тем, что выдают нам список пиров? Я немного расскажу на примере BitTorrent-клиента Tixati. Он бесплатен, без рекламы, есть как в инсталлируемом, так и в портабельном варианте, под разные OS. Нам нужно сделать 2 вещи:

• Обеспечить удобный файлообмен для себя и других, и неважно, что там заблокировано и где. Для этого используем максимальное количество открытых анонсеров. Взять их можно здесь (обновляемая ссылка).
А добавить в настройках их можно вот так:

Добавление анонсеров в список

Теперь ставим чуть ниже добавленный нами список:

Что это означает? В любой торрент, или magnet-ссылку, добавленную в Tixati, в дополнение к тем анонсерам, которые у нас есть, будут добавляться еще и эти, и через них будут запрашиваться пиры.

• Но мы не решили проблему с прокси. В тех же настройках пункт Proxy у нас чуть выше слева.

Вот тут мы ставим прокси для TCP-трекеров, то есть для анонсеров. Мы просим у них список пиров через прокси, а вот соединяемся с пирами и качаем с них через наши обычные маршруты со скоростью канала, а не со скоростью прокси.

Примерно так мы обходим и ограничения, так и со скачиванием у нас все хорошо.

Кстати, для того, чтобы подключаться к нашему прокси с Android, отлично подходит утилита Tun2Socks. Но если мы не хотим проксировать всю систему Android, то можно в браузере Firefox установить дополнение Proxy Toggle.

Всем хороших выходных и комфортного сёрфинга!

Академик.