Как-то давно я пробовал Tor на локальной машине, покопался в Даркнете и благополучно забыл про это. Однако, в свете крайне косячной работы регулирующих органов, которые блокировали то, что вообще не стоит блокировать (да-да, про 7zip я уже писал), я решил настроить доступ всей своей сети в Tor, как говорится, бесшовно.
Итого, имеем работающий Tor на отдельной машине и Mikrotik шлюзом в интернет. Задача: чтобы все машины на определенные хосты и в зоны .onion ходили, как на обычные, но через Tor.
Чтобы сразу определиться, подчеркну, речь идет про Tor, а не Tor-браузер.
Допустим, что Tor уже установлен и работает. Во-первых, надо уяснить, что DNS-серверов зоны .onion снаружи нет. Для этого можно использовать сам Tor. Вписываем в конфиг torrc
Код:
DNSPort 192.168.8.2:5300
Что обозначает, что теперь на порту 5300 работает DNS-сервер. Для обычных зон его лучше не использовать, все же он достаточно тормозной, хотя и позволяет это делать.
Соответственно, наш общий DNS-сервер (у меня это unbound) надо настроить, чтобы зону .onion он искал в Tor, т.е. unbound.conf
Код:
domain-insecure: "onion"
private-domain: "onion"
do-not-query-localhost: no
local-zone: "onion." nodefault
forward-zone:
name: "onion"
forward-addr: 192.168.8.2@5300
Однако, нюанс в том, что у onion адресов IP, как таковых, нет. Поэтому возвращаемся к torrc и говорим, что для этой зоны мы выделяем подсеть 10.10
Код:
VirtualAddrNetworkIPv4 10.10.0.0/16
AutomapHostsOnResolve 1
т.е. эти вот адреса (можно и другие) надо заруливать в Tor. Обратите внимание на вторую строку, она обозначает, что как только вы запросите какой-то сайт в DNS на 5300, ему будет выдан фиктивный адрес из 10.10./16, этот адрес некоторое время будет закреплен за этим сайтом.
Теперь будем настраивать шлюз. Если у кого-то Tor стоит прямо на шлюзе, вообще не проблема, настройте параметр TransPort в torrc и сделайте redirect с помощью iptables на порт, указанный в этом параметре. У меня Tor стоит отдельно, потому пришлось повозиться. Да, я сначала по дурости использовал dstnat, что в корне неверно, поскольку меняет целевой адрес в TCP-пакете. И мне пришлось много повозиться, прежде чем я понял, что натворил.
На шлюзе нужно включить Web-proxy и 10.10/16 заруливать в него. Проблема в том, что Web-proxy на Mikrotik не умеет пользоваться прокси HTTP Connect, а именно такой прокси есть в Tor и настраивается параметром HTTPTunnelPort. Но у меня уже был 3proxy, который может быть HTTP-proxy и обращаться в родительский прокси SOCKS5.
Теперь цепочка следующая (для браузера прозрачно).
1) DNS запрос идет в общий DNS-сервер, зона onion запрашивается в Tor и выдается 10.10/16
2) По фиктивному 10.10/16 Mikrotik редиректит соединение в свой собственный web proxy, оттуда родительским в 3proxy, оттуда родительским - в Tor.