resolução de nomes: o comando host funciona, mas não o ping

0

Esta pergunta é muito duplicada, mas nenhuma delas se aplica à minha configuração. Isso me deixa confuso, já que minha configuração é relativamente simples:

Configuração

Eu não tenho mdns no meu /etc/nsswitch.conf

# cat /etc/nsswitch.conf  | grep hosts
hosts:          files dns

Meu /etc/hosts é intocado no Ubuntu.

Eu tenho um dnsmasq na porta 127.0.0.1:53, mas isso não é tão importante como eu percebi com tcpdump que nenhuma consulta é realmente enviada ao dnsmasq quando a resolução realmente falha.

O problema provavelmente está por aqui:

# cat /etc/resolv.conf
nameserver 127.0.0.1
domain .

O domain . é importante para mim, pois não quero procurar www.localdomain quando estou fazendo a resolução de nomes em www .

Esta configuração exata está funcionando em outro computador.

A questão atual

# host www
172.128.0.170
# ping www
ping: unknown host www

Eu tive que ter isso:

  • com host : recebo pacotes em lo device na porta 53, pedindo resolução para dnsmasq . Então eu obtenho uma linha no arquivo de log dnsmasq ... etc ...

  • com ping : não recebo NO PACKETS em lo device, portanto, obviamente, nenhuma linha no log dnsmasq.

Qualquer novo nome de host sem pontos (nome de host deliberadamente inválido) daria o mesmo comportamento (nenhum pacote enviado com ping , pacotes enviados com host ). Claro que a resolução falha para ambos.

Qualquer novo nome de host com pontos funciona corretamente.

Isso funciona em outro servidor que não possui o mesmo libc6 (Ubuntu 15.10, libc6 is 2.21-0ubuntu4.1 ). Ele falha no Ubuntu 12.04.1 com libc6 2.15-0ubuntu10.10 .

    
por vaab 21.03.2016 / 03:43

1 resposta

0

Eu mesmo encontrei uma solução para que ping funcione corretamente novamente. Mas não há resposta sobre por que isso não funciona no computador. Por isso, não aceitarei essa solução, mas isso pode ajudar as pessoas com o mesmo problema:

O comportamento é devido à linha domain . em /etc/resolv.conf de alguma forma não se comportando da mesma forma entre as duas versões de libc6 .

Eu posso conseguir o que eu estava procurando, forçando uma pesquisa local inexistente (que não é muito elegante, mas funciona), substituindo domain . por search doesnotexist .

Então, magicamente, tudo funciona como esperado, mas recebo solicitações de DNS espúrias adicionais enviadas para dnsmasq antes (ele tenta primeiro resolver www.doesnotexist , que falha e tenta www , que existe.

Essa configuração foi necessária na minha configuração como www e www.myactualdomainname e apontando para IPs diferentes.

    
por vaab 21.03.2016 / 03:53