Для проекта мне нужно перехватить / перенаправить 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 . Все не удалось ...
