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

15

J'ai quelques domaines locaux résolus 127.0.0.1dans mon /etc/hostsfichier. Et tout allait bien pendant un certain 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

C'est 192.168.1.3notre DNS de réseau et il n'est pas censé connaître mon domaine local test.local. Après quelques recherches, j'ai trouvé que ce /etc/nsswitch.conffichier contient des informations sur la priorité des sources DNS à interroger. Mais il n'y avait aucun problème là-bas! Voici la mienne:

# /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

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

Mehran
la source

Réponses:

20

nslookupne fait que la résolution DNS appropriée , qui est considérablement différente du sous-système de commutateur de service de noms que vos autres applications utilisent; c'est-à-dire nslookupignore /etc/hostset mDNS.

Pour tester des résolutions locales comme celle-ci, utilisez quelque chose qui utilise NSS. ping <hostname>par exemple. Voici une démo simple basée sur une /etc/hostsentrée 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 proxys qui peuvent prendre en compte un /etc/hostsfichier. Dans ces cas, nslookuppeut renvoyer un résultat d'une source locale.

Oli
la source
5
Au lieu d' pingun devrait être utilisé, getent ahostscar cela ne nécessite pas toutes les choses supplémentaires qui pingont.
Mikko Rantalainen
2

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

Un autre problème courant qui peut provoquer ce problème est que vous pouvez avoir plusieurs entrées sur le /etc/hostsfichier pour la même IP, par exemple:

1.1.1.1 host1.domain1.com
1.1.1.1 host2.domain2.com

Dans certaines implémentations, cela peut entraîner la remise de la résolution de noms au DNS. Une solution rapide, regroupez tout sur une seule ligne

1.1.1.1 host1.domain1.com host2.domain2.com
afe038
la source
1

Une autre chose courante que je vois est l'endroit où quelqu'un (généralement moi) inverse l'adresse IP avec le nom d'hôte /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
KLaw
la source
coupable cette fois ... # soupir
Cybex
1
Habituellement, les fichiers hôtes sont fournis avec une entrée locale prédéfinie 127.0.0.1. Le mal est tellement mal :-)
m3nda