web-dev-qa-db-fra.com

Pourquoi "ping" est-il incapable de résoudre un nom lorsque "nslookup" fonctionne correctement?

Sur mon poste de travail Windows XP, je peux trouver la machine à laquelle je veux me connecter dans le DNS avec nslookup:

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

Name: wolfman.company.com
Address: 192.168.1.178

Mais lorsque j'essaie de me connecter à cette machine, un message d'erreur me dit que la machine est introuvable (c'est-à-dire qu'elle ne peut pas être recherchée dans le DNS):

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

Je peux me connecter si j'utilise l'adresse IP directement:

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

Je pourrais contourner ce problème en ajoutant une entrée à mon fichier hosts, mais je préférerais savoir pourquoi cela se produit. Le problème est passager, je peux très bien me connecter à la machine la majeure partie de la journée.

Comment est-ce possible?

ETA: J'ai laissé ceci de côté pour des raisons de brièveté, mais cela a été demandé:

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

ETA: D'autres applications obtiennent les mêmes résultats. J'ai seulement essayé de ping pour simplifier. telnet ne peut pas se connecter, les applications Cygwin affichent un message "Host inconnu wolfman".

Mise à jour: à l'aide de Wireshark, j'ai constaté que mon poste de travail n'essayait pas une recherche DNS. Il s'agit simplement de signaler le message d'erreur "impossible de trouver l'hôte".

131
skiphoppy

Je crois que nslookup ouvre une connexion winsock sur le port DNS et lance une requête, alors que ping utilise le service client DNS. Vous pouvez essayer d'arrêter ce service et voir si cela fait une différence.

Certaines commandes qui réinitialiseront divers états du réseau:

Réinitialiser les entrées WINSOCK aux valeurs d'installation par défaut: netsh winsock reset catalog
Réinitialiser la pile TCP/IP sur les valeurs d'installation par défaut: netsh int ip reset reset.log
Vider le cache du résolveur DNS: ipconfig /flushdns
Renouveler l'enregistrement du client DNS et actualiser les baux DHCP: ipconfig /registerdns
Vider la table de routage: route /f (redémarrage requis)

98
harrymc

Essayez de faire un ping avec nom d’hôte suivi d’un point. Donc, au lieu de ping wolfman, utilisez ping wolfman.

Cela devrait vous permettre de résoudre le problème sans avoir à contourner le problème avec le fichier hosts, etc.

28
Senthil

Essayez ipconfig /displaydns et cherchez Wolfman. S'il est mis en cache en tant que "nom n'existe pas" (probablement en raison d'une recherche ayant échoué par le passé), vous pouvez vider le cache avec ipconfig /flushdns.

nslookup n'utilise pas le cache, mais interroge directement le serveur DNS.

16
craig65535

Essayez d’ajouter . aux suffixes DNS pour cette connexion. I.e, allez à:

  1. Statut Ethernet
  2. Cliquez sur Propriétés
  3. Protocole Internet version 4
  4. Cliquez sur Propriétés
  5. Cliquez sur Avancé
  6. Ajouter ces suffixes DNS (dans l'ordre)
  7. Ajoutez . en suffixe.

Les mêmes étapes sont illustrées dans la capture d'écran suivante:

 

Cela devrait faire fonctionner ping wolfman.

Explication

nslookup wolfman (recherche du serveur de noms: wolfman) envoie le nom d'hôte (wolfman) au DNS (système de noms de domaine) pour obtenir l'adresse IP correspondante. C'est l'unique but de la commande nslookup. Cela fonctionne déjà, donc nous avons vérifié que le DNS fonctionne et que wolfman correspond bien à une adresse IP.

En revanche, ping wolfman doit faire deux choses:

  1. Obtenez l'adresse IP à laquelle correspond le nom d'hôte (wolfman).
  2. Envoyer des paquets à l'IP et écouter la réponse

Sous Windows (même les versions récentes telles que Windows 10), la première étape peut facilement échouer. Par souci de compatibilité ascendante, Windows prend en charge diverses méthodes de résolution du nom d’hôte (fichier hosts, DNS, NetBIOS/WINS, fichier LMHOST).

Malheureusement, il semble que la commande ping de Windows ne tente pas toujours une recherche DNS. Je ne connais pas les conditions spécifiques qui déclenchent ce comportement.

Heureusement, nous pouvons forcer Windows à effectuer une recherche DNS en utilisant un FQDN (nom de domaine complet). En pratique, nous le faisons en ajoutant le suffixe . au nom d’hôte: wolfman.. Essayez ping wolfman. et vérifiez que cela fonctionne.

La dernière étape consiste à forcer Windows à ajouter ce point lui-même. J'ai déjà montré comment faire cela au début de cette réponse.

12
Frederik Aalund

nslookup fonctionne différemment des autres commandes lors de la résolution de noms/adresses IP sous Windows.

La méthode de résolution normale sous Windows est la suivante:

  1. Le client vérifie si le nom demandé est le sien.
  2. Le client recherche ensuite un fichier Hosts local, une liste d'adresses IP et des noms stockés sur l'ordinateur local.
  3. Les serveurs DNS (Domain Name System) sont interrogés.
  4. Si le nom n'est toujours pas résolu, la séquence de résolution de noms NetBIOS est utilisée comme sauvegarde. Cet ordre peut être modifié en configurant le type de nœud NetBIOS du client.

nslookup quant à lui est utilisé pour tester les serveurs de noms de domaine.

10
Bryan

J'ai eu du mal avec un problème similaire et j'ai essayé la solution proposée par @harrymc. J'ai trouvé ce qui semble finalement (au moins un peu) fonctionner sur le forum Microsoft Technet ( nslookup fonctionne, mais rien d'autre ne dispose de DNS sur un ordinateur autonome Win7 )

Voici la citation:

... essayez d'utiliser la commande ci-dessous pour vider et réinitialiser un cache de résolution client pour le test.

ipconfig/flushdns

ipconfig/registerdns

Veuillez vous référer au lien ci-dessous pour plus de détails. http://jefferyland.wordpress.com/2011/07/28/quick-review-of-flushdns-registerdns-and-dns-queries/

Donc, fondamentalement, ce qui manquait pour moi était ipconfig /registerdns

8
Mick Halsband

Juste aujourd'hui, nous avions le même problème, mais le la solution était différente. Alors je me suis dit que je l’ajouterais pour référence car c’était le premier résultat de recherche.

  • Problème : ping ne résoudra pas un nom d'hôte, mais nslookup peut. (Observé sur 2 hôtes Windows Server 2012 R2 différents.)
  • Cause : (pour chaque hôte) L'hôte a plus d'une NIC connectée et il y a plusieurs passerelles par défaut configurés.
  • Solution : (Pour chaque hôte) Supprimez la passerelle par défaut de la configuration de toutes les cartes réseau, sauf une, afin qu'il ne reste plus qu'une seule passerelle par défaut .
6
djlauk

J'ai eu le même problème sur un système Windows 2012R2 (= 8.1) et j'ai essayé toutes les suggestions ci-dessus, mais aucune d'elles ne l'a résolu:
- Envoyer une requête ping au nom qualifié complet.
- Le nom non qualifié n'a pas été envoyé.
- Les deux systèmes fonctionnaient sur plusieurs autres systèmes, dotés du même système d’exploitation et apparemment de la même configuration.
- Toutes les chaînes de recherche de suffixe nécessaires étaient présentes.
(Notez que certaines des solutions proposées, telles que la solution de contournement pour les requêtes multi-libellées, sont évidemment non pertinentes, car le nom non qualifié ne comporte qu'une partie.)

Ensuite, j'ai remarqué que le système cible sur lequel je tentais de faire un ping n'avait PAS d'adresse IPv6. Alors j'ai essayé "ping -4 nom_unqualifié"et bingo! cela a fonctionné.
Donc, pour une raison quelconque, sur ce système uniquement, ping a uniquement tenté de résoudre un nom non qualifié-> adresse IPv6, et non un nom non qualifié-> IPv4.
Pour moi, le correctif consistait à désactiver IPv6 complètement car je n'en ai pas du tout besoin. Mais je serais vraiment intéressé de trouver un moyen plus doux de dire à ping (ou probablement au service client DNS) d'essayer de résoudre les adresses IPv4 et IPv6.

Peut-être que wolfman.company.com est listé dans C:\Windows\system32\drivers\etc\hosts?

nslookup contourne ce fichier et demande toujours à DNS, tandis que ping et d'autres outils recherchent tout d'abord dans le fichier "hôtes", puis dans le DNS.

5
Mikhail Kupchik

Ajouter une entrée dans le fichier c:/windows/system32/drivers/etc/hosts pourrait le réparer.

2
Manoj Agarwal

Je suis tombé sur ce problème aussi. Le moyen le plus "facile" de résoudre ce problème pour moi consistait simplement à ajouter un . à la fin du nom d'hôte. Cependant, c'est plutôt agaçant. La plupart des réseaux n'en ont pas besoin. Je préférerais ne pas avoir à dire à tous les autres membres du réseau de le faire lorsqu'ils ont besoin d'accéder à la même ressource.

J'examinais la suggestion de Frederik Aalund en tant que solution possible et remarquai qu'ils suggéraient de passer de l'option par défaut "Ajouter les suffixes DNS principaux et spécifiques à la connexion". Cela m'a fait penser que mon réseau était peut-être un peu mal configuré.

En regardant mes paramètres DD-WRT, le "domaine LAN" n'a pas été défini. Définir ce paramètre sur une chaîne arbitraire semble avoir résolu ce problème pour tous les clients de mon réseau sans configuration particulière sur chaque ordinateur, solution que je recherchais! :)

2
Cameron Tacklind

J'essayais de comprendre pourquoi, sur un ordinateur gagnant 7, je peux utiliser ping server qui fonctionne et l'autre ne peut pas résoudre server. Cependant, les deux pouvaient envoyer un ping server.lan que je n'avais pas bien compris.

Il s'est avéré que j'avais modifié certains paramètres (suffixes DNS) pour ne pas avoir à utiliser les noms de domaine complets lors de l'utilisation du réseau privé professionnel. Je devais ajouter mon .lan local à ces suffixes pour que les deux ordinateurs fonctionnent de la même manière.

Allez au Panneau de configuration> Réseau et Internet> Connexions réseau, cliquez avec le bouton droit de la souris sur votre connexion réseau et cliquez sur Propriétés. Cliquez sur Internet Protocol Version 4 et cliquez sur le bouton Propriétés. Puis le bouton Avancé ... dans cette nouvelle fenêtre. Allez sur l'onglet DNS, c'est là que j'avais ajouté un suffixe DNS pour mon travail mais j'avais également besoin d'un suffixe pour mes connexions domestiques normales.

Advanced TCP/IP Settings

2
eresonance

Je me trompe peut-être parce que c'est basé sur mes jours de kit de ressources NT4 oubliés depuis longtemps.

En tant que tarif, je peux me rappeler que PING utilise Netbios/WINS et DNS (dans cet ordre, du moins si vous ne spécifiez pas de nom de domaine complet).

WINS a disparu il y a plusieurs années, mais Netbios est peut-être toujours activé sur votre interface. PING peut donc utiliser des netbios qui risquent de ne générer aucun résultat. Surtout si le trafic passe par un routeur quelque part.

Il suffit de désactiver Netbios pour que Ping utilise DNS en priorité et ajoute le nom DNS Surffic enregistré sur l'interface à votre nom d'hôte.

1
MrCalvin

Je soulève cette question parce que cela m'a dérangé l'année dernière et j'ai peut-être trouvé une solution de contournement.

Pour moi, il semblerait que certains systèmes DNS-caching du client Windows soient défectueux. Windows 7 et 8.1 sont concernés par cela ... je ne peux plus en dire plus sur Windows XP. ping ne résout pas le nom. ce n'est pas la partie icmp qui est importante mais la partie résolvant le nom). nslookup est conçu pour interroger le serveur de noms et le fait exactement, sans aucune résolution de noms-hiérarchies Windows.

Le redémarrage du service dnscache a été utile à chaque fois. Mais depuis que j'ai désactivé IPv6 sur toutes interfaces-client, le problème ne s'est plus posé.

À votre santé!

1
grim

j'ai rencontré ce problème lorsque nous avons migré de Windows XP vers Windows 7, le problème était lié à un problème de requête DNS multi-étiquettes de Windows 7.

Autoriser l'ajout de suffixe DNS à des requêtes de noms multi-étiquettes non qualifiées - voir:

http://computerstepbystep.com/allow_dns_suffix_appending_to_unqualified_multi_label_name_queries.html

J'espère que cela t'aides

1
Sony NS

Si sur mac os x, cela pourrait être un problème de cache DNS:

Vider le cache

Sudo killall -HUP mDNSResponder
Sudo dscacheutil -flushcache
1
Christian

Je viens d'avoir ce problème, et j'ai trouvé quelque chose d'assez étrange, et j'ai réussi à le résoudre Lol

En gros, si votre fichier hosts contient des entrées identiques à l’IP que votre ping tente de résoudre, il échouera.

Par exemple, si dans votre DNS, vous avez un enregistrement pour www.example.com - 10.0.0.20, mais que vous avez une entrée dans le fichier hosts de votre client, 10.0.0.20 quelque chose de différent, vous ne pourrez pas faire un ping sur le site www. .exemple.com

Étrange hein

0
Just Lucky Really

J'ai eu le même problème et il s'avère qu'une autre machine avait la même adresse IP, et c'était la cause.

A changé d'adresse IP en DHCP et tout fonctionnait bien.

0
Klaus

Dans mon cas, ce problème a été résolu en ajoutant le domaine de l'hôte que j'essayais d'envoyer à une option de stratégie de groupe nommée "Liste de recherche de suffixe DNS" .

La procédure en bref est la suivante: Ouvrez gpedit.msc et accédez à Computer Configuration -> Administrative Templates -> Network -> DNS Client > DNS Suffix Search List, définissez-le sur "Activé" et ajoutez le nom de domaine à la liste (la liste est vide par défaut).

Vous trouverez une description plus détaillée de ces étapes ici

0
ndemou