No modo desconectado não existe nenhuma consulta DNS ... Resolvemos isso adicionando um dispositivo TUN / TAP ao nó macOS e 'fingimos' com isso que ele está conectado.
Para um projeto, preciso interceptar / redirecionar consultas DNS para uma VM, que por sua vez executa dnsmasq
. Essa VM é hospedada por xhyve e, quando conectada à rede, a configuração funciona bem; Eu tenho um arquivo em /etc/resolver.conf/test.io
que tem:
nameserver 192.168.64.20 search_order 1
Fazer dig node.test.io @192.168.64.20
ou dig node.test.io
fornece os resultados esperados.
Mas quando está offline, há um problema. Parece que quando o macOS não está conectado a uma rede, ele só permite que /etc/resolver.conf/*
entradas funcionem quando usam 127.0.0.1
.
Eu tentei configurar um encaminhamento de porta, 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 -
e alterando /etc/resolver.conf/test.io
para:
nameserver 127.0.0.1 search_order 1
No entanto, o domínio test.io
não pode ser encontrado quando tento fazer um nslookup
ou dig node.test.io @localhost
. A VM ainda pode ser acessada, pois dig node.test.io @192.168.64.20
ainda é resolvido.
scutil --dns
fornece o seguinte:
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
parece não tratar bem o resolvedor, então eu também tentei usar o curl / wget e o navegador para ver se as consultas foram resolvidas corretamente. Além disso, nenhuma diferença com dns-sd
. Tudo falhou ...
Tags dns port-forwarding macos