¿Por qué 'ping' no puede resolver un nombre cuando 'nslookup' funciona bien?

139

En mi estación de trabajo con Windows XP, puedo encontrar la máquina a la que quiero conectarme en DNS con nslookup:

nslookup wolfman
Server: dns.company.com
Address: 192.168.1.38

Name: wolfman.company.com
Address: 192.168.1.178

Pero, cuando intento conectarme a esa máquina, aparece un error que me dice que no se puede encontrar la máquina (es decir, no se puede buscar en DNS):

C:\> ping wolfman
Ping request could not find host wolfman. Please check the name and try again.

Puedo conectarme si uso la dirección IP directamente:

C:\> ping 192.168.1.178

Pinging 192.168.1.178 with 32 bytes of data:

Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=41ms TTL=126
Reply from 192.168.1.178: bytes=32 time=44ms TTL=126
Reply from 192.168.1.178: bytes=32 time=38ms TTL=126

Podría solucionar esto agregando una entrada a mi hostsarchivo, pero prefiero averiguar por qué sucede esto. El problema es transitorio, la mayor parte del día me puedo conectar a la máquina muy bien.

¿Cómo es esto posible?

ETA: Dejé esto por brevedad, pero me lo pidieron:

C:\> ping wolfman.company.com
Ping request could not find host wolfman.company.com. Please check the name and try again.

ETA: otras aplicaciones obtienen los mismos resultados. Solo intenté hacer ping para simplificar. telnet no se puede conectar, las aplicaciones de Cygwin imprimen un mensaje de "hostman desconocido".

Actualización: Utilizando wireshark, descubrí que mi estación de trabajo no está intentando una búsqueda de DNS. Solo informa el mensaje de error "no se pudo encontrar el host".

skiphoppy
fuente
Puede agregar un sufijo DNS predeterminado para .company.com.
billc.cn
@ billc.cn Ya tengo ese sufijo DNS.
skiphoppy
Lo que creo que está sucediendo es que el ping no busca el FQDN del host, a diferencia de lo nslookupque usa el search domainparámetro de una oferta de DHCP (o lo que especifique para una configuración de IP estática). Confirme esto haciendo lo que @SLaks ha dicho y haciendo ping al FQDN del host :)
jackweirdy
1
Posible duplicado de: superuser.com/questions/220471/…
Der Hochstapler
¿Qué pasa cuando corres ping -4 wolfman?
Der Hochstapler el

Respuestas:

101

Creo que nslookup abre una conexión winsock en el puerto DNS y emite una consulta, mientras que ping usa el servicio de cliente DNS. Puede intentar detener este servicio y ver si esto hace la diferencia.

Algunos comandos que reinicializarán varios estados de red:

Restablezca las entradas de WINSOCK a los valores predeterminados de instalación: netsh winsock reset catalog
Restablezca la pila TCP / IP a los valores predeterminados de instalación: netsh int ip reset reset.log
Limpie el caché de resolución de DNS: ipconfig /flushdns
Renueve el registro del cliente DNS y actualice los arrendamientos DHCP: ipconfig /registerdns
Tabla de enrutamiento de lavado: route /f (reinicio requerido)

harrymc
fuente
1
Apuesto a que Active Directory probablemente esté activo, pero no sé cómo probarlo.
skiphoppy
11
¡Inhabilité el servicio del Cliente DNS, y el problema pareció desaparecer! Aún no estoy seguro si fue una casualidad. El problema no volvió cuando reinicié el servicio.
skiphoppy
66
A veces, solo detener y reiniciar el servicio soluciona los problemas de DNS (no me pregunte por qué). La pregunta es cuánto durará esto. Algunas personas desafortunadas necesitan repetirlo una y otra vez.
harrymc
1
sfc / scannow en caso de que los archivos del sistema de servicio al cliente dns estén corruptos sutilmente? También he visto algunas personas con problemas similares causados ​​por un virus.
Jon Kloske
1
Lo que me faltaba en esta respuesta era ipconfig /registerdns(lo he explicado a continuación)
Mick Halsband
31

Intente hacer ping con el nombre de host seguido de un punto. Entonces, en lugar de ping wolfmanusarping wolfman.

Eso debería ayudarlo a resolver sin tener que hacer soluciones con el archivo de hosts, etc.

Senthil
fuente
wow, esto funcionó para mí también. Supongo que algo espera un nombre de dominio que no está configurado
usuario1190
OK, esto funciona ... ¿por qué?
Daniel B.
3
¿Alguna sugerencia de por qué esto funciona y cómo usar nombres locales sin puntos finales?
Ruberoid
Gracias, esto funcionó para mí, pero también sabría por qué esto funcionaría
Frank Fu
2
@ Ruberoid Consulte mi respuesta sobre cómo hacer esto automáticamente.
Frederik Aalund
17

Intenta ipconfig /displaydnsbuscar al hombre lobo. Si se almacena en caché como "el nombre no existe" (posiblemente debido a una búsqueda fallida intermitente previa), puede vaciar el caché con ipconfig /flushdns.

nslookup no usa el caché, sino que consulta directamente al servidor DNS.

craig65535
fuente
Lo intenté: no está en caché. Y limpiar el caché tampoco soluciona el problema.
skiphoppy
¿Puedes publicar la salida de nslookup -all? Está en la novclista?
craig65535
13

Intente agregar .a los sufijos DNS para esa conexión. Es decir, ve a:

  1. Estado de Ethernet
  2. Haga clic en Propiedades
  3. Protocolo de Internet versión 4
  4. Haga clic en Propiedades
  5. Haga clic en avanzado
  6. Agregue estos suficientes DNS (en orden)
  7. Agregar .como sufijo.

Los mismos pasos se ilustran en la siguiente captura de pantalla:

Esto debería hacer el ping wolfmantrabajo.

Explicación

nslookup wolfman(búsqueda del servidor de nombres: wolfman) envía el nombre de host ( wolfman) al DNS (sistema de nombres de dominio) para obtener la dirección IP correspondiente. Este es el único propósito del nslookupcomando. Esto ya funciona, por lo que hemos verificado que el DNS funciona y que de wolfmanhecho corresponde a una dirección IP.

Por el contrario, ping wolfmannecesita hacer dos cosas:

  1. Obtenga la IP a la que corresponde el nombre de host ( wolfman).
  2. Envíe paquetes a la IP y escuche la respuesta

En Windows (incluso versiones recientes como Windows 10), el primer paso puede fallar fácilmente. En aras de la compatibilidad con versiones anteriores, Windows admite varios métodos de resolución de nombres de host (archivo de hosts, DNS, NetBIOS / WINS, archivo LMHOST).

Desafortunadamente, parece que el pingcomando de Windows no siempre intenta una búsqueda de DNS. No sé las condiciones específicas que desencadenan este comportamiento.

Afortunadamente, podemos obligar a Windows a realizar una búsqueda de DNS utilizando un FQDN (nombre de dominio completo). En la práctica, hacemos esto sufijando un .punto al nombre de host: wolfman.. Intenta ping wolfman.y verifica que funcione.

El último paso es obligar a Windows a agregar este punto. Ya he mostrado cómo hacer esto al comienzo de esta respuesta.

