Я создал VPN-сервер на компьютере linux, который направляет весь свой трафик c через сеть Tor. Схема такова:
VPN client -> VPN server -> Tor -> Internet
Соединение работает нормально, и клиент получает publi c Tor IP.
Я настроил Tor на сервере в качестве прозрачного прокси и моя конфигурация torrc
такова:
VirtualAddrNetwork 10.192.0.0/10
AutomapHostsOnResolve 1
DNSPort 10.8.0.1:53530
TransPort 10.8.0.1:9040
Я также направил запросы DNS на Tor, и мой сервер iptables
:
iptables -A INPUT -i tun0 -s 10.8.0.0/24 -m state --state NEW -j ACCEPT
iptables -t nat -A PREROUTING -i tun0 -p udp --dport 53 -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:53530
iptables -t nat -A PREROUTING -i tun0 -p tcp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040
iptables -t nat -A PREROUTING -i tun0 -p udp -s 10.8.0.0/24 -j DNAT --to-destination 10.8.0.1:9040
iptables -t nat -I POSTROUTING 1 -s 10.8.0.0/24 -o enp2s0 -j MASQUERADE
iptables -I INPUT 1 -i tun0 -j ACCEPT
iptables -I FORWARD 1 -i enp2s0 -o tun0 -j ACCEPT
iptables -I FORWARD 1 -i tun0 -o enp2s0 -j ACCEPT
iptables -I INPUT 1 -i enp2s0 -p udp --dport 1194 -j ACCEPT
Когда я сделать запрос на веб-сайте, DNS не утечка, и с помощью Wireshark я вижу, что запрос делается на 10.8.0.1:
Поэтому я почти уверен, что все работает, кроме случаев, когда я пытаюсь сделать DNS-запрос к службе .onion
. На Linux и Android он работает, как и ожидалось, однако на MacOS и iOS это не работает.
Я открыл Wireshark и сделал запрос на хост .com
и .onion
хост. Запрос .com
отображается на Wireshark и работает нормально, однако .onion
даже не отображается там, поэтому есть что-то, блокирующее этот DNS-запрос до достижения сетевого интерфейса.
Кто-нибудь знает, что заблокировать запрос?
Я думаю о добавлении .exit
или чего-то еще в конец домена .onion
, затем перехватить этот запрос на сервере и удалить .exit
из запроса, будет это работает? Запрос с окончанием, отличным от .onion
, работает, просто .onion
запрос блокируется.
Заранее спасибо!
Редактировать: проверка пакетов с Wireshark на сервере, когда я использую Android (который работает нормально), когда я посещаю .onion
хост, это результат:
10.8.0.4 → 10.8.0.1 DNS 68 Standard query 0x6887 A protonirockerxow.onion
10.8.0.1 → 10.8.0.4 DNS 84 Standard query response 0x6887 A protonirockerxow.onion A 10.225.55.81
Это подтверждает, что проблема в Apple, поскольку и iOS, и MacOS блокируют DNS-запрос .onion
, поскольку сервер даже не получает первый пакет DNS, он блокируется до достижения сетевого интерфейса.