Sur ma machine Linux, lorsque j'exécute hostname
, il affiche mongodb
, mais lorsque j'exécute Host mongodb
, ça montre:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ Host mongodb
Host mongodb not found: 2(SERVFAIL)
Ma /etc/hosts
fichier:
192.168.10.10 mongodb
192.168.10.10 localhost
127.0.0.1 localhost
#127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Ma première question est: depuis /etc/hosts
est en train de mapper d'IP en nom d'hôte, pourquoi cette machine ne peut pas résoudre le nom d'hôte mongodb
en IP 192.168.10.10? Au lieu de cela, lorsque j'exécute Host localhost
, il peut être résolu et affiche:
localhost has address 127.0.0.1
Ma autre question: selon le /etc/hosts
fichier, le nom d'hôte localhost
aurait dû être résolu en 192.168.10.10 au lieu de l'adresse IP de bouclage 127.0.0.1. Quelqu'un peut-il m'expliquer cela?
Les utilitaires Host
(et nslookup
) interrogent explicitement les serveurs DNS et ne consultent pas les /etc/hosts
fichier dans une configuration système par défaut. Si vous deviez traceroute
ou ping
cette adresse, vous la verriez correctement se résoudre.
Vous pas voulez changer localhost
pour mapper sur autre chose que 127.0.0.1, cela peut avoir des effets étranges et subtils sur beaucoup de choses. Je pense que /etc/hosts
est analysé dans l'ordre dans lequel il est écrit, et puisque vous avez:
192.168.10.10 localhost
127.0.0.1 localhost
..la deuxième entrée peut remplacer la première.
En plus de la réponse de DopeGhoti, pour tester votre résolution, y compris le /etc/hosts
priorité, vous pouvez utiliser le getent hosts <some_hostname>
commande.