SIEHE UPDATE UNTEN!
Ich benutze Dnsmasq auch gerne auf meinem lokalen Computer und hatte auch dieses Problem. Hier ist die Lösung:
Von 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/
ist standardmäßig nicht vorhanden; Sie müssen es selbst erstellen.
Auch von der Manpage:
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.
Wenn Sie also alle DNS-Abfragen für die Top-Level-Domain von dev
an den lokalen Nameserver weiterleiten möchten, würden Sie:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
Ändert keine Dateien in /etc/resolver/
, daher bleibt diese Einstellung bei Netzwerkänderungen und Neustarts erhalten.
UPDATE 17. Juli 2012
Leider scutil
--dns
verschwindet ab OS X Lion der Top-Resolver (wie von gezeigt ), wenn keine Schnittstellen aktiv sind:
# 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
Beachten Sie, dass der Resolver 1 leer ist, der von / etc / resolver abgeleitete Nameserver-Eintrag jedoch erhalten bleibt.
Da Sie die Resolver-Domäne direkt in der Datei / etc / resolver / angeben können, wird durch die Angabe der speziellen Internet-Stammdomäne .
ein globaler Resolver-Eintrag erstellt, der wie folgt aussieht:
resolver #8
nameserver[0] : 127.0.0.1
Jetzt werden alle DNS-Abfragen auch offline an localhost weitergeleitet.
Natürlich müssen Sie die von Ihnen ausgewählten Domains immer noch als 127.0.0.1 auflösen, indem Sie die Option --address von dnsmasq verwenden:
# dnsmasq --address=/dev/127.0.0.1
In Summe:
- Stellen Sie alle DNS-Server Ihrer Netzwerkschnittstelle auf 127.0.0.1 ein:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Erstellen Sie eine Datei / etc / resolver / whatever:
Nameserver 127.0.0.1
Domain.
- Richten Sie einen lokalen DNS-Server ein und seien Sie glücklich.
vgl. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c