Per un progetto ho bisogno di intercettare / reindirizzare le query DNS su una macchina virtuale, che a sua volta viene eseguita dnsmasq
. Questa VM è ospitata da xhyve e quando è connessa alla rete, l'installazione funziona bene; Ho un file in /etc/resolver.conf/test.io
cui è presente:
nameserver 192.168.64.20 search_order 1
Fare dig node.test.io @192.168.64.20
o dig node.test.io
dare i risultati previsti.
Ma quando si è offline, c'è un problema. Sembra che quando macOS non è connesso a una rete, consente /etc/resolver.conf/*
alle voci di funzionare solo quando vengono utilizzate 127.0.0.1
.
Ho provato a impostare un port forwarding, come:
$ echo " rdr passa inet proto udp da qualsiasi porta 127.0.0.1 53 -> 192.168.64.20 porta 53 "| sudo pfctl -ef -
e cambiando /etc/resolver.conf/test.io
in:
nameserver 127.0.0.1 search_order 1
Tuttavia, il dominio test.io
non può essere trovato quando provo a fare un nslookup
o dig node.test.io @localhost
. La VM è ancora raggiungibile poiché dig node.test.io @192.168.64.20
viene ancora risolta.
scutil --dns
dà quanto segue:
resolver n. 9 dominio: test.io nameserver [0]: 127.0.0.1 flags: Richiedi record A, Richiedi record AAAA portata: 0x00030002 (raggiungibile, indirizzo locale, indirizzo raggiungibile direttamente) ordine: 1
Nota: nslookup
non sembra gestire bene il risolutore, quindi ho anche provato a usare curl / wget e il browser per vedere se le query sono state risolte correttamente. Inoltre, nessuna differenza con dns-sd
. Tutto fallito ...