Pourquoi ma résolution de nom atteint-elle le DNS même avec une entrée de fichier d'hôtes?


15

J'utilise Ubuntu 10.04.2 LTS Desktop. En tant que développeur web, j'ai naturellement créé un "me.com" dans mon /etc/hostsfichier. Malheureusement, ma résolution de nom va au DNS avant de vérifier d'abord mon entrée d'hôtes locaux et je ne peux pas comprendre pourquoi.

Le résultat final est que si mon /etc/resolv.conf en contient nameserver 127.0.0.1d'abord, alors je reçois une réponse dans mon navigateur Web de me.com (local) en moins d'une seconde. Mais si je n'ai pas cette entrée, ma réponse prend parfois jusqu'à 5 secondes si mon FAI est un peu lent.

Le problème était tellement gênant que j'ai dû déposer une question ici (et quelqu'un l'a résolue) pour savoir comment insérer automatiquement cette entrée dans /etc/resolv.conf. Mais l'un des utilisateurs (@shellholic) ici a fortement recommandé (et m'a fait des commentaires à ce sujet) de déposer cette question.

Savez-vous pourquoi la résolution de nom de mon poste de travail doit frapper le serveur DNS avant de frapper mon /etc/hostsentrée de fichier? Pour l'instant, j'utilise l' astuce resolv.conf .


1
Vous pourriez essayer de chercher /etc/nsswitch.conf. Les entrées sur mon système ne sont pas évidentes, mais vous pouvez tester les recherches uniquement filesen option et voir si cela fait une différence.
belacqua

Oui, pourriez-vous nous donner la sortie de cat /etc/nsswitch.confet cat /etc/host.conf? Aussi: comment testez-vous cela (par ping, navigateur, reniflage de paquets, etc.)?
arranger

Pour compléter la version de @arrange, pourriez-vous joindre le résultat de time getent hosts me.com; hostname --fqdn; grep 'me.com' /etc/hosts; grep hosts /etc/nsswitch.conf; netstat -uln | grep ':53'; cat /etc/host.conf; wc -l /etc/hosts. N'hésitez pas à masquer la rationalité.
shellholic

@shellholic ^ rationality ^ rationnellement? il h.
belacqua

@jgbelacqua: en effet
shellholic

Réponses:


15

Le fichier /etc/nsswitch.confvous permettra de reconfigurer l'ordre de résolution des noms. Par défaut, le fichier hôte est le premier, puis le DNS configuré. Il pourrait y avoir plus d'options.

Le fichier /etc/hostsrépertorie uniquement les adresses IP et les noms d'hôte (plusieurs noms pour une IP si vous le souhaitez)

Le fichier /etc/resolv.confrépertorie les domaines de recherche par défaut et répertorie également dans l'ordre les serveurs de noms à utiliser.


4
Gardez également à l'esprit qu'une fois qu'un nom est résolu par une application ou un service sur votre box Linux, il restera en cache pendant une durée connue sous le nom de TTL (time to live). Donc, si vous changez la séquence de résolution, vous feriez mieux de redémarrer votre système ou de vider le cache.
jfmessier

comment effacez-vous le «cache»?
Eric Johnson

Je ne suis pas sûr, mais redémarrer une connexion réseau avec les commandes ifup et ifdown pourrait le faire. Bien sûr, le redémarrage devrait effacer le cache, mais nous utilisons Linux, non?
jfmessier

nscdpeut mettre en cache les requêtes de résolution de noms, mais ne respecte pas ttl (et est donc la mise en cache des hôtes est désactivée par défaut). systemd-resolvedmettra également en cache les entrées. Si aucun d'entre eux n'est configuré, les hôtes Linux ne mettent pas en cache les réponses DNS . (Les navigateurs le font probablement au niveau de la couche application)
Gert van den Berg
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.