Frederik Aalund
fuente
Solo quiero decir que este resultó ser el factor que tuvo éxito en una máquina en la que estaba trabajando. Aunque parezca estúpido. Y no solo para ping, sino también para otras aplicaciones. No estoy seguro de que su explicación de lo que se intentó cuando sea correcta (pero reconoce que no está seguro de eso). Pero una gran ventaja por mencionar que esta falla se puede diagnosticar fácilmente al intentar hacer ping con el nombre de dominio con un sufijo de punto agregado manualmente.
gwideman
Esto no tiene sentido. ¿Está postulando que "el comando ping de Windows no siempre intenta una búsqueda de DNS", pero luego recomienda cambiar la forma en que se realizan las búsquedas de DNS para resolver eso? Parece más probable que ping esté realizando una búsqueda de DNS pero las esté haciendo incorrectamente, y es por eso que esta solución funciona.
Twisty Impersonator
@TwistyImpersonator Entiendo tu confusión. El punto es que Windows intentará varios métodos de resolución de nombre de host si se proporciona wolfmany una búsqueda de DNS (aparentemente) no es una prioridad entre dichos métodos. Ahora, si lo usa wolfman., Windows priorizará una búsqueda de DNS sobre los otros métodos porque wolfman.es un FQDN que (obviamente) requiere una búsqueda de DNS.
Frederik Aalund
Entonces, creo que está diciendo que si ping llegara al punto de hacer una búsqueda de DNS en el curso de su flujo de trabajo de búsqueda normal, funcionaría. Sin embargo, el ping debería terminar probando DNS si los otros métodos de búsqueda no devuelven una respuesta, lo que implica que la razón por la cual el ping falla por sí solo es porque otro método lo está intentando antes de que el DNS devuelva una respuesta. Sin embargo, esa explicación no se ajusta al hecho de que ping no puede encontrar el host.
Personificador Twisty
@TwistyImpersonator "Así que creo que estás diciendo que si ping llegara al punto de hacer una búsqueda de DNS en el curso de su flujo de trabajo de búsqueda normal, funcionaría": Sí. "Sin embargo, el ping debería terminar probando DNS si los otros métodos de búsqueda no devuelven una respuesta, lo que implica que la razón por la cual el ping falla por sí solo es porque otro método lo está intentando antes de que el DNS devuelva una respuesta": Aparentemente no. Tal vez el ping simplemente se rinde después de probar un par de métodos. Tal vez el ping se rinde después de un tiempo de espera. Quizás ping nunca intente una búsqueda de DNS porque cree que el nombre de host no es similar a DNS.
Frederik Aalund
11

nslookup funciona diferente a otros comandos al resolver nombres / direcciones IP en Windows.

El método de resolución normal en Windows es el siguiente:

  1. El cliente verifica si el nombre consultado es el suyo.
  2. Luego, el cliente busca un archivo de Hosts local, una lista de direcciones IP y nombres almacenados en la computadora local.
  3. Se consultan los servidores del Sistema de nombres de dominio (DNS).
  4. Si el nombre aún no se resuelve, la secuencia de resolución de nombres NetBIOS se usa como respaldo. Este orden se puede cambiar configurando el tipo de nodo NetBIOS del cliente.

nslookuppor otro lado se usa para probar Servidores de Nombres de Dominio.

Bryan
fuente
3
¿Hay alguna configuración que pueda mover la consulta NetBIOS más arriba en esa lista? Tengo el presentimiento de que la búsqueda de NetBIOS está involucrada de alguna manera, pero dado que la consulta DNS definitivamente funciona, no puedo ver cómo llegaría a ese paso, si la secuencia anterior es inmutable.
skiphoppy
8

He tenido problemas con un problema similar y he probado la solución sugerida por @harrymc. Encontré lo que finalmente parece funcionar (al menos un poco) en el foro de Microsoft Technet ( nslookup funciona pero nada más tiene DNS en una PC Win7 independiente )

Aquí está la cita:

... intente utilizar el siguiente comando para vaciar y restablecer un caché de resolución del cliente para la prueba.

ipconfig / flushdns

ipconfig / registerdns

Por favor, consulte el siguiente enlace para más detalles. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

Básicamente, lo que me faltaba era ipconfig /registerdns

