Как настроить шлюз tor

Бывает, что TOR в какой-либо стране или из определенной сети работает либо плохо, либо совсем не работает. Часто происходит это по причине того, что блокируется трафик на адреса образущих сеть TOR узлов. В терминогологии TOR, этот тип узлов называется “relay”. Relay-узлы могут исполнять роли входных (в сеть TOR) узлов, выходных (в сеть Интернет из сети TOR) узлов, или транзитных (между входными и выходными) узлов, в различных комбинациях. Список relay-узлов изменяется, удостоверяется, подписывается, и публикуется с помощью специальных узлов — directory authorities. В клиенте TOR список directory authorities преднастроен, которые в свою очередь предоставляют список relay-узлов, которые нужны клиенту для выбора узлов для построения прокси-цепочки. Соответственно список relay-узлов доступен публично, например, на www.dan.me.uk/torlist, так же можно проверить отдельные адреса по metrics.torproject.org. В TOR предусмотрена ситуация, когда для блокировки доступа к сети, могут быть заблокированы адреса всех relay-узлов. Для такого случая, в сети принимают участие другой тип узлов, которые не публикуются с помощью directory authorities, но при этом выполняют роль входного relay-узла. В терминологии TOR узлы такого типа называются bridge-relay, т.е. мосты, между клиентом и сетью TOR. Следует сказать, что в браузере TOR доступен список преднастроенных bridge-узлов, а так же можно получить настройки узла по адресу bridges.torproject.org. То есть получается некая публично-ограниченная модель — список всех мостов получить разом нельзя, но можете получить несколько случайных узлов по запросу, чтобы существенно усложнить блокировку мостов.

Читайте также:  При включении планшета не работает сенсорный экран

Сам я “мостами” никогда не пользовался, но сообщали, что скорость работы через преднастроенные узлы оставляет желать лучшего, поэтому в этой статье я расскажу, как поднять свой приватный bridge-узел для доступа к TOR. Но для начала рассмотрим варианты, которые предлагает клиент.

Какие мосты нам предлагает клиент

При первоначальной настройке Tor-browser нам должны предложить варианты: подключаться к сети напрямую, через прокси, а также должны быть доступен вариант “Tor is censored in my country”. Последнее нам и дает варианты настройки узлов-мостов.

1) Select an build-in bridge

Клиент будет использовать встроенный список мостов, в зависимости от выбранного т.н. Pluggable Transport. “Подключемый транспорт” выполняет обфускацию TOR-трафика для обхода систем, которые умеют детектировать тип трафика по содержимому.

2) Request a bridge from torproject.org

Позволяет запросить 3 bridge-узла с официального ресурса bridges.torproject.org. Может спасти положение, если преднастроенные узлы по какой-либо причине не работают.

Судя по тому, что мне удалось подсмотреть, то запрашиваются узлы не “втупую” запросом, например по https, на bridges.torproject.org, а с применинием обфускации трафика и тоже через TOR или другими обходными путями, потому что во время запроса у меня открывались такие коннекты:

Получается, что о блокировке в сети torproject.org можно не так сильно беспокоится. Если он заблокирован, клиент все равно получает “мосты” незаурядным способом.

3) Provide bridge i know

Эта опция позволяет ввести данные известного узла, который может быть независим от встроенных или мостов с torproject.org. Данные вводятся в следующем формате:

Ну, пожалуй на этом моменте приступим к поднятию своего собственного моста в сеть TOR.

Заглянем в статью Tor: Bridges. В целом, в начале объясняется все то, что было описано выше. О настройке своего моста объясняется в секции Running a Tor Bridge. В целом все понятно: открыть файл torrc, отредактировать несколько параметров, сохранить, перезапустить. Но смущает это предложение:
Your bridge relay will automatically publish its address to the bridge authority, which will give it out via https or email as above. Т.е. данные нашего моста улетают в публичный список. Хорошо для волонтерства, но мы же хотим сделать свой приватный мост. Об этом тут упоминается:
If you’re interested in running an unpublished bridge or other non-standard uses, please do read the specification.
Ну, получается, нужно смотреть глубже — в спецификацию. Открываем, смотрим:

Найти способ никуда не публиковать данные моста найден. В разделе “рекомендации” также указано, что неплохо бы отключить любые соединения на выход из сети Tor, так как мост должен выполнять только посреднеческую роль между клиентом и сетю Tor.

Итак, приступим к установке. По установке Tor на сервер есть замечательные инструкции — Installing Tor on Debian/Ubuntu и Installing Tor Source, а также описана установка на Ubuntu Server 16.04 в статье “Настройка универсального узла связи для выхода в оверлейные сети”.

После установки останавливаем Tor командой:

Открываем файл torrc (на Ubuntu он лежит в /etc/tor/torrc ) и задаем следующие параметры:

