Para un proyecto necesito interceptar / redirigir consultas de DNS a una máquina virtual, que a su vez ejecuta dnsmasq
. Esta máquina virtual está alojada en xhyve y cuando está conectada a la red, la configuración funciona bien; Tengo un archivo en /etc/resolver.conf/test.io
que tiene:
nameserver 192.168.64.20 search_order 1
Hacer dig node.test.io @192.168.64.20
o dig node.test.io
da los resultados esperados.
Pero cuando se desconecta, hay un problema. Parece que cuando macOS no está conectado a una red, solo permite que las entradas /etc/resolver.conf/*
funcionen cuando usan 127.0.0.1
.
Intenté configurar un reenvío de puertos, como:
$ echo " rdr pass inet proto udp from any to 127.0.0.1 port 53 -> 192.168.64.20 port 53 " | sudo pfctl -ef -
y cambiando /etc/resolver.conf/test.io
a:
nameserver 127.0.0.1 search_order 1
Sin embargo, el dominio test.io
no se puede encontrar cuando intento hacer un nslookup
o dig node.test.io @localhost
. La VM todavía es accesible ya que dig node.test.io @192.168.64.20
aún se resuelve.
scutil --dns
da lo siguiente:
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
Nota: nslookup
no parece manejar bien el sistema de resolución, así que también intenté usar curl / wget y el navegador para ver si las consultas se resolvieron correctamente. Además, no hay diferencia con dns-sd
. Todos fallaron ...