Mick Halsband
fuente
1
la respuesta original de @harrymc ahora refleja el /registerdnscomando que falta
Mick Halsband
He estado jugando whack-a-mole con este problema en Win10 durante aproximadamente un año. Cuando mi computadora portátil se despierta, no puede encontrar servidores corporativos, pero los sitios externos como microsoft.com funcionan. Parece suceder cuando se cambian las redes WiFi (hogar / VPN vs oficina). flushdns resuelve el problema a veces pero no siempre. Hoy probé el registerdns y eso inmediatamente corrigió el problema. Mañana intentaré agregar. al final de un nombre (pero el ping ya falla con FQDN para servidores internos). Es muy frustrante. Y para colmo, si espero un momento, el problema se resolverá por sí solo.
ripvlan
6

Justo hoy tuvimos el mismo problema , pero la solución fue diferente . Así que pensé, lo agregaría como referencia, ya que este era el mejor resultado de búsqueda.

  • Problema : pingno resolverá un nombre de host, pero nslookuppuede. (Observado en 2 hosts diferentes de Windows Server 2012 R2).
  • Causa : (para cada host) El host tiene más de una NIC conectada y hay varias puertas de enlace predeterminadas configuradas.
  • Solución : (para cada host) Elimine la puerta de enlace predeterminada de la configuración de todas las NIC excepto una, de modo que solo quede una puerta de enlace predeterminada .
djlauk
fuente
Ah, esto lo hizo por mí. Perfecto.
IAmTheSquidward
Corto y simple
Frank Fu
5

¿Quizás wolfman.company.com aparece en C: \ Windows \ system32 \ drivers \ etc \ hosts?

nslookup omite ese archivo y siempre solicita DNS, mientras que el ping y otras herramientas primero buscan en el archivo "hosts", luego en DNS.

Mikhail Kupchik
fuente
¡Buen pensamiento! Pero lo comprobé, y ninguna de las máquinas con las que he visto este problema se enumeran en los hosts.
skiphoppy
5

Tuve el mismo problema en un sistema Windows 2012R2 (= 8.1), e intenté todas las sugerencias anteriores, pero ninguna de ellas lo solucionó:
- Hacer ping al nombre completamente calificado funcionó.
- Hacer ping al nombre no calificado no lo hizo.
- Ambos trabajaron en varios otros sistemas, que tenían el mismo sistema operativo y aparentemente la misma configuración.
- Todas las cadenas de búsqueda de sufijo necesarias estaban allí.
(Tenga en cuenta que algunas de las soluciones propuestas, como la solución alternativa para las consultas de etiquetas múltiples, son obviamente irrelevantes, ya que el nombre no calificado solo tiene una parte).

Luego me di cuenta de que el sistema de destino al que intentaba hacer ping NO tenía una dirección IPv6. ¡Así que probé "ping -4 unqualified_name " y bingo! Esto funcionó.
Entonces, por alguna razón, solo en este sistema, ping solo intentó resolver el nombre no calificado-> dirección IPv6, y no el nombre no calificado-> IPv4.
Para mí, la solución fue desactivar IPv6 por completo, ya que no lo necesito en absoluto. Pero estaría realmente interesado en encontrar una forma más suave de decirle a ping (o presumiblemente el servicio del cliente DNS) que intente resolver las direcciones IPv4 e IPv6.

Jean-François Larvoire
fuente
2

Agregar una entrada en el archivo c:/windows/system32/drivers/etc/hostspodría solucionarlo.

Manoj Agarwal
fuente
Eso lo solucionará, pero no resolverá su problema en esa máquina, pero no lo ayudará en otras máquinas. Recuerde Hosts> DNS Resolver> Servidor DNS> Nombre de NetBIOS.
The Dude
2

Estaba tratando de averiguar por qué en una computadora win 7 puedo usar ping servercuál funciona, y la otra no puede resolver server. Sin embargo, ambos podían hacer ping, server.lanlo que no entendí bien.

Resulta que me metí con algunas configuraciones (sufijos DNS) para no tener que usar FQDN mientras usaba la VPN de trabajo. Tuve que agregar mi local .lana esos sufijos para que ambas computadoras funcionen de la misma manera.

