Para un proyecto necesito interceptar/redir las consultas DNS a una VM, que a su vez ejecuta dnsmasq
. Esta VM está alojada en xhyve y cuando se conecta 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
Haciendo dig node.test.io @192.168.64.20
o dig node.test.io
dan los resultados esperados.
Pero cuando se desconecta, hay un problema. Parece que cuando MacOS no está conectado a una red, sólo permite /etc/resolver.conf/*
entradas para trabajar cuando utilizan 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 cambiar /etc/resolver.conf/test.io
a:
nameserver 127.0.0.1
search\_order 1
Sin embargo, el dominio test.io
no se encuentra cuando intento hacer un nslookup
o dig node.test.io @localhost
. La VM sigue siendo accesible como dig node.test.io @192.168.64.20
todavía 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 resolver, así que también he probado a usar curl/wget y el navegador para ver si las consultas se resolvían correctamente. Además, no hay diferencia con dns-sd
. Todos fallaron...