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?

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.


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.


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.