Question 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 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, je reçois une erreur me disant que la machine ne peut pas être trouvée (c.-à-d. 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 cela en ajoutant une entrée à mon hosts fichier, mais je préfère savoir pourquoi cela se produit. Le problème est passager, la plupart du temps je peux me connecter à la machine très bien.

Comment est-ce possible?

ETA: Je l'ai laissé par souci de concision, mais il 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: les 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 impriment un message "wolfman hôte inconnu".

Mise à jour: à l'aide de wireshark, j'ai constaté que mon poste de travail ne tentait pas une recherche DNS. Il ne fait que signaler le message d'erreur "Impossible de trouver l'hôte".


121
2017-10-29 19:11


origine


Qu'est-ce qui se passe si vous ping wolfman.company.com? - SLaks
Avez-vous wirehark installé? Vous pouvez voir si ping utilise autre chose en essayant de résoudre l'hôte. Avez-vous essayé telnet et ftp aussi? - ott--
Vous pourriez ajouter un suffixe DNS par défaut pour .company.com. - billc.cn
@ billc.cn J'ai déjà ce suffixe DNS. - skiphoppy
Duplicata possible de: superuser.com/questions/220471/... - Der Hochstapler


Réponses:


Je crois que nslookup ouvre une connexion winsock sur le port DNS et émet 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 différents états du réseau:

Réinitialiser les entrées WINSOCK aux paramètres d'installation par défaut: netsh winsock reset catalog
Réinitialiser la pile TCP / IP aux paramètres d'installation par défaut: netsh int ip reset reset.log
Vider le cache de la résolution DNS: ipconfig /flushdns
Renouvelez l'enregistrement du client DNS et actualisez les baux DHCP: ipconfig /registerdns
Flush table de routage: route /f  (redémarrage nécessaire)


94
2017-11-20 08:40



Je parierais qu'Active Directory est probablement actif, mais je ne sais pas comment tester. - skiphoppy
J'ai désactivé le service Client DNS et le problème semblait disparaître! Pas encore sûr si c'était un coup de chance. Le problème n'est pas revenu lorsque j'ai redémarré le service. - skiphoppy
Parfois, il suffit d'arrêter et de redémarrer le service pour résoudre les problèmes de DNS (ne me demandez pas pourquoi). La question est combien de temps cela va durer. Certaines personnes malchanceuses doivent le répéter encore et encore. - harrymc
sfc / scannow au cas où les fichiers du système de service client DNS seraient corrompus subtilement? J'ai également vu des personnes ayant des problèmes similaires causés par un virus. - Jon Kloske
Ce qui me manquait dans cette réponse était ipconfig /registerdns (J'ai développé dans ma réponse ci-dessous) - Mick Halsband


Essayez ping avec hostname suivi d'un point. Donc au lieu de ping wolfman utilisation ping wolfman.

Cela devrait vous permettre de résoudre sans avoir à contourner le fichier hôte, etc.


25
2018-05-05 01:08



C'était la solution pour moi. - IAmTheSquidward
wow, cela a fonctionné pour moi aussi. Je suppose que quelque chose attend un nom de domaine qui n'est pas configuré - user1190
OK, ça marche ... pourquoi? - Daniel B.
des suggestions pour lesquelles cela fonctionne et comment utiliser plutôt les noms locaux sans les points suivants? - Ruberoid
@Ruberoid S'il vous plaît voir ma réponse pour savoir comment faire cela automatiquement. - Frederik Aalund


Essayer ipconfig /displaydns et chercher wolfman. S'il est mis en cache comme "nom n'existe pas" (peut-être à cause d'une précédente recherche échouant par intermittence), vous pouvez vider le cache avec ipconfig /flushdns.

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


16
2017-11-19 21:57



J'ai essayé: ce n'est pas mis en cache. Et effacer le cache ne résout pas le problème non plus. - skiphoppy
Pouvez-vous poster la sortie de nslookup -all? Est novc répertorié? - craig65535


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

le méthode de résolution normale sous Windows est comme suit:

  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 noeud NetBIOS du client.

nslookup d'autre part est utilisé pour tester les serveurs de noms de domaine.


10
2017-11-19 21:29



Existe-t-il des paramètres permettant de déplacer la requête NetBIOS plus haut dans cette liste? J'ai l'impression que la recherche NetBIOS est impliquée d'une manière ou d'une autre, mais comme la requête DNS fonctionne vraiment, je ne vois pas comment elle parviendrait à cette étape si la séquence ci-dessus est immuable. - skiphoppy


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

  1. État 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 DNS suffit (dans l'ordre)
  7. Ajouter . comme suffixe.

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

Cela devrait faire ping wolfmantravail.

Explication

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

En revanche, ping wolfman doit faire deux choses:

  1. Obtenez l'IP que le nom d'hôte (wolfman) Correspond à.
  2. Envoyer des paquets à l'adresse 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 de nom d'hôte (fichier hosts, DNS, NetBIOS / WINS, fichier LMHOST).

Malheureusement, il semble que Windows ' ping La commande 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 à faire une recherche DNS en utilisant un FQDN (nom de domaine complet). En pratique, nous le faisons en ajoutant un suffixe . point au nom d'hôte: wolfman.. Essayer ping wolfman. et vérifiez que cela fonctionne.

L'étape finale consiste à forcer Windows à ajouter ce point lui-même. J'ai déjà montré comment le faire au début de cette réponse.


9
2017-10-09 11:51



Cela m'a bouleversé! - djsmiley2k
Je veux juste dire que cela s'est avéré être le facteur qui a réussi sur une machine sur laquelle je travaillais. Stupide si cela semble. Et pas seulement pour le ping, mais aussi pour d'autres applications. Je ne suis pas sûr que votre explication de ce qui a été essayé est tout à fait juste (mais vous reconnaissez que vous êtes incertain à ce sujet). Mais un gros avantage de mentionner que cet échec peut être facilement diagnostiqué en essayant de faire un ping avec le nom de domaine avec un suffixe ajouté manuellement. - gwideman


J'ai rencontré un problème similaire et j'ai essayé la solution proposée par @harrymc. J'ai trouvé ce qui semble finalement (du moins un peu) fonctionner sur le forum de microsoft technet (nslookup fonctionne, mais rien d'autre n'a DNS sur le PC 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

S'il vous plaît se 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
2017-09-22 08:32



réponse originale par @harrymc reflète maintenant le manque /registerdns commander - Mick Halsband
Je joue au whack-a-mole avec Win10 depuis environ un an. Lorsque mon ordinateur portable se réveille, il ne peut trouver aucun serveur corp, mais des sites externes tels que microsoft.com fonctionnent. Cela semble se produire lorsque vous changez de réseau WiFi (home / VPN vs office). flushdns résout parfois le problème mais pas toujours. Aujourd'hui, j'ai essayé les registres et cela a immédiatement corrigé le problème. Demain j'essaierai d'ajouter. à la fin d'un nom (mais ping échoue déjà avec FQDN pour les serveurs internes). C'est très frustrant. Et pour couronner le tout - si j'attends un moment, le problème se résoudra. - ripvlan


Juste aujourd'hui, nous avons eu la même problème, mais le la solution était différente. Je pensais donc que je l’ajouterais à titre de référence car c’était le résultat de recherche le plus élevé.

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

6
2018-04-28 08:41



ah ça l'a fait pour moi Parfait. - IAmTheSquidward
Court et simple - Frank Fu