41 votos

Fallan las búsquedas de DNS, por ejemplo, con `ping`, pero el trabajo con `host`

Estoy usando pfSense 2.0rc3, y lo he configurado como un reenviador DNS y habilitado en el "Registro de concesiones DHCP en reenviador DNS" y lo que entiendo que son todos los ajustes apropiados para conseguir servidor DNS para búsquedas locales.

Funciona como se esperaba con Linux y en particular me puede ejecutar host abc y ping abc (y otras aplicaciones) y todos ellos funcionan como se esperaba.

Sin embargo, en Mac OS X Lion 10.7 no funciona como se esperaba. En particular, sólo las búsquedas con el host comando parecen funcionar, es decir,

$ ping abc
ping: cannot resolve abc: Unknown host

$ host abc
abc.local has address 192.168.1.128

$ ping abc.local
ping: cannot resolve abc.local: Unknown host

$ host abc.local
abc.local has address 192.168.1.128

¿Por qué la búsqueda para abc funciona cuando se utiliza el host comando pero no con ping (y otras aplicaciones)?

Gracias por la lectura.

29voto

jobu1324 Puntos 220

Las razones de este cambio, no sé, pero es impulsado me vuelve loco por un tiempo.

Yo no por qué funcionan las cosas para el anfitrión, pero no de ping, pero yo creo que tiene que ver con la naturaleza de estas dos utilidades. Ping es una simple (aunque muy útil) para la utilidad de diagnóstico, para dejar a los paquetes en el cable que debe obtener hizo eco de la espalda. El nombre de host funcionalidad de búsqueda es sólo un efecto secundario del puesto de trabajo y entrega a la del sistema recursivo de resolución (creo yo -- yo no he verificado mediante la comprobación de las librerías vinculadas o cualquier cosa de ese tipo). Host principal del trabajo es realizar la resolución de nombres DNS, por lo que implementa su propio recursiva de resolución.

Apple recursiva de resolución es mDNSResponder. Por alguna razón, la versión de mDNSResponder en Lion necesidades "-AlwaysAppendSearchDomains" opción de línea de comandos para que se comporten como lo hizo en Snow Leopard (al menos).

Aquí está una manera rápida de solucionarlo:

sudo sed -i .orig '/ProgramArguments/,/<\/array>/ {
s/\(<string>-launchd<\/string>\)/\1\
                <string>-AlwaysAppendSearchDomains<\/string>/
}' /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

(Debe de ser de dos caracteres de tabulación en el inicio de la segunda hasta la última línea de arriba, pero no pude averiguar cómo llegar a este pequeño editor para insertar las pestañas, así que he añadido a 16 plazas. Cualquiera debería funcionar, pero las pestañas ajuste el espaciado del archivo original, mejor).

Esto agregará el "-AlwaysAppendSearchDomains" el argumento de la mDNSResponder de inicio de archivo plist (y guardar una copia de seguridad), pero ya que esta es controlada por launchd, que el sistema necesita ser contada para reiniciar mDNSResponder.

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

Ahora, si usted comprueba su funcionamiento mDNSResponder proceso, usted debe ver que se está ejecutando con su nuevo argumento:

ps auxww | grep mDNSResponder

(Apoyos a http://www.makingitscale.com/2011/fix-for-broken-search-domain-resolution-in-osx-lion.html y http://kavassalis.com/2011/07/wtf-bug-in-os-x-10-7/, donde encontré mis respuestas a este problema.)

9voto

Corey L. Puntos 96

Desde el host(1) el hombre de la página:

Mac OS X el AVISO

El comando del host no utilizar el nombre de host y la dirección de la resolución o de la consulta DNS mecanismos de enrutamiento utilizado por otros procesos que se ejecutan en Mac OS X. Los resultados del nombre o la dirección de las consultas impreso por el host puede difieren de los encontrados por otros procesos que utilizan el sistema operativo Mac OS X nativo nombre y dirección de los mecanismos de resolución. Los resultados de las consultas DNS también pueden diferir de las consultas que utilizan el sistema operativo Mac OS X DNS biblioteca de enrutamiento.

Desafortunadamente, no hay información sobre cómo exactamente el comando del host resuelve los nombres de host. Este comportamiento hace que sea un poco inútil para la depuración, en mi humilde opinión.

7voto

Lamont Peterson Puntos 31

La historia básica ... era el comando nslookup, pero tenía sus propias implementación de todo es que la resolución de las rutinas. Lo que sucedió fue que el sistema de resoluciones en las diferentes plataformas que trabajó de forma diferente a partir de nslookup. A veces, esto produciría algún lugar a diferentes resultados.

El anfitrión y cavar los comandos fueron creados como la "reescritura" de nslookup. Que enlazar estáticamente en el sistema de resolución de funciones. El sistema de resolución es una colección de funciones en el estándar de la biblioteca de C de UNIX o UNIX como sistema (en Mac OS X, estas funciones son parte de la netdb de la biblioteca). Al hacer esto, el anfitrión y cavar comandos siempre funcionan de la misma manera que el sistema de resolución para cualquier sistema operativo que se construyen, sino que ellos no dependen de él. De esta manera, son excelentes herramientas de diagnóstico en los casos donde el sistema de resolución está funcionando mal.

NOTA: Host y cavar a leer la lista de servidor de nombres en /etc/resolv.conf a menos que se les da un determinado servidor de nombres que hablar. Sólo el comando del host utiliza la lista de búsqueda en el /etc/resolv.conf archivo; dig no, que es la razón por la que uno siempre debe dar a cavar FQDN de resolver nada. Ambos comandos son plenamente autosuficiente; por ejemplo, /etc/resolv.conf archivo es la única cosa que no en el archivo binario que utilizan.

mDNSresponder es Bonjour. No he cavó en ella demasiado profundamente, pero sospecho que esta config configuración no es la fijación de este o, al menos, no directamente. He tenido este mismo problema en Mac OS X 10.9.1 y simplemente reiniciando mDNSresponder fijo para mí. Nunca he visto este problema antes de que en 10.5 -> 10.8/10.9 en cualquier otro sistema. También, las aplicaciones GUI no se vieron afectados por ella, era sólo herramientas de línea de comandos como ping y ssh que se rompió.

Si encuentro el tiempo para cavar a través de la biblioteca un poco más, voy a ver si puedo encontrar una explicación más completa.

4voto

user45874 Puntos 6

He creado un script de shell para automatizar la corrección (y un desinstalador si necesita más adelante), aquí:

https://github.com/michthom/AlwaysAppendSearchDomains

Este fue a dar a menos técnico a los usuarios en el trabajo que podría alejarse de la edición manual de los archivos del sistema.

3voto

Oskar Puntos 1242

Host es anexando el .local sufijo dns. Ping no lo es. Si usted encuentra este desconcertante, puede añadir .local como un defecto sufijo en la red de preferencias del sistema y el sistema añade que al intentar resolver nombres de host.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X