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

1 ответ1

0

В отключенном режиме DNS-запрос вообще не идет ... Мы решили это, добавив устройство TUN/TAP к узлу macOS и «притворись», что оно подключено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .