¡VEA LA ACTUALIZACIÓN A CONTINUACIÓN!
También disfruto usando Dnsmasq en mi máquina local, y también tuve este problema. Aquí está la solución:
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/
no está presente por defecto; debes crearlo tú mismo.
También desde la página del manual:
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.
Entonces, si desea que todas las consultas dns para el dominio de nivel superior dev
se enruten al servidor de nombres local, debería:
# mkdir /etc/resolver
# echo 'nameserver 127.0.0.1' > /etc/resolver/dev
configd
no altera los archivos /etc/resolver/
, por lo que esta configuración persistirá a través de cambios de red y reinicios.
ACTUALIZACIÓN 17 de julio de 2012
Desafortunadamente, a partir de OS X Lion, la resolución superior (como se muestra en scutil
--dns
) desaparece cuando no hay interfaces activas:
# 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
Observe que el resolutor # 1 está vacío, pero que la entrada del servidor de nombres derivado / etc / resolver permanece.
Resulta que, dado que puede especificar el dominio de resolución directamente en el archivo / etc / resolver /, la especificación del dominio raíz especial de Internet .
provoca la creación de una entrada de resolución global que se parece a:
resolver #8
nameserver[0] : 127.0.0.1
Ahora todas las consultas DNS se enrutan a localhost, incluso cuando están fuera de línea.
Por supuesto, aún tendrá que resolver sus dominios elegidos como 127.0.0.1 usando algo como la opción --ddress de dnsmasq:
# dnsmasq --address=/dev/127.0.0.1
En resumen:
- Configure todos sus servidores dns de interfaz de red en 127.0.0.1:
networksetup -setdnsservers Ethernet 127.0.0.1
networksetup -setdnsservers Wi-Fi 127.0.0.1
...
- Cree un archivo / etc / resolver / lo que sea:
servidor de nombres 127.0.0.1
dominio
- Configure un servidor DNS local y sea feliz.
cf. http://opensource.apple.com/source/configd/configd-395.11/dnsinfo/dnsinfo_flatfile.c