En mi máquina Linux, cuando ejecuto hostname, se muestra mongodb, pero cuando ejecuto host mongodb, muestra:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Mi /etc/hostsarchivo:
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
- Mi primera pregunta es: dado que - /etc/hostses una asignación de IP a nombre de host, ¿por qué esta máquina no puede resolver el nombre- mongodbde host a IP 192.168.10.10? En cambio, cuando ejecuto- host localhost, se puede resolver y muestra:- localhost has address 127.0.0.1
- Mi otra pregunta: según el - /etc/hostsarchivo, el nombre de host- localhostdebería haberse resuelto a 192.168.10.10 en lugar de la dirección de bucle invertido 127.0.0.1. ¿Alguien me puede explicar esto?

/etc/hostsno tiene ningún efecto en la resolución de DNS cuando se consultan servidores DNS directamente, que es lo quehosthace. Sin embargo, muchas herramientas y utilidades del sistema usan lalocalhostdefinición, esperando que sea una dirección de bucle invertido, y usan la resolución de nombre del sistema (que se ve/etc/hostsantes de consultar DNS) para resolver nombres en lugar de ir estrictamente a DNS, que puede no estar siempre presente./etc/hostsarchivolocalhost. En el pasado, habíamos utilizado un software que insertaba un127.0.0.2 localhostarchivo en el archivo de hosts y esa era la últimalocalhostentrada, lo que causaba que fuera el que causaba todo tipo de problemas de software y licencia. Por lo tanto, mi recomendación es tener127.0.0.1 localhostcomo primera entrada en su/etc/hostsarchivo y asegurarse de que no haya otralocalhostentrada en ese archivo. Y también verificaría cualquier cosa de ipv6 también./etc/resolv.confapunta a un servidor DNS que se ejecuta directamente en su dispositivo (como un almacenamiento en cachédnsmasq) y dicho servidor está consultando a su local/etc/hostsantes de consultar servidores externos. Luego, indirectamente, los comandos comohostse verán afectados por usted/etc/hosts: esta es una configuración poco común, pero con la que he visto que se envían dispositivos, y la experiencia de alguien que usa dicho sistema puede parecer conflictiva con esta respuesta si alguien desconoce esta configuración peculiar .Además de la respuesta de DopeGhoti, para probar su resolución, incluida la
/etc/hostsprecedencia, puede usar elgetent hosts <some_hostname>comando.fuente
Tengo problemas similares con un / etc / hosts que contiene múltiples espacios entre IP y nombre de host, en lugar de usar una TAB. Después de cambiar a TAB, el nombre de host podría resolverse haciendo ping.
ver también en /superuser//a/938366/467479
fuente
hostsdice: ¿Fields of the entry are separated by any number of blanks and/or tab characters.Quizás en su caso haya algún carácter extraño no imprimible entre la IP y el nombre de host?127.0.0.1seguido de 7 espacios seguidos delocalhost. Por lo tanto, dudaría un poco en fijar el problema específicamente en varios caracteres de espacio y concluiría usando el carácter de tabulación como la solución.localhost