Vaya a Panel de control> Red e Internet> Conexiones de red y haga clic derecho en su conexión de red y presione Propiedades. Haga clic en Protocolo de Internet versión 4 y presione el botón Propiedades. Luego, el botón Avanzado ... en esta nueva ventana. Vaya a la pestaña DNS, aquí es donde agregué un sufijo DNS para mi trabajo, pero también necesitaba uno para mis conexiones domésticas normales.

Configuración avanzada de TCP / IP

eresonance
fuente
Me encontré con una situación similar en un servidor con una dirección IP estática. La primera entrada en "Agregar estos sufijos DNS" estaba en blanco Y el "sufijo DNS para esta conexión" estaba en blanco. Otros servidores donde funcionaba tenían el mismo espacio en blanco "Anexar estos sufijos DNS" PERO el "Sufijo DNS para esta conexión" poblado.
Tim Lewis
2

Me encontré con este problema también. La forma "más fácil" de solucionarlo fue simplemente agregar un .al final del nombre de host. Sin embargo, esto es bastante molesto. La mayoría de las redes no requieren esto. Prefiero no tener que decirle a todos los demás en la red que hagan esto cuando necesiten acceder al mismo recurso.

Estaba mirando la sugerencia de Frederik Aalund como una posible solución y me di cuenta de que sugerían cambiar de la opción predeterminada "Anexar sufijos DNS primarios y específicos de conexión". Esto me hizo pensar que quizás mi red estaba simplemente mal configurada.

Mirando mi configuración DD-WRT, el "Dominio LAN" quedó sin configurar. Establecer eso en una cadena arbitraria parece haber solucionado este problema para todos los clientes en mi red sin tener una configuración especial en cada máquina, ¡la solución que quería! :)

Cameron Tacklind
fuente
1

Me encontré con esto cuando migramos a Windows 7 desde Windows XP, el problema estaba relacionado con un problema de consulta DNS de etiquetas múltiples de Windows 7.

Permitir la adición de sufijo DNS a consultas de nombre de etiqueta múltiple no calificadas: consulte:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

Espero que esto ayude

Sony NS
fuente
2
¡Bienvenido a Super User! Si bien esto puede responder teóricamente la pregunta, sería preferible incluir aquí las partes esenciales de la respuesta y proporcionar el enlace para referencia.
Canadiense Luke
1

Si en Mac OS X podría ser un problema de caché de DNS:

Volcar el caché

sudo killall -HUP mDNSResponder
sudo dscacheutil -flushcache
cristiano
fuente
OP pregunta sobre Windows XP y la pregunta está etiquetada como Windows.
PL
Quizás sea útil para otros. Lo dejaré, la respuesta estuvo aquí por más de 3 años. ¿Por qué borrar ahora?
Christian
1

Estoy recogiendo esto porque me molestó el año pasado y tal vez encontré una solución.

Para mí, parecía que algún sistema de almacenamiento en caché dns dentro del cliente de Windows estaba defectuoso. Windows 7 y 8.1 se ven afectados por esto ... ya no se puede decir mucho sobre Windows XP. ping no resuelve el nombre. lo importante no es la parte icmp, sino la parte que resuelve el nombre). nslookup está diseñado para consultar el servidor de nombres y hace exactamente eso y no resuelve la jerarquía de nombres de Windows.

Reiniciar el dnscache servicio ayudó cada vez. Pero como deshabilité IPv6 en todas las interfaces de cliente, el problema ya no se produjo.

¡Salud!

severo
fuente
Deshabilitar IPv6 puede no ser una solución viable para todos (y, de todos modos, suena anecdótico en el mejor de los casos). Todo lo que dices parece que ya se ha dicho en este hilo (por ejemplo, el comentario de harrymc "A veces solo detener y reiniciar el servicio soluciona problemas de DNS", hace dos años).
G-Man el
1