Создаем файл для логов и вешаем ему пользователей, под которыми работает Tor:

Если в /var/lib/tor остался какой-либо кеш — вычищаем его:

На этом настройка закончена. Запускаем Tor, недолго ждем для “прогрева” узла:

Настроим Tor-браузер. Находим в настройки TORа в браузере, выбираем Tor is censored in my country -> Provide bridge i know , вводим данные нашего узла — : . Вбивается тот, который указывали в настройке ORPort . ID-узла вводить ненужно.

Нажимаем Connect, ждем подключения. Далее проверяем работу TOR — проходим на ifconfig.co и check.torproject.org.

Обфускация трафика

Теперь неплохо бы подключить обфускацию трафика. Установим obfs4, так как, согласно статье Tor: Pluggable Transports:
obfs4 is currently the most effective transport to bypass censorship.

Откроем статью obfs4proxy bridge deployment guide и согласно ей установим пакет obfs4proxy :

Дополняем torrc следующими настройками:

Перезапускаем Tor, недолго ждем когда он запустится:

Теперь снова заходим в настройки Tor-браузера. Нужно забить настройки моста с использованием obfs4, и забивается он в формате, описанного в инструкции obfs4proxy bridge deployment guide/Post-install:

1) obfs4 — используемый “Pluggable transport”.

— берем из настройки ServerTransportListenAddr в конфиге torrc сервера .

3) — берем из файла /var/lib/tor/fingerprint
Выполняем:

Берем строку из 41 символа после “Unnamed”, подставляем в строку настройки моста

4) cert= iat-mode=0 берем из файла /var/lib/tor/pt_state/obfs4_bridgeline.txt
Выполняем:

Забираем последюю нужную нам часть, подставляем в строку настройку моста.

Итого получается такое:

Сохраняем и перезапускам Tor-браузер. Ждем подключения. После подключения проверяем, что все работает на ifconfig.co и check.torproject.org.

В конце следует упомянуть, что помимо obfs4 есть и другие методы обфускации, такие как meek, fte, scramblesuit, snowflake. Этими транспортами можно использовать не только для скрытия Tor-трафика, но и для других приложений, но об этом, пожалуй, в следующей статье.

Источник

Анонимизация всего траффика через VPN + TOR/I2P. Собираем миддлбокс с нуля

В этой статье будет рассказано, как пробросить весь трафик операционной системы через TOR так, чтобы о наличии TOR-а операционная система даже не подозревала.

Это поможет не думать о бесконечных настройках прокси и onion, перестать бояться на тему «а не сливает ли торрент клиент мой реальный IP адрес, так как не полностью поддерживает прокси?» и, наконец, быть застрахованным от законодательного запрета TOR-а в России.

Когда я говорю «TOR», я подразумеваю «TOR и I2P». По схожей методике сюда можно подключить любой даркнет.

Статья — «чисто конкретная». Теория уже неплохо изложена в статье Pandos ‘а habrahabr.ru/post/204266. В данном тексте будет дана детальная инструкция «как сделать, чтобы работало».

Постановка задачи

1. Мой компьютер должен по нажатию одной кнопки переходить в режим «весь трафик — не русский».

2. По нажатию второй кнопки он должен переходить в режим «весь траффик идет через TOR»

3. Третья кнопка — для I2P.

4. Входная TOR-нода должна находиться за рубежом.

5. Все это должно работать под linux, windows, android. Заранее: с OS X и iPhone тоже все в порядке, просто у меня их нету, так что протестить не смогу.

Дисклеймер

Использование tor over vpn не обязательно повышает анонимность. Подробнее: trac.torproject.org/projects/tor/wiki/doc/TorPlusVPN. В данной статье описывается средство, которое, тем не менее, нужно применять с умом.

Хостинг

Первым делом нам понадобится сравнительно дешевая VPS-ка, владельцы которой не против, чтобы там крутился TOR (и не русская, разумеется). Лично я использую DigitalOcean. В их ToS не специфицирован запрещенный трафик (хотя если будете качать пиратские торренты прямо с их IP — заблокируют на раз. Ну, собственно, нам для этого и нужен TOR. ). Стоит это 5$ в месяц.

Регистрироваться можно прямо тут: www.digitalocean.com/?refcode=82e536b1a24d (ссылка реферальная, вам $10, мне $25. Не хотите играть в это дело — уберите refcode).

Если Вы знаете лучшие или хотя бы не худшие варианты хостинга под такие цели — пишите в комменты, обновлю статью.

Я не буду описывать конкретную процедуру создания VPS-ки, так как это зависит от хостинга и просто. Давайте предположим, что вы в итоге можете выполнить команду,

и получить shell на VPS-ку. Я буду считать, что на VPS-ке крутится debian 7. По крайней мере, эта статья тестировалась на debian 7. На убунте тоже заработает, наверное.

