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?

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.


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

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

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
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.