MacOS блокирует луковые DNS-запросы - PullRequest
0 голосов
/ 10 апреля 2020

Я создал 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 request

Поэтому я почти уверен, что все работает, кроме случаев, когда я пытаюсь сделать DNS-запрос к службе .onion. На Linux и Android он работает, как и ожидалось, однако на MacOS и iOS это не работает.

Я открыл Wireshark и сделал запрос на хост .com и .onion хост. Запрос .com отображается на Wireshark и работает нормально, однако .onion даже не отображается там, поэтому есть что-то, блокирующее этот DNS-запрос до достижения сетевого интерфейса.

Кто-нибудь знает, что заблокировать запрос?

Я думаю о добавлении .exit или чего-то еще в конец домена .onion, затем перехватить этот запрос на сервере и удалить .exit из запроса, будет это работает? Запрос с окончанием, отличным от .onion, работает, просто .onion запрос блокируется.

.exit request

Заранее спасибо!

Редактировать: проверка пакетов с 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, он блокируется до достижения сетевого интерфейса.

...