Dans ma machine Linux, quand je cours hostname
, ça montre mongodb
, mais quand je cours host mongodb
, ça montre:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Mon /etc/hosts
dossier:
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: étant donné que le
/etc/hosts
mappage de l'IP au nom d'hôte, pourquoi cette machine ne peut pas résoudre le nommongodb
d' hôte en IP 192.168.10.10? Au lieu de cela, lorsque je courshost 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ôtelocalhost
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?
/etc/hosts
n'a aucun effet sur la résolution DNS lors de l'interrogation directe des serveurs DNS, ce qui est lehost
cas. Cependant, de nombreux outils et utilitaires système utilisent lalocalhost
définition, s'attendant à ce qu'il s'agisse d'une adresse de bouclage, et utilisent la résolution de noms de système (qui examine/etc/hosts
avant d'interroger DNS) pour résoudre les noms plutôt que d'aller strictement à DNS, qui peut ne pas toujours être présent./etc/hosts
dossier concernantlocalhost
. Dans le passé, nous avions utilisé des logiciels qui inséraient un127.0.0.2 localhost
fichier dans le fichier hosts et, commelocalhost
c'était la dernière entrée, c'était celui qui provoquait toutes sortes de problèmes de logiciels et de licences. Ma recommandation est donc d'avoir127.0.0.1 localhost
comme première entrée dans votre/etc/hosts
fichier et de vous assurer qu'il n'y a pas d'autrelocalhost
entrée dans ce fichier. Et je vérifierais également tous les trucs ipv6./etc/resolv.conf
pointez sur un serveur DNS fonctionnant directement sur votre appareil (comme une mise en cachednsmasq
) et que ce serveur consulte votre section locale/etc/hosts
avant d'interroger des serveurs externes. Ensuite, indirectement, des commandes comme celles-host
ci seront effectuées par votre/etc/hosts
- il s'agit d'une configuration peu commune, mais celle avec laquelle j'ai vu des appareils être livrés, et l'expérience de quelqu'un utilisant un tel système peut sembler entrer en conflit avec cette réponse si quelqu'un n'est pas au courant de cette configuration particulière .En plus de la réponse de DopeGhoti, pour tester votre résolution, y compris la
/etc/hosts
priorité, vous pouvez utiliser lagetent hosts <some_hostname>
commande.la source
J'ai eu des problèmes similaires avec un / etc / hosts contenant plusieurs espaces entre IP et nom d'hôte, à la place en utilisant un TAB. Après avoir changé en TAB, le nom d'hôte peut être résolu par ping.
voir aussi sur /superuser//a/938366/467479
la source
hosts
dit:Fields of the entry are separated by any number of blanks and/or tab characters.
Peut - être dans votre cas il y avait un caractère non imprimable superflu entre l'IP et le nom d'hôte?127.0.0.1
suivi de 7 espaces suivis delocalhost
. Je serais donc un peu hésitant à épingler le problème spécifiquement sur plusieurs caractères d'espace et à conclure en utilisant le caractère de tabulation comme solution.localhost