ubuntu server não resolve nomes de host da LAN

11

Bit preso aqui.

Eu tenho duas máquinas que não conseguem resolver nomes de hosts da LAN, a menos que existam entradas específicas em / etc / hosts

Mas outras máquinas na LAN podem resolver nomes de host.

Minha LAN:

  • 1 x roteador Cisco executando o DD-WRT v24-sp2 com o DNSMasq ativado. Eu configurei isso com os nomes de host e IPs na minha LAN.
  • 1 x Kubuntu 12.10 (resolve todos os nomes de host corretamente contanto que eles sejam inseridos no DNSMasq no roteador)
  • 2 x NAS (também resolve todos os nomes corretamente)

  • 1 x Ubuntu Server 12.04 (isso NÃO resolve nomes de hosts locais, a menos que eles sejam digitados em / etc / hosts)

  • 1 x XBMCLive (Dharma) (mesmo - não resolve a menos que as entradas estejam em / etc / hosts)

Como obtenho os últimos 2 para usar as entradas DNSMasq no roteador? Cada máquina está configurada para usar o roteador como um servidor de nomes e todas as unidades resolvem os endereços externos corretamente.

Obrigado.

mais algumas informações:

enquanto no servidor, se eu pingar outro PC (wstation)

$ ping wstation
PING wstation.local.domain (x.x.x.x) 

Se eu acrescentar .local

$ ping wstation.local
PING wstation.local.local.domain (x.x.x.x)

e diretamente

$ ping 10.0.0.4
PING 10.0.0.4 (10.0.0.4) 56(84) bytes of data.
64 bytes from 10.0.0.4: icmp_req=1 ttl=64 time=0.387 ms
64 bytes from 10.0.0.4: icmp_req=2 ttl=64 time=0.316 ms
64 bytes from 10.0.0.4: icmp_req=3 ttl=64 time=0.312 ms
64 bytes from 10.0.0.4: icmp_req=4 ttl=64 time=0.280 ms
64 bytes from 10.0.0.4: icmp_req=5 ttl=64 time=0.322 ms
^C
--- 10.0.0.4 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.280/0.323/0.387/0.038 ms                                                                       
    
por teracow 19.01.2013 / 02:24

3 respostas

12

Sobre sua saída atual

ping wstation
PING wstation.local.domain

Indica claramente que seu computador está anexando .local.domain a consultas não FQDN. Isso é algo configurado incorretamente ou pelo menos errado em sua configuração. (a menos que você use o sufixo .local.domain de propósito)

Resolução de nomes e períodos

Uma coisa importante que muitas pessoas não sabem é que um nome completo deve sempre terminar com um ponto final ( . ). Se você omiti-lo, a máquina tentará resolvê-lo no domínio de pesquisa local (por exemplo, mydomain.tld). Então, nesse caso, uma consulta para mypc.local se tornaria mypc.local.mydomain.tld . Para evitar isso, consulte com o período.

Configuração do resolvedor

A configuração do resolvedor é de grande importância aqui. No Ubuntu (e Debian) isso é configurado no arquivo /etc/network/interfaces (supondo que você não esteja executando o NetworkManager):

iface eth0 inet static
   address 192.168.3.3
   netmask 255.255.255.0
   gateway 192.168.3.1
   dns-nameservers 192.168.3.45 192.168.8.10
   dns-search foo.org bar.com                      # <-- these are the search domains

A resolução de nomes no Linux também pode ser realizada de outras maneiras. Não é apenas que o servidor DNS local está sendo consultado por tudo isso. Dê uma olhada no seu arquivo /etc/nsswitch.conf para a configuração hosts da resolução:

hosts:          files mdns4_minimal [NOTFOUND=return] dns mdns4

Isso significa que os arquivos são tentados primeiro (esse é o arquivo /etc/hosts ), depois o mDNS e somente depois o servidor DNS real é consultado. O mDNS é implementado usando Avahi no Linux e é chamado Bonjour em dispositivos Apple. Ele está usando o sufixo .local por padrão e funciona por meio de mensagens de difusão. Muito parecido com o ARP funciona, mas para o DNS.

Todos esses sistemas podem ser muito confusos e ainda mais quando se usa .local em uma configuração regular de DNS combinada com dispositivos mDNS. Eu acho que é por isso que você está confuso agora a respeito de porque um dispositivo funciona e o outro não: eles não estão todos usando o mesmo método de resolução.

Para resolver as coisas

  • Evite o uso se .local , a menos que você queira confiar no mDNS completamente. De sua pergunta, eu entendo que você gostaria de manter as coisas configuradas em um lugar central, então minha abordagem aqui é evitá-lo.
  • Configure seu servidor DNS local (o dispositivo DD-WRT no seu caso) para usar um nome de domínio especial, por exemplo, %código%. Para dnsmasq esta é uma configuração única, mas em configurações regulares isso deve ser configurado tanto no servidor DNS quanto no servidor DHCP (como está sendo anunciado via DHCP).
  • Configure todos os computadores para que tenham um nome de host simples e exclusivo. Eles usam isso em seu pedido de DHCP e isso é usado no dnsmasq em execução no seu roteador para resolvê-los. Como alternativa, configure-os manualmente para não precisar depender do DHCP.
  • Remova qualquer configuração que tenha ficado em my.home caso você a tenha corrigido no passado.
  • Configure os PCs na sua rede para usar /etc/resolv.conf como o domínio de pesquisa local. Isso pode ser feito via DHCP automaticamente, ou se estiver usando endereços estáticos através do arquivo my.home ou no Network Manager:

  • Agora, a simples resolução de nomes ( /etc/network/interfaces ) e o nome completo ( ping hostname ) devem funcionar.
por gertvdijk 19.01.2013 / 23:07
1

Com base na resposta de gertvdijk Acabei de comentar a linha em nsswitch.conf

sudo vim /etc/nsswitch.conf

.
.
.
hosts:          files dns # mdns4_minimal [NOTFOUND=return] dns
    
por falnyr 11.01.2017 / 14:37
0

Eu tenho problemas semelhantes com um / etc / hosts contendo vários espaços entre IP e hostname, em vez disso, usando um TAB. Depois de mudar para o TAB, o nome do host pode ser resolvido por ping.

127.0.0.1        test.local
         ^^^^^^^^ → Should be a TAB not multiple spaces.

veja também no link

    
por Thomas Lauria 09.07.2015 / 14:42