Установка пакетов

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

I2P нету в репозитории debian, так что придется добавить новый источник.

Теперь поставим основные пакеты — TOR, VPN и I2P. Также нам пригодится DNS сервер. Я использую unbound.

Настройка VPN

Я буду держать все настройки VPN в /opt/vpn. Для начала следует сгенерировать сертификаты для сервера и клиента.

N.B. Мы будем запускать несколько серверов (один под tor, второй под обычный трафик) и использовать для них один и тот же сертификат. Это не обязательно. Вполне можно (и нужно) генерировать независимый сертификат или даже свою CA для каждого из openvpn серверов.

Теперь сгенерируем новую CA и необходимые сертификаты.

Изучите папку /opt/vpn/rsa/keys. Теперь там есть несколько пар ключ+сертификат.

ca. — certificate authority
server. — ключ сервера
client. — ключ клиента.

Клиенту нужно отдать только ca.crt, client.crt и client.key, остальные файлы должны оставаться только на сервере.

Пора писать конфигурационный файл для сервера. Положите его в /etc/openvpn/00-standard.conf

Попробуйте запустить openVPN

Если не получилось — у вас баг: bugs.debian.org/cgi-bin/bugreport.cgi?bug=767836#43 Поправьте согласно инструкции и добейтесь успешного запуска сервера.

ОК, VPN работает. Самое время подключиться к нему. Для этого на клиенте напишем конфиг-файл:

Теперь попробуйте подключиться

После появления надписи «Initialization Sequence Completed» вы подключены и должны успешно пинговать 10.8.1.1. Интернет пропадет, это нормально.

Настройка интернета

Допустим, мы не хотим использовать TOR, а просто хотим себе не русский внешний IP. В этом случае при помощи вот этого скрипта:

вы достигнете желаемого. Перепишите это в /etc/rc.local.

Настройка TOR

Если вы прочитали и выполнили предыдущую часть — не забудьте очистить iptables

Теперь допустим, что вы таки хотите VPN через TOR (и предыдущий пункт не выполняли). Тогда:

допишите в конец /etc/tor/torrc следующее:

также изменим наш конфиг-файл сервера /etc/openvpn/00-standard.conf. Измените DNS с гугловского на локальный. Не забудьте перезапустить openvpn.

Наконец, следующая конструкция на bash перенаправит весь входящий трафик vpn через tor

Кстати, запомните эту конструкцию. Это универсальный способ перенаправить весь трафик с заданной сетевой карты через прозрачный прокси. I2P будем добавлять точно так же.

Готово. Подключитесь к VPN. Убедитесь, что у Вас TOR-овский IP-шник. Зайдите на какой-нибудь .onion сайт, чтобы проверить: dns тоже работает.

Настройка I2P

С I2P сложности. У них нет собственного DNS сервера, так что придется делать свой.

Откройте /etc/unbound/unbound.conf и допишите в конец:

После этого любой (!) домен будет раскрываться в заведомо несуществующий IP адрес 10.191.0.1. Осталось «ловить» такой трафик и перенаправлять на localhost:8118 — именно тут слушает I2P.

Кстати говоря, пока что не слушает. Выполните

и выставьте флаг, чтобы стартовал при загрузке.

Остановите tor. Запустите unbound.

Теперь настроим privoxy в связке в I2P. Допишите в конец /etc/privoxy/config

и рестартаните privoxy

Точно так же, как и в случае с TOR, смените DNS на локальный в конфигурации vpn-сервера:

Если вы уже пробовали редиректить TOR — не забудьте почистить iptables:

Осталось выполнить переадресацию:

Знакомо, правда? Единственное отличие — номер порта прокси.

Подключитесь к VPN. Вы в I2P. Откройте epsilon.i2p, убедитесь, что сеть работает.

Что дальше?

Дальше Вам пора сделать так, чтобы они не конфликтовали. Вместо одного сервера /etc/openvpn/00-standard сделать три: 00-standard для обычного трафика, 01-tor для tor-а, и 02-i2p для i2p. Назначьте им разные подсети (например, 10.8.2.* для tor и 10.8.3.* для i2p). После этого tor и unbound перестанут конфликтовать и вы сможете подключаться к любой из трех одновременно работающих сетей.

Кроме того, сейчас клиент не проверяет сертификат сервера. Это можно поправить.

А еще можно запилить виртуалку, для которой выкатить tun0, трафик которого идет через TOR, после чего виртуалка не будет знать даже про VPN. А в хосте этой виртуалки прописать роутинг так, чтобы без VPN не подключалось вообще.

А еще надо лимит скорости в I2P поставить. И логи у VPN не ротируются. И веб-морды нет.

А еще… а еще я все это обязательно опишу — в других статьях. Засим — спасибо за внимание!

Источник

Оцените статью