17 votos

La búsqueda del nombre DNS (era SSH) no funciona después de la actualización de Snow Leopard

I Piensa en esto comenzó con la actualización de Snow Leopard. Limpió el directorio .ssh, todavía tiene el problema.

~: uname -a
Darwin california-example-com.local 10.0.0 Darwin Kernel Version 10.0.0: Fri Jul 31 22:47:34 PDT 2009; root:xnu-1456.1.25~1/RELEASE\_I386 i386

~: ssh -V
OpenSSH\_5.2p1, OpenSSL 0.9.8k 25 Mar 2009

~: ls -l ~/.ssh

~: nslookup nevada
Server:     10.94.62.3
Address:    10.94.62.3#53

Name:   nevada.example.com
Address: 10.94.62.3

~: ssh nevada
ssh: Could not resolve hostname nevada: nodename nor servname provided, or not known

18voto

Steven Murawski Puntos 6665

Me encontré con el mismo problema y encontré un hilo sobre un El Mac mini tiene problemas de DNS en las Discusiones de Apple extremadamente útil.

El quid de la cuestión: mDNSResponder parece cambiar ocasionalmente el orden de los servidores de DNS que consulta y, por lo tanto, si consulta primero los servidores de DNS de tu proveedor de servicios de Internet no obtendrá un registro adecuado (o si utilizas DNS divididos obtendrás tu IP pública).

La mejor solución para esto es asegurarse (como lo hizo) de que sólo los servidores DNS necesarios se enumeran en su configuración de DNS. Esto puede requerir remover los servidores DNS del ISP de tu DHCP (como tuve que hacer también - todas las solicitudes son reenviadas a través del servidor DNS local de todos modos).

La razón por la que las utilidades como dig y nslookup tendrá éxito como es normal si están usando BIND y /etc/resolv.conf directamente a diferencia del resto del sistema operativo.

Como referencia en Snow Leopard, la caché del DNS está ahora almacenada por mDNSResponder y para borrarla necesitas reiniciar el proceso usando sudo killall -HUP mDNSResponder . Puedes obtener más información (registro, descarga de estado interno, etc.) usando diferentes banderas a la killall comando.

"sudo killall -USR1 mDNSResponder" to enable operation logging.
"sudo killall -USR2 mDNSResponder" to enable packet logging.
"sudo killall -HUP mDNSResponder" to clear the DNS cache.
"sudo killall -INFO mDNSResponder" to dump mDNSRepsonder's internal state.

Fuente: Snoop Dogg en ese mismo hilo.

9voto

Steve Harris Puntos 61

teníamos problemas como este:

host example.com     <<< WORKED
ping example.com     <<< FAILED

Resuelto con algo como esto:

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

Las aplicaciones en Mac OS X no utilizan el mismo mecanismo para el DNS que "host/dig/nslookup".

El uso de "host/dig/nslookup" fue útil para determinar que no se trataba de un problema de la red. Era un problema del sistema local resuelto con los comandos anteriores.

2voto

pfctdayelise Puntos 407

He experimentado el mismo problema Y aunque reiniciar el mDNSResponder parece "funcionar", reiniciarlo un par de veces cada hora es una mierda.

Así que, por ahora, he "resuelto" el problema corriendo dnsmasq localmente. Para hacer eso:

  • Construye dnsmasq (descarga el tgz y make o brew install dnsmasq )

  • Ponga esto en un dnsmasq.conf archivo:

    resolv-file=resolv.conf user=nobody group=nobody interface=lo0 cache-size=1024

  • Ponga esto en un resolv.conf que está en el mismo directorio que el dnsmasq.conf archivo (nb: no /etc/resolv.conf ):

    nameserver 8.8.8.8 nameserver 4.2.2.1 nameserver 4.2.2.2

  • Corre dnsmasq con sudo dnsmasq --no-daemon --log-queries -C dnsmasq.conf . La salida debería ser algo parecido:

    ... dnsmasq: reading resolv.conf dnsmasq: using nameserver 4.2.2.1#53 dnsmasq: using nameserver 4.2.2.2#53 dnsmasq: using nameserver 8.8.8.8#53 dnsmasq: read /etc/hosts - 6 addresses

  • Abra las Preferencias de la Red y asegúrese de que 127.0.0.1 es el único servidor DNS (preferencias de red -> avanzado -> DNS -> añadir 127.0.0.1)

Las cosas deberían empezar a funcionar bien de nuevo.

Una vez que las cosas funcionen, puedes correr dnsmasq sin el --no-daemon y --log-queries opciones, por lo que se iniciará en segundo plano y no es necesario mantener abierta la ventana de la Terminal.

1voto

Ken Puntos 23619

Me di cuenta de que tenía 10.94.62.3 en la lista de servidores DNS (panel de preferencias de red) seguido de 2 de mi ISP. Eliminé los otros 2, forzando todas las búsquedas de nombres a través de 10.94.62.3 para esta ubicación y ahora puedo resolver los nombres en mi red así como fuera.

No tengo idea de por qué esto funcionó.

1voto

tholu Puntos 111

Supongo que tenemos un problema similar, como lo describí aquí: http://apple.stackexchange.com/questions/50457/nslookup-works-ping-and-ssh-dont-os-x-lion-10-7-3

Creo que el problema está en la configuración de los dominios de búsqueda: ping/ssh tratando de usar gethostbyname2() que falla porque named ya no está corriendo (en Lion al menos) y /etc/resolv.conf con los dominios de búsqueda configurados es por lo tanto ignorado. /etc/hosts es el último recurso para gethostbyname2() y por lo tanto ssh trabaja de nuevo con las entradas adecuadas en /etc/hosts . Debería ser arreglado por el imho de Apple.

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: