web-dev-qa-db-fra.com

Pourquoi mon fichier / etc / hosts n'est-il pas interrogé lorsque nslookup tente de résoudre une adresse?

J'ai quelques domaines locaux résolus en 127.0.0.1 dans mon fichier /etc/hosts. Et tout allait bien pour une période de temps, mais maintenant, quand je cours:

nslookup test.local

Il en résulte:

Server:     192.168.1.3
Address:    192.168.1.3#53

** server can't find test.local: NXDOMAIN

Le 192.168.1.3 est notre DNS réseau et il n'est pas supposé connaître mon domaine local test.local. Après quelques recherches, j'ai découvert que le fichier /etc/nsswitch.conf contient des informations sur la priorité des sources DNS à interroger. Mais il n'y avait pas de problème là! Voilà le mien:

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Alors, est-ce que quelqu'un sait pourquoi mon fichier hosts n'est pas inclus dans la recherche DNS?

13
Mehran

nslookup ne fait que une résolution DNS correcte , qui est très différente du sous-système Name Service Switch que vos autres applications utilisent; c'est-à-dire nslookup ignore /etc/hosts et mDNS.

Pour tester de telles résolutions locales, utilisez quelque chose qui utilise NSS. ping <hostname> par exemple. Voici une démonstration simple basée sur une entrée /etc/hosts sur mon réseau.

$ nslookup bert
Server:     8.8.8.8
Address:    8.8.8.8#53

** server can't find bert: NXDOMAIN

$ ping bert
PING bert (10.10.0.4) 56(84) bytes of data.
64 bytes from bert (10.10.0.4): icmp_seq=1 ttl=64 time=0.352 ms
64 bytes from bert (10.10.0.4): icmp_seq=2 ttl=64 time=0.407 ms

Notez qu'il existe des serveurs DNS et des mandataires pouvant intégrer un fichier /etc/hosts. Dans ces cas, nslookup peut renvoyer un résultat provenant d'une source locale.

17
Oli

Je suppose que vous voulez la résolution de nom du fichier /etc/hosts pour l'hôte spécifique (mysite.com).

Un autre problème courant pouvant être à l'origine de ce problème est que vous pouvez avoir plusieurs entrées sur le fichier /etc/hosts pour la même adresse IP, par exemple:

1.1.1.1 Host1.domain1.com
1.1.1.1 Host2.domain2.com

Dans certaines implémentations, la résolution du nom peut être transmise au DNS. Une solution rapide, tout groupe en 1 rangée

1.1.1.1 Host1.domain1.com Host2.domain2.com
2
afe038

Une autre chose courante que je vois est le moment où quelqu'un (généralement moi) inverse l'adresse IP avec le nom d'hôte dans /etc/hosts - par exemple:

mysite.com    10.2.3.4

À première vue, cela semble normal ... Voici ma solution environ 50% du temps:

10.2.3.4    mysite.com
1
KLaw