Для проекта мне нужно перехватить / перенаправить DNS-запросы к виртуальной машине, которая, в свою очередь, запускает dnsmasq
. Эта виртуальная машина размещена на xhyve, и при подключении к сети установка работает хорошо; У меня есть файл в /etc/resolver.conf/test.io
который имеет:
nameserver 192.168.64.20 search_order 1
Выполнение dig node.test.io @192.168.64.20
или dig node.test.io
даст ожидаемые результаты.
Но при переходе в автономный режим возникает проблема. Кажется, что когда macOS не подключен к сети, он позволяет работать только с записями /etc/resolver.conf/*
когда они используют 127.0.0.1
.
Я попытался настроить переадресацию портов, например:
$ echo " rdr pass inet proto udp from any to 127.0.0.1 port 53 -> 192.168.64.20 port 53 " | sudo pfctl -ef -
и изменив /etc/resolver.conf/test.io
на:
nameserver 127.0.0.1 search_order 1
Тем не менее, домен test.io
не может быть найден, когда я пытаюсь сделать nslookup
или dig node.test.io @localhost
. Виртуальная машина по-прежнему доступна, так как dig node.test.io @192.168.64.20
все еще разрешается.
scutil --dns
дает следующее:
resolver #9 domain : test.io nameserver[0] : 127.0.0.1 flags : Request A records, Request AAAA records reach : 0x00030002 (Reachable,Local Address,Directly Reachable Address) order : 1
Примечание: nslookup
, похоже, плохо обрабатывает распознаватель, поэтому я также попытался использовать curl/wget и браузер для проверки правильности разрешения запросов. Также нет разницы с dns-sd
. Все не удалось ...