Для проекту мені потрібно перехопити / перенаправити запити DNS до VM, який у свою чергу працює dnsmasq. Цей VM розміщується xhyve, і при підключенні до мережі налаштування працює добре; У мене є файл, у /etc/resolver.conf/test.ioякому:
сервер імен 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.
Я спробував налаштувати переадресацію портів, наприклад:
$ ехо " rdr передають inet proto udp з будь-якого порту 127.0.0.1 53 -> 192.168.64.20 порт 53 "| sudo pfctl -ef -
і змінюється /etc/resolver.conf/test.ioна:
сервер імен 127.0.0.1 search_order 1
Однак домен test.ioнеможливо знайти, коли я намагаюся зробити nslookupабо dig node.test.io @localhost. VM все ще доступний, оскільки dig node.test.io @192.168.64.20все ще вирішується.
scutil --dns дає наступне:
резолюція №9 домен: test.io сервер імен [0]: 127.0.0.1 прапори: запит записів, запит записів AAAA охоплення: 0x00030002 (доступна, локальна адреса, безпосередньо доступна адреса) порядок: 1
Примітка: nslookupсхоже, не добре поводиться з резолюцією, тому я також намагався використовувати curl / wget та браузер, щоб перевірити, чи правильно вирішено запити. Також різниці з dns-sd. Все не вдалося ...