¿Cómo se configura la búsqueda de DNS para OSX Mountain Lion?

33

Si busco mi resolv.conf, veo este mensaje:

#
# Mac OS X Notice
#
# This file is not used by the host name and address resolution
# or the DNS query routing mechanisms used by most processes on
# this Mac OS X system.
#
# This file is automatically generated.
#

Estoy tratando de agregar una entrada DNS. Edité mi archivo de hosts y eliminé el caché dns, pero el nombre no se resuelve si lo uso host servername. Pensé que tal vez eso hostno estaba configurado para mirar el hostsarchivo. ¿Cómo puedo resolver mi nueva entrada y qué está usando OSX si no es así resolv.conf?

Ben Flynn
fuente

Respuestas:

17

La herramienta de host no solo resuelve los nombres (como en, usando el sistema de resolución de nombres del sistema) sino que realmente consulta los servidores dns (como en, enviando paquetes a udp / 53 y posiblemente tcp / 53): no conoce ni usa el hostsarchivo local .

Si desea probar la resolución del sistema operativo (como en gethostbyname () y funciones libc similares) puede intentar hacer ping al nombre que agregó /etc/hostsy cumplirá con lo que puso en ese archivo.

Además, como ya descubrió que la búsqueda de DNS en Mac OSX no se usa /etc/resolv.conf, y la forma correcta de configurar qué servidores DNS se consultan es en la networksetupherramienta de configuración de red o en la herramienta de línea de comandos. Sinceramente, no sé si puede configurar el orden en que se prueban las fuentes, pero el comportamiento estándar es probar /etc/hostsprimero y luego los servidores DNS.

Lucas404
fuente
1
Encontré un contenedor de perl para getaddrinfo: search.cpan.org/~pevans/Socket-GetAddrInfo-0.22
Ben Flynn
26

Los resolvers de DNS se pueden agregar en OS X mediante el networksetupcomando:

sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Inserte el nombre de la conexión de red según corresponda. Estos resolvers aparecerán en resolv.conf a medida que se generan automáticamente, pero las ediciones directas a resolv.conf no darán lugar al uso de esos resolvers. Supongo que los resolvers están almacenados en un plist en alguna parte; Buscaré e informaré de nuevo.

Editado para agregar: Parece que es el archivo XML plist que almacena los servidores DNS /Library/Preferences/SystemConfiguration/preferences.plist.

El archivo host en / private / etc / hosts debería funcionar para forzar la resolución de nombres particulares (/ etc es un enlace simbólico a / private / etc). ¿Puede verificar su sintaxis y que está editando el archivo correcto?

Febo
fuente
Entonces, ¿podría usar este comando para agregar el archivo hosts?
Ben Flynn
no puedes, y no necesitas
Luke404
No, si desea agregar nombres al archivo de hosts, simplemente agréguelos directamente. El archivo de hosts se verifica primero cuando se resuelven los nombres, luego el caché de resolución local y luego los servidores DNS configurados. Sin embargo, el uso del comando "host" para probarlo no verificará el archivo de hosts locales. Una forma fácil de probar sería usar una utilidad de red como ping.
phoebus
1
A veces, la interfaz obtiene nombres tontos, para obtener el nombre exacto que necesita, también puede hacerlo networksetup -listallnetworkservices . Si eso contiene espacios, debe comillas simples el nombre completo, es decir:sudo networksetup -setdnsservers 'white space' 8.8.8.8 8.8.4.4
Marcin
2
¿Es posible configurar el resolutor para usar un puerto diferente al 53?
Rune FS