VEDI AGGIORNAMENTO QUI SOTTO!
Mi piace anche usare Dnsmasq sul mio computer locale e ho avuto anche questo problema. Ecco la soluzione:
Da man 5 resolver
:
The configuration for a particular client may be read from a file
having the format described in this man page. These are at present
located by the system in the /etc/resolv.conf file and in the files
found in the /etc/resolver directory.
/etc/resolver/
non è presente per impostazione predefinita; devi crearlo tu stesso.
Anche dalla pagina man:
domain
Domain name associated with this resolver configuration. This
option is normally not required by the Mac OS X DNS search system
when the resolver configuration is read from a file in the
/etc/resolver directory. In that case the file name is used as the
domain name.
Quindi, se si desidera che tutte le query DNS per il dominio di primo livello dev
vengano instradate al server dei nomi locale, è necessario:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
non modifica i file /etc/resolver/
, quindi questa impostazione persisterà attraverso le modifiche e i riavvii della rete.
AGGIORNAMENTO 17 luglio 2012
Sfortunatamente, a partire da OS X Lion, il risolutore principale (come mostrato da scutil
--dns
) scompare quando non sono attive interfacce:
# scutil --dns # Online
DNS configuration
resolver #1
nameserver[0] : 127.0.0.1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
# scutil --dns # Offline
DNS configuration
resolver #1
...
resolver #8
domain : dev
nameserver[0] : 127.0.0.1
Notare che il resolver n. 1 è vuoto, ma che rimane la voce del nameserver derivata / etc / resolver.
Si scopre che poiché è possibile specificare il dominio del resolver direttamente nel file / etc / resolver /, la specifica del dominio radice Internet speciale .
provoca la creazione di una voce del resolver globale che assomiglia a:
resolver #8
nameserver[0] : 127.0.0.1
Ora tutte le query DNS vengono instradate a localhost, anche quando offline.
Ovviamente, dovrai comunque risolvere i domini scelti come 127.0.0.1 usando qualcosa come l'opzione --address di dnsmasq:
# dnsmasq --address=/dev/127.0.0.1
In sintesi:
- Impostare tutti i server DNS dell'interfaccia di rete su 127.0.0.1:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Crea un file / etc / resolver / qualunque:
nameserver 127.0.0.1
dominio.
- Imposta un server DNS locale e sii felice.
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c