VOIR LA MISE À JOUR CI-DESSOUS!
J'aime également utiliser Dnsmasq sur ma machine locale et j'ai également rencontré ce problème. Voici la solution:
De 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/
n'est pas présent par défaut; vous devez le créer vous-même.
Également à partir de la page de manuel:
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.
Donc, si vous vouliez que toutes les requêtes DNS pour le domaine de premier niveau dev
soient acheminées vers le serveur de noms local, vous devez:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
ne modifie pas les fichiers /etc/resolver/
, ce paramètre persistera donc lors des modifications et des redémarrages du réseau.
MISE À JOUR 17 juillet 2012
Malheureusement, depuis OS X Lion, le résolveur supérieur (comme indiqué par scutil
--dns
) disparaît lorsqu'aucune interface n'est active:
# 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
Notez que le résolveur # 1 est vide, mais que l'entrée de serveur de noms dérivée / etc / resolver reste.
Il s'avère que puisque vous pouvez spécifier le domaine de résolution directement dans le fichier / etc / resolver /, la spécification du domaine racine Internet spécial .
provoque la création d'une entrée de résolution globale qui ressemble à:
resolver #8
nameserver[0] : 127.0.0.1
Désormais, toutes les requêtes DNS sont acheminées vers localhost, même hors ligne.
Bien sûr, vous devrez toujours résoudre vos domaines choisis en 127.0.0.1 en utilisant quelque chose comme l'option --address de dnsmasq:
# dnsmasq --address=/dev/127.0.0.1
En résumé:
- Définissez tous vos serveurs DNS d'interface réseau sur 127.0.0.1:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Créez un fichier / etc / resolver / que ce soit:
serveur de noms 127.0.0.1
domaine.
- Configurez un serveur DNS local et soyez heureux.
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c