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

6

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 eu tenho um problema com a resolução de nomes.

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

Na linha de comando, posso resolver um host externo como unix.stackexchange.com . Eu posso muito bem resolver isso e pingar, como acontece com todos os outros hosts externos que eu tentei.

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

Eu posso resolver um alias na forma abreviada, embora o nome canônico seja o formato longo. Por exemplo, ping mysql resolve com êxito seu alias linux-04.xyz.local , mas não consigo resolver nem mysql.xyz.local nem linux-04.xyz.local .

Claramente eu perdi alguma coisa. Alguém pode sugerir o quê?

/ etc / hosts tem apenas as entradas padrão de localhost 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
    
por xhienne 24.06.2014 / 03:56

2 respostas

3

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

search xyz.local

Esta linha deve ser mesmo assim:

search xyz.local.

O período no final é crítico, pois isso faz com que o resolvedor de DNS pare. Por isso, não fará coisas assim para você:

mysql.xyz.local.xyz.local

Você pode confirmar isso tentando resolver os nomes dos hosts adicionando manualmente um período, temporariamente.

$ nslookup mysql.xyz.local.

Resolvendo este domínio inteiro

Para resolver isso, você precisará alterar a definição do seu domínio no seu servidor DHCP para que ele esteja servindo 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 através da página man, man nss .

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

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

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

    
por 24.06.2014 / 04:09
3

O problema é causado devido à palavra-chave "mdns4_minimal" no arquivo nsswitch.conf. Essa palavra-chave diz ao resolvedor que tudo que termina com local deve ser consultado usando mdns. Deve ser o suficiente para remover essa palavra-chave (e opções adicionais geralmente dadas entre colchetes).

Mais detalhes podem ser encontrados na minha postagem

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

    
por 21.10.2015 / 18:41