Não foi possível resolver os nomes de domínio .foo.local

15

Meu local de trabalho possui uma intranet com nomes de domínio como server01.foo.local, server02.foo.localetc. Inicializei recentemente o ambiente ativo do Fedora 16 para testá-lo e descobri que esses nomes de domínio não são resolvidos.

Por exemplo:

$ ping server01.foo.local
ping: host desconhecido server01.foo.local
$ ping server01
PING server01.foo.local (XXXX) ...

Por que server01resolverá (e imprimirá o nome como server01.foo.local), mas server01.foo.localnão será?

rhollencamp
fonte
Tinha exatamente o mesmo problema com o Ubuntu em execução no VMBox. A solução da @ adam820 também funcionou para mim.
jimbo

Respostas:

22

Embora eu não esteja 100% esclarecido sobre o motivo pelo qual ele não funciona conforme o esperado, parece haver um conflito muito grande com o serviço mDNS (Avahi no Linux, Bonjour / Zeroconf no Mac / Windows) e redes Windows que use .local como o nome de roteamento interno para domínios. O que parece acontecer é que, ao executar o ping em server01, ele está pulando usando mDNS para resolução e, em seguida, anexando o domínio de pesquisa (foo.local) à solicitação, consultando com êxito o servidor DNS para server01.foo.local. No entanto, ao usar o mDNS (que usa .local como a extensão padrão do nome da máquina), quando você tenta executar ping no server01.foo.local, na verdade ele está transmitindo pelo mDNS procurando uma máquina com o nome "server01.foo"; quando falha, não passa para o DNS direto por qualquer motivo. Uma grande solução para isso é não nomear o domínio .local, o que provavelmente vai contra o treinamento da maioria dos administradores do Windows para estruturação de domínio. Dito isto:

Se o mDNS não tiver importância na sua rede (como é comum na empresa, que tende a executar servidores DNS dedicados versus a rede doméstica, onde o mDNS às vezes é usado), alterar a ordem de pesquisa é a solução mais fácil.

Isso pode ser encontrado em /etc/nsswitch.conf. A seção para hosts listará a ordem, que para o Fedora 16 padrão é:

hosts:      files mdns4_minimal [NOTFOUND=return] dns myhostname

Se você mudar isso para:

hosts:      files dns mdns4_minimal [NOTFOUND=return] myhostname

para onde você está movendo o DNS na ordem de pesquisa, isso deve corrigir as coisas por enquanto. Como alternativa, se você sabe que não precisará do mDNS, remova a parte "mdns4_minimal [NOTFOUND = return]".

Olhando para esse bug no rastreador da Red Hat , parece que esse é um problema de longa data, sem solução aparente no momento. No entanto, se alguém puder fornecer mais informações sobre por que isso acontece dessa maneira, seria apreciado.

adam820
fonte
remover a seção mdns resolveu o problema #
rhollencamp 10/11/11
Muito obrigado por adicionar isso. Teve exatamente o mesmo problema e mover a entrada dns primeiro resolveu o problema. No meu caso, estou usando o Ubuntu mais recente, não o Fedora, mas a solução era exatamente a mesma.
jimbo
não vale nada, tentei isso e descobri que o uso da VPN da Cisco vpncnão pode se conectar após a remoção dessas entradas na hosts: .*linha /etc/nsswitch.conf. A substituição dessas configurações corrigiu o problema.
dobbs 28/07
"quando falha, não passa para o DNS direto por qualquer motivo." . A razão é bastante óbvia. [NOTFOUND=return]significa "se o mDNS diz que um nome .local não foi encontrado, isso é autoritário e não faz sentido pedir mais". Mover o DNS para o mDNS é uma solução alternativa, mas apenas tornar as falhas do mDNS não autorizadas já é suficiente.
precisa saber é o seguinte
Sim, isso é um comentário válido; isso foi há 7 anos e eu não sabia disso na época. Mas sim, removê-lo, remover o pacote conforme indicado abaixo ou alterar a ordem são soluções / soluções alternativas válidas.
precisa saber é o seguinte
2

Sugiro outra solução caso você esteja usando o .localdomínio. Primeiro, não é uma boa ideia, pois parece um padrão / convenção a ser usado .localpara alguma descoberta dinâmica multicast.

Mas se você insistir, também é mais fácil remover o nss-mdnspacote ou o libnss-mdnspacote, dependendo da sua distribuição, e o problema será resolvido. Se você não precisa dessa funcionalidade, por que ela está lá?

Aqui está yum info nss-mdns:

Summary     : glibc plugin for .local name resolution
URL         : http://0pointer.de/lennart/projects/nss-mdns/
License     : LGPLv2+
Description : nss-mdns is a plugin for the GNU Name Service Switch (NSS)
            : functionality of the GNU C Library (glibc) providing host name
            : resolution via Multicast DNS (aka Zeroconf, aka Apple Rendezvous,
            : aka Apple Bonjour), effectively allowing name resolution by common
            : Unix/Linux programs in the ad-hoc mDNS domain .local.
            : 
            : nss-mdns provides client functionality only, which means that you
            : have to run a mDNS responder daemon separately from nss-mdns if
            : you want to register the local host name via mDNS (e.g. Avahi).
akostadinov
fonte
1

Algumas coisas que você pode verificar:

  • existe um pedido no /etc/host.conf, que especifica verificar o / etc / hosts antes de consultar o DNS?

  • server01 está em / etc / hosts?

  • existe um search foo.local/ etc / resolv, conf? Isso acrescentaria foo.local a qualquer nome de host que você estivesse procurando

Gostaria de saber se o seu servidor de nomes está configurado corretamente. Se você ainda tiver nslookup, o que ele voltar para server01, server01.foo.localeo endereço IP (reverse lookup)?

ott--
fonte
* host.conf não tem nada a ver com ordem * server01 não está em / etc / hosts * a pesquisa foo.local está em /etc/resolv.conf (o NetworkManager o colocou lá), mas removê-lo não ajuda. Tentei proteger o /etc/resolv.conf após a edição, para que o NM não pudesse sobrescrever e reiniciar; no dice #
rhollencamp
@rhollencamp: você tem nslookup no seu sistema?
ott--