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/hosts
archivo:
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/hosts
es una asignación de IP a nombre de host, ¿por qué esta máquina no puede resolver el nombremongodb
de host a IP 192.168.10.10? En cambio, cuando ejecutohost localhost
, se puede resolver y muestra:localhost has address 127.0.0.1
Mi otra pregunta: según el
/etc/hosts
archivo, el nombre de hostlocalhost
deberí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/hosts
no tiene ningún efecto en la resolución de DNS cuando se consultan servidores DNS directamente, que es lo quehost
hace. Sin embargo, muchas herramientas y utilidades del sistema usan lalocalhost
definición, esperando que sea una dirección de bucle invertido, y usan la resolución de nombre del sistema (que se ve/etc/hosts
antes de consultar DNS) para resolver nombres en lugar de ir estrictamente a DNS, que puede no estar siempre presente./etc/hosts
archivolocalhost
. En el pasado, habíamos utilizado un software que insertaba un127.0.0.2 localhost
archivo en el archivo de hosts y esa era la últimalocalhost
entrada, 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 localhost
como primera entrada en su/etc/hosts
archivo y asegurarse de que no haya otralocalhost
entrada en ese archivo. Y también verificaría cualquier cosa de ipv6 también./etc/resolv.conf
apunta 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/hosts
antes de consultar servidores externos. Luego, indirectamente, los comandos comohost
se 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/hosts
precedencia, 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
hosts
dice: ¿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.1
seguido 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