Podría estar equivocado en esto porque se basa en mis olvidados días del kit de recursos NT4.

Como tarifa, puedo recordar que PING usa Netbios / WINS y DNS (en ese orden, al menos si no especifica un FQDN).

WINS desapareció hace muchos años, pero es posible que todavía tenga Netbios habilitado en su interfaz y, por lo tanto, PING podría usar netbios que podrían no darle ningún resultado. Especialmente si el tráfico pasa por un enrutador en alguna parte.

Simplemente deshabilite Netbios y Ping usará DNS como primera prioridad y agregará el DNS Surffic registrado en la interfaz a su nombre de host.

Mr Calvin
fuente
0

Acabo de tener este problema, encontré algo bastante peculiar y pude solucionarlo Lol

Básicamente, si tiene alguna entrada en su archivo de hosts, que es la misma que la IP que su ping está tratando de resolver, fallará.

Por ejemplo, si en su DNS, tiene un registro para www.example.com - 10.0.0.20, pero luego tiene una entrada en el archivo de hosts de su cliente, 10.0.0.20 somethingelse.com, no podrá hacer ping a www .example.com

Extraño eh

Solo suerte realmente
fuente
0

En mi caso, lo que resolvió este problema fue agregar el dominio del host que intentaba hacer ping a una opción de política de grupo llamada "Lista de búsqueda de sufijo DNS" .

El procedimiento en resumen es el siguiente: abra gpedit.mscy navegue Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List, configúrelo como "Habilitado" y agregue el nombre de dominio a la lista (la lista está vacía por defecto).

Puede encontrar una descripción más detallada de estos pasos aquí.

ndemou
fuente
0

Tuve el mismo problema y resultó que otra máquina tenía la misma dirección IP, y eso lo estaba causando.

Cambié la dirección IP a DHCP y todo funcionaba bien.

Klaus
fuente
nslookup funcionó porque no necesita comunicarse con el otro host. ping necesita comunicarse y obviamente se rompe.
ndemou
@ndemou: Esa explicación no tiene ningún sentido. Sí, es trabajo de ping tratar de comunicarse con el otro host, pero el primer paso en ese proceso es obtener la dirección IP del otro host. Si  obtiene la dirección IP del otro host, se lo indica; si luego no puede comunicarse con el otro host, en última instancia informa "pérdida del 100%". Pero, en la pregunta, el ping falla incluso para obtener una dirección. (Pruebe  ping bbbbbbb.comy  ping bbbbbb.compara comparar.)
Scott
Tienes razón @Scott. Estaba editando la respuesta de Klaus y, mientras leía su descripción del problema, olvidé que este problema particular de ping es que no se resuelve. No puedo estar seguro, pero apostaría ahora que Klaus simplemente no estaba recibiendo respuestas.
ndemou
0

Ninguna de las soluciones aquí funcionó para mí. Lo que funcionó para mí fue volver a conectarme a la VPN de mi trabajo usando OpenVPN. Luego, después de desconectar, todo continuó funcionando.

Creo que el problema estaba relacionado con la falta de energía mientras mi computadora estaba conectada con openVPN. La única forma en que descubrí esto fue usando WireShark. Noté que las IP de destino para todas las consultas iban a las IP en la red interna de mi trabajo.

Bela
fuente
-1

ping utiliza el protocolo ICMP, específicamente la 'Solicitud de eco' y la 'Respuesta de eco'.

Muchas redes deshabilitan las utilidades ICMP para evitar ataques o escaneos básicos de la red. Descubrí que muchos enrutadores que compra incluyen una configuración para deshabilitar el ping y las utilidades similares habilitadas de forma predeterminada.

Puede encontrar más información sobre ICMP aquí:

http://en.wikipedia.org/wiki/Internet_Control_Message_Protocol

Johnnie
fuente
8
Sí, pero antes de usar ICMP, el dominio debe resolverse a una dirección IP como de costumbre. Entonces este no es el problema aquí.
Michael