Problema de resolução de DNS com o Fedora 20

Problema de resolução de DNS com o Fedora 20

Eu tenho um servidor Fedora 20 recém-construído que acabei de conectar à minha rede. É um servidor virtual rodando em um host VirtualBox. Tudo parece estar funcionando, mas tenho um problema com a resolução de nomes.

(Devo dizer neste momento que a resolução de nomes é fornecida por um servidor Windows em hardware separado que funciona bem para todas as outras máquinas na rede.)

Na linha de comando posso resolver um host externo como unix.stackexchange.com. Posso resolver isso com bastante satisfação e fazer ping, como acontece com todos os outros hosts externos que tentei.

Porém, minha rede local (vamos chamá-la xyz.local) é diferente. A interface de rede na minha máquina F20 possui DOMAIN=xyx.localo script de rede (script completo abaixo). Na linha de comando posso resolver, digamos, server-01, mas não server-01.xyz.local.

Posso resolver um alias no formato abreviado, mesmo que o nome canônico seja o formato longo, então, por exemplo, ping mysqlresolvo com êxito seu alias linux-04.xyz.local, mas não consigo resolver nem mysql.xyz.localnem linux-04.xyz.local.

É evidente que perdi alguma coisa. Alguém pode sugerir o que?

/etc/hosts possui apenas as entradas localhost padrão para 127.0.0.1

/etc/resolv.conf é o seguinte:

#Generated by Network Manager
search xyz.local
nameserver 192.168.xxx.xxx

Meu script de interface é

TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME="Wired connection 1"
UUID=<uuid>
ONBOOT=yes
IPADDR0=192.168.xxx.xxx
PREFIX0=24
GATEWAY0=192.168.xxx.xxx
DNS1=192.168.xxx.xxx
HWADDR=<mac>
DOMAIN=xyz.local
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes

Responder1

Parte do seu problema provavelmente se deve ao fato de seu caminho de pesquisa ser gerado automaticamente por meio do NetworkManager:

search xyz.local

Esta linha realmente deveria ser esta:

search xyz.local.

O período no final é crítico, pois informa ao resolvedor DNS para parar. Portanto, não fará coisas assim com você:

mysql.xyz.local.xyz.local

Você pode confirmar isso tentando resolver nomes de host adicionando manualmente um ponto final, temporariamente.

$ nslookup mysql.xyz.local.

Resolvendo todo este domínio

Para resolver isso, você precisará alterar a definição do seu domínio no servidor DHCP para que ele sirva o domínio como xyz.local..

/etc/nsswitch.conf

O método usado para resolver um nome de host é controlado pelo arquivo /etc/nsswitch.conf. A notação NSS significa Name Service Switch, e você pode ler mais sobre isso na página de manual, man nss.

Aqui está a linha do meu arquivo que controla como os nomes de host são resolvidos:

$ grep ^hosts /etc/nsswitch.conf
hosts:      files dns mdns4_minimal

Ele olha primeiro para meu arquivo local /etc/hostse depois consulta o DNS em segundo lugar.

Responder2

O problema é causado pela palavra-chave “mdns4_minimal” no arquivo nsswitch.conf. Esta palavra-chave informa ao resolvedor que tudo que termina com local deve ser consultado usando mdns. Deve ser suficiente remover essa palavra-chave (e opções adicionais geralmente fornecidas entre colchetes).

Mais detalhes você pode encontrar no meupublicar

A razão pela qual o nslookup resolve tudo é porque ele não examina o nsswitch.conf, mas usa /etc/resolv.conf diretamente. O ping, por outro lado, depende do resolvedor que primeiro analisa o nsswitch.conf e resolve o nome usando o que está escrito nele.

informação relacionada