Na minha máquina Linux, quando eu corro hostname
, ele mostra mongodb
, mas quando eu corro host mongodb
, ele mostra:
mongodb@mongodb:/var/hadoop/hadoop-1.2.1/bin$ host mongodb
Host mongodb not found: 2(SERVFAIL)
Meu /etc/hosts
arquivo:
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
Minha primeira pergunta é: Como
/etc/hosts
está mapeando do IP para o nome do host, por que esta máquina não pode resolver o nome do hostmongodb
para o IP 192.168.10.10? Em vez disso, quando executohost localhost
, ele pode ser resolvido e mostra:localhost has address 127.0.0.1
Minha outra pergunta: de acordo com o
/etc/hosts
arquivo, o nome do hostlocalhost
deveria ter sido resolvido para 192.168.10.10 em vez do endereço IP de loopback 127.0.0.1. Alguém pode me explicar isso?
/etc/hosts
não tem qualquer efeito sobre a resolução de DNS ao consultar servidores DNS diretamente, que é o quehost
faz. No entanto, muitas ferramentas e utilitários do sistema usam alocalhost
definição, esperando que seja um endereço de loopback, e usam a resolução de nomes do sistema (que é/etc/hosts
examinada antes de consultar o DNS) para resolver nomes em vez de ir estritamente para o DNS, que nem sempre está presente./etc/hosts
arquivolocalhost
. No passado, tínhamos usado algum software que inseria um127.0.0.2 localhost
no arquivo hosts e, sendo essa a últimalocalhost
entrada que causava esse efeito, causava todos os tipos de problemas de software e licença. Portanto, minha recomendação é ter127.0.0.1 localhost
como a primeira entrada no seu/etc/hosts
arquivo e garantir que não haja outralocalhost
entrada nesse arquivo. E eu também verificaria qualquer material IPv6./etc/resolv.conf
aponta para um servidor DNS em execução diretamente no seu dispositivo (como um cachednsmasq
) e esse servidor está consultando seu local/etc/hosts
antes de consultar servidores externos. Então, indiretamente, comandos comohost
serão efetuados pelo seu/etc/hosts
- essa é uma configuração incomum, mas eu vi dispositivos enviados com, e a experiência de alguém usando esse sistema pode parecer conflitante com essa resposta se alguém não souber dessa configuração peculiar .Além da resposta de DopeGhoti, para testar sua resolução, incluindo a
/etc/hosts
precedência, você pode usar ogetent hosts <some_hostname>
comandofonte
Eu tenho problemas semelhantes com um / etc / hosts contendo vários espaços entre IP e nome do host, em vez disso, usando uma TAB. Depois de mudar para TAB, o nome do host pode ser resolvido por ping.
veja também em /superuser//a/938366/467479
fonte
hosts
diz:Fields of the entry are separated by any number of blanks and/or tab characters.
Talvez no seu caso houvesse algum caractere não imprimível estranho entre o IP e o nome do host?127.0.0.1
seguiu por 7 espaços seguidos porlocalhost
. Então, eu ficaria um pouco hesitante em fixar o problema especificamente em vários caracteres de espaço e concluir o uso do caractere de tabulação como solução.localhost