arquivo hosts parece ser ignorado

18

Eu tenho quase uma nova caixa de desktop Ubuntu. O sistema operacional foi instalado há duas semanas e atualizado a partir de repositórios karmic. Na semana passada, não tive problemas com o DNS. Mas esta semana algo mudou. Não sei ao certo o que e quando, nem sei se alterei alguma configuração.

Então agora eu tenho uma situação realmente estranha. De acordo com os logs, a resolução de nomes deve funcionar normalmente.

/ etc / hosts

127.0.0.1   localhost test
127.0.1.1   desktop

/etc/host.conf

order hosts,bind
multi on

/etc/resolv.conf

# Generated by NetworkManager
search search servers obtained via DHCP
nameserver 192.168.0.3

/etc/nsswitch.conf

passwd:         compat
group:          compat
shadow:         compat

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4
networks:       files

protocols:      db files
services:       db files
ethers:         db files
rpc:            db files

netgroup:       nis

Mas se fato não é.

user @ test ~> teste de ping

PING localhost (127.0.0.1) 56(84) bytes of data.
[skip]

Ping está ok.

user @ test ~> teste do host

test.mydomain.com has address xx.xxx.161.201

Suspeito que o NetworkManager possa causar esse mau comportamento, mas não sei por onde começar a verificá-lo. Quaisquer pensamentos, sugestões?

z4y4ts
fonte

Respostas:

20

Com essa configuração, a maioria dos aplicativos funciona com prazer com sua entrada de /etc/hosts.

No entanto host, não olha /etc/nsswitch.conf. Isso ocorre por design, não por acidente, pois hosté especificamente um programa de pesquisa de DNS. /etc/hostsnão é DNS, é (principalmente) o que usamos antes do DNS.

O mesmo também é válido para dige nslookup- eles também são específicos do DNS.

Alnitak
fonte
Então, você está dizendo, o hostutilitário não usa /etc/hosts? E não há nada para consertar no meu caso?
z4y4ts
yup, praticamente - nada para ver aqui :)
Alnitak
O que eu não entendo é que host> usado para <ser o "regular" comando nome-consulta, obedecendo/etc/nsswitch.conf
mveroone
@Kwaio posso encontrar nenhuma evidência nas fontes do ISC que hostjá fiz
Alnitak
Bem, eu poderia ter usado implementações de distribuição não usuais, então, meu mal.
mveroone
15

O hostcomando (junto com dige nslookup) faz parte dos bindutilitários DNS. Como um utilitário de resolução de DNS, ele faz a resolução de DNS sozinho.

Se você estiver interessado em buscar uma entrada de qualquer libnssarmazenamento de dados orientado, poderá usar o getentprograma. Para obter uma entrada de hosts, por exemplo, use-a assim:

getent hosts google.com

Isto segue a ordem de resolução estabelecido sob hosts:no /etc/nsswitch.conffim, o que inclui /etc/hostsse "arquivos" é lised como uma das opções.

tylerl
fonte
Obrigado por me lembrar o getentcomando.
Emmanuel
2
Eu acredito que hoje em dia a pessoa deve estar usando getent ahostsem vez de getent hostsporque getent hostsusos gethostbyaddr()ou gethostbyname*()que estão obsoletos. Se eu entendi corretamente, getent hostsemula como os programas UNIX C antigos costumavam funcionar e getent ahostsemula a maneira como os programas moderm devem funcionar.
Mikko Rantalainen
0

Para mim, esse problema ocorreu devido a permissões de arquivo incorretas. Somente o root pode ler / etc / hosts. O arquivo deve ser legível mundialmente.


fonte