Qu'est-ce qui peut amener une recherche DNS à ignorer une entrée de fichier d'hôtes?

13

J'ai un problème de résolution DNS qui affecte les performances de mon site Web hébergé localement lors de sa navigation sur ma machine locale. Si j'attache le suffixe DNS de mon réseau au nom de ma machine locale lorsque je vais à l'URL dans mon navigateur, le site a des temps de chargement terribles (100 fois plus lents) que sans le suffixe DNS.

J'ai pensé que je pouvais résoudre ce problème en utilisant mon fichier d'hôtes pour éviter d'avoir à effectuer une recherche. J'ai ajouté une entrée à mon fichier d'hôtes comme celle-ci

127.0.0.1    myMachine.MyDnsSuffix

Mais cela n'a pas changé les temps de chargement, même après un redémarrage. Bien qu'il ne soit pas important de résoudre ce problème spécifique, j'aimerais vraiment savoir pourquoi cela se produit.

De plus, lorsque j'exécute nslookup sur le domaine myMachine.MyDnsSuffix, je remarque qu'il utilise le serveur DNS de mon réseau pour trouver l'IP. Cela pourrait-il être lié à mon problème ou suis-je simplement en train de mal comprendre comment fonctionne nslookup?

Dan Herbert
la source

Réponses:

20

Je crois que nslookup est utilisé pour tester un serveur DNS lui-même, par opposition à l'utilisation de votre fichier HOSTS. http://support.microsoft.com/kb/200525 semble en indiquer autant.

Essayez juste un simple ping. Est-ce que la ping myMachine.MyDnsSuffixrésolution à l'adresse de bouclage que vous avez spécifiée dans votre fichier HOSTS?

Christopher Karel
la source
Vous avez fait valoir un bon point nslookup. J'ai juste essayé de cingler le myMachine.MyDnsSuffixet il a résolu mon IP sur le réseau, pas 127.0.0.1comme spécifié dans mon fichier HOSTS.
Dan Herbert
Quel est ton OS? Je pense que Windows7 et peut-être Vista ont des protections UAC étranges sur le fichier HOSTS. Êtes-vous certain que vos modifications sont enregistrées correctement?
Christopher Karel
Mon système d'exploitation est Windows XP. Les modifications semblent être enregistrées correctement.
Dan Herbert
Hmm ... il n'y a pas de marque de hachage au début de cette entrée HOSTS, n'est-ce pas? (cela en ferait un commentaire) Et vous êtes sûr qu'il se trouve dans C: \ Windows \ System32 \ drivers \ etc \ hosts? Pouvez-vous y ajouter une entrée factice et voir si cela se résout comme vous le spécifiez?
Christopher Karel
3
Oh, et n'oubliez pas de vider votre cache de noms. ipconfig /flushdns. Et les NETBIOS cache aussi: nbtstat -R. (Respect de la casse dans les fenêtres - WTF, pourquoi?!?)
Christopher Karel
8

Les recherches DNS n'utilisent pas de fichier d'hôtes. Déjà.

adaptr
la source
2
@ BartDeVos non, ce n'est pas faux. Une recherche d' hôte générique (c'est-à-dire gethostbyname()peut passer par le fichier hosts ou via DNS, mais une recherche spécifique au DNS (telle qu'exécutée par nslookup) n'utilisera pas le fichier hosts.
Alnitak
Cela dit, gethostinfo / getaddrinfo (les versions modernes de gethostbyname) sont POSIX, et pas nécessairement ce que Windows utilise.
adaptr
2

OK, nouvelle approche. Laissez-nous vider votre cache IP et NETBIOS. ipconfig /flushdnset nbtstat -R. Ensuite, lancez un renifleur de paquets comme Wireshark et faites un ping pendant qu'il est en cours d'exécution.

À partir de la capture de paquets, nous voulons voir si A) Il y a une requête DNS qui sort, et si oui, quel nom demande-t-elle. B) S'il y a une requête NETBIOS en cours. Il est possible que ce nom soit résolu via NETBIOS au lieu d'un DNS approprié.

Si nous ne voyons aucun des éléments ci-dessus malgré le vidage de votre cache, il est probable que le nom soit extrait soit des hôtes soit des lmhosts.

Christopher Karel
la source
1

Certaines personnes sur les forums Web affirment que la création d'un nouveau fichier d'hôtes et le redémarrage du service client DNS corrigent le problème, mais je ne sais pas pourquoi cela fonctionnerait si vous avez déjà essayé de redémarrer.

Je me rends compte que c'est un long shot, mais il n'y a pas de mots liés à Microsoft comme MSDN, Microsoft ou MSN dans l'entrée du fichier hosts, n'est-ce pas? Microsoft a écrit dnsapi.dll pour ignorer les entrées du fichier hôtes correspondant à certains noms. Par exemple, si j'ajoute l'entrée suivante, Windows l'ignore et résout les deux noms d'hôtes dans l'entrée à l'aide de DNS:

127.0.0.1 www.microsoft.com www.mysite.com
jlupolt
la source
Je n'ai aucune substance liée à Microsoft dans mon fichier HOSTS. Je n'ai que quelques domaines de test internes affectés. Mon fichier HOSTS est assez basique.
Dan Herbert
Hum ... intéressant. Je savais qu'ils codaient en dur les domaines MS pour ignorer le HOSTSfichier, mais même le domaine non MS est ignoré s'il partage une entrée avec un domaine MS? C'est juste une mauvaise programmation de leur part. C'est certainement quelque chose à rechercher si vous «réduisez» un HOSTSfichier.
Synetech
0

Lorsque vous utilisez le nom DNS complet, votre navigateur tente de passer par votre serveur proxy - clicky pour IE .

Le fichier hosts ou l'ordre de résolution de nom n'a rien à voir avec ce problème, et la plaie purulente à l'arrière de l'humanité qui est le fichier hosts doit être retirée et abattue bruyamment.

Maximus Minimus
la source
Je ne suis cependant pas connecté à un proxy.
Dan Herbert
1
@mh: je serais d'accord avec vous sur le tournage d'hôtes, tant que les serveurs root me permettent d'ajouter / supprimer / modifier des enregistrements.
Ian Boyd
0

http://geekswithblogs.net/JanS/archive/2009/06/17/beware-of-spacing-in-windows7-hosts-file.aspx

Cela semble être la cause réelle. Laissez à Microsoft le soin d'ignorer soudainement et sans avertissement une convention vieille de 25 ans.

Michael McNally
la source
2
Veuillez inclure un résumé de la réponse / cause dans votre réponse. C'est bien mieux qu'un simple lien.
Jacob
Voici la partie essentielle de l'URL liée Cependant, rien ne semblait fonctionner. Jusqu'à ce que je voie d'autres exemples de fichiers hôtes formatés en <adresse IP> <espace unique> <valeur>
Tun