Pesquisa de DNS do domínio local do Ubuntu 18.04 .local não funciona

17

Estou usando um Raspberry Pi 3 com o Ubuntu 18.04. Na minha empresa, temos um servidor DNS e alguns domínios com ".local". Eu sei que tecnicamente isso não está correto e deve ser ".lan", porque .local é reservado para DNS multicast. Mas é assim que as coisas são e não podem ser facilmente alteradas. Portanto, na minha máquina Windows, posso executar ping e navegar para esses nomes de domínio sem problemas. No meu Ubuntu, no entanto, eu não posso.

Não consigo usar IPs porque alguns domínios estão na mesma máquina e o servidor da Web IIS organiza as coisas para onde vai.

Eu pesquisei e aparece com bastante frequência:

No entanto, alterar o /etc/nsswitch.conf não faz o truque para mim. eu tentei

  • hosts: arquivos mdns4_minimal [NOTFOUND = return] dns myhostname # default
  • hosts: arquivos dns
  • hosts: arquivos mdns4_minimal [NOTFOUND = continue] dns myhostname
  • hosts: arquivos mdns4 [NOTFOUND = return] dns myhostname
  • hosts: arquivos mdns4 [NOTFOUND = continue] dns myhostname
  • hosts: arquivos dns mdsn4_minimal myhostname
  • hosts: dns
  • alguns outros

Nenhum dos quais funcionou. Também tentei reiniciar após uma alteração. Tentei dizer ao avahi que o nome do domínio = alocal no /etc/avahi/avahi-daemon.conf, não funcionou após a reinicialização do serviço, não funcionou após a reinicialização. Depois que isso não funcionou, tentei desativar completamente o serviço avahi-daemon.

sudo systemctl disable avahi-daemon

Após uma reinicialização, tentei algumas permutações no /etc/nsswitch.conf novamente, sem nenhum efeito.

com minhas configurações atuais em hosts (arquivos dns), recebo esta resposta:

dig login.name.local # not the actual name

; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 33538
;; flags: qr rd ra; QUERY: 1, ANSWER:0, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; Query time: 2msec
;; SERVER: 127.0.0.53#53(127.0.0.53)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

No entanto, quando instruo o Dig a consultar o servidor diretamente, recebo a resposta correta:

dig @dnsIP login.name.local
; <<>> Dig 9.11.3-1ubuntu1.1-Ubuntu <<>> login.name.local
; (1 server found)
;; global options: +cmd
;; Got answer:
;; WARNING .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 57866
;; flags: qr aa rd ra; QUERY: 1, ANSWER:1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 65494
;; QUESTION SECTION:
;login.name.local. 0     IN     A

;; ANSWER SECTION:
login.name.local. 3600 IN    A        serverIP

;; Query time: 2msec
;; SERVER: dnsIP#53(dnsIP)
;; WHEN: Thu Aug 23 10:51:50 CEST 2018
;; MSG SIZE  rcvd: 56

Esta versão do Ubuntu usa o netplan com o gerenciador de rede. O IP DNS correto está definitivamente na lista. (na verdade, é o DNS primário.) Além disso, o dnsIp é o mesmo que serverIP, mas isso não deve ser um problema.

Faça ping ou conecte-se via navegador e isso não funciona, é claro. Nenhum usa a consulta DNS.

Estou sem saber o que fazer. Certamente não podemos mudar para um nome de domínio diferente. Coloquei o nome do servidor em / etc / hosts, mas isso é apenas uma solução temporária.

FalcoGer
fonte
alterar o resolv.conf como sugerido pelo jeremfg funcionou para mim depois de persegui-lo por várias horas. Tnx.
user3529828

Respostas:

13

Eu enfrentei um problema muito semelhante (se não exatamente o mesmo) no Linux Mint 19 (Tara). Consegui resolvê-lo combinando três informações diferentes. Tudo parece estar relacionado a alterações recentes com o systemd-resolved.

Primeiro, sim, eu precisava configurar o /etc/nsswitch.conf como você fez e esperaria. Enquanto o dns vier antes do mdns, você deve ser bom. Eu terminei com simplesmente:

hosts:          files dns myhostname

ref: /unix//a/457172/271210

Antes de atualizar para esta versão do Mint, esta é a única coisa que eu precisava fazer. Agora também acabei fazendo as outras duas alterações abaixo para fazê-lo funcionar ...


Depois disso, configurei meu domínio de pesquisa para que o systemd-resolved funcionasse como eu queria. Então, editei o arquivo /etc/systemd/resolved.conf , a configuração de Domínios na seção [resolver] . No meu caso, acabou parecendo:

[Resolve]
#DNS=
#FallbackDNS=
Domains=trilliant.local
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
#DNSStubListener=yes

ref: /ubuntu//a/1031271/872881

Também mudei a configuração do avahi para outra coisa ("mdns", se bem me lembro, mas isso não importa). Não deve ser exigido, no entanto, pelo meu entendimento. Apenas adicionando para completar.


Mas nada funcionou até eu ligar para o seguinte:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

ref: /ubuntu//a/938703/872881

Depois de chamar isso, tudo começou a funcionar perfeitamente e como esperado!

Portanto, é possível que eu realmente não precisei alterar o arquivo /etc/systemd/resolved.conf, mas mantive essa alteração, pois fazia sentido e me permitia digitar apenas o nome de uma máquina, sem o FQDN completo, para que a resolução do DNS funcionasse. .

jeremfg
fonte
Você poderia ter colocado a última linha no começo e acho que você obteria mais votos se o fizesse.
HongboZhu 24/06/19
@HongboZhu eu faria se soubesse de fato que é a única alteração necessária para que os domínios locais funcionem. Tenho certeza de que você ainda precisa preferir o DNS em vez do MDN na configuração do resolver. Presumo que seu comentário se refere à configuração de domínio no meio? Nesse caso, sim, suponho que eu poderia colocar isso no final como uma alteração opcional. Mas as outras duas peças são necessárias IMHO.
jeremfg
1
Na minha nova instalação 18.04.2, basta alterar os pedidos de "hosts" no nsswitch.conf já funciona.
Tomofumi 11/07/19
16

A resposta aceita não resolveu meu problema. Não tinha nada a ver com avahi - eu não tinha o serviço avahi instalado. Eu tenho o meu sistema definido para obter seu IP e suas configurações de servidor DNS do DHCP. No entanto, o DNS fornecido pelo dhcp não estava sendo verificado quanto a consultas usando .local

O verdadeiro problema é que o Ubuntu 18.4 tem seu resolv.conf vinculado a um arquivo stub que aponta para o host local para a resolução de nomes. A resolução de nomes DNS do host local significa que o sistema se recusa a procurar nomes .local no servidor DNS fornecido, acreditando (incorretamente) que esses nomes são inválidos. Esta é a configuração padrão do /etc/resolv.conf:

ls -la /etc/resolv.conf
lrwxrwxrwx 1 root root 39 Jan 22 13:26 /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf

o conteúdo do arquivo stub é (comentários removidos):

 cat /run/systemd/resolve/stub-resolv.conf
 .. removed comments..  
nameserver 127.0.0.53
    search reddog.microsoft.com

a resolução 'real' conf tem a configuração de DNS correta (do dhcp):

cat /run/systemd/resolve/resolv.conf

..removed comments..
nameserver 10.168.200.250 # This is my server that can resolve .local
nameserver 208.67.220.220 # these are optional, fallback dns servers
nameserver 208.67.222.222
# Too many DNS servers configured, the following entries may be ignored.
nameserver 8.8.8.8
search reddog.microsoft.com

Para fazer com que o sistema use seu resolvedor DNS preferido em vez do host local, altere o link simbólico para apontar para /run/systemd/resolve/resolv.conf em vez de /run/systemd/resolve/stub-resolv.conf:

sudo rm -f /etc/resolv.conf
sudo ln -s /run/systemd/resolve/resolv.conf /etc/resolv.conf

Imediatamente após isso, a resolução do .local começou a funcionar. não há necessidade de reiniciar ou reiniciar qualquer serviço.

OzPHB
fonte
Desinstalei o Avahi e segui os seus passos. Isso fez para mim. Obrigado senhor. (Usando o Ubuntu 18.04 Desktop).
José L. Patiño
Obrigado. Essa foi a resposta para mim. Por que "simplesmente não funciona" imediatamente?
adampski
qual é a diferença entre sua solução e a resposta aceita? Para tanto, pode-se ignorar o primeiro 2/3 da resposta - mesmo que é o mesmo :-)
HongboZhu
Esta é a única resposta que eu vi até agora que replica o comportamento nas versões anteriores do Ubuntu (e outros linuxes), ou seja, a lista de servidores DNS é fornecida pelo DHCP e a resolução do endereço nunca é armazenada em cache localmente.
Slicedpan
2

Para mim, o caminho do Ubuntu 18.04 é:

Edite avahi conf:

sudo vim /etc/avahi/avahi-daemon.conf

e altere .local para .alocal:

[server]
domain-name=.alocal

em seguida, abra resolved.conf:

sudo vim /etc/systemd/resolved.conf

e remova o comentário e edite domínios:

[Resolve]
...
Domains=yourdomain.local
...

e finalmente reinicie os serviços:

sudo service systemd-resolved restart
sudo service avahi-daemon restart
Anton To
fonte
No meu caso eu só precisava mudar Domainsem /etc/systemd/resolved.conf(e reiniciar o serviço).
tokosh
2
Isso não fez isso por mim. ainda nada
FalcoGer
Mesma versão do Ubuntu. Usando o openvpn. Esta solução funciona bem com a VPN em muitas máquinas da minha equipe.
razvanone
2

O que funcionou para mim foi adicionar o DNS local como servidor de nomes /etc/resolvconf/resolv.conf.d/head(conforme descrito aqui ).

  1. Instale o pacote resolvconf.

    sudo apt install resolvconf
    
  2. Edite /etc/resolvconf/resolv.conf.d/heade adicione o seguinte:

    nameserver 8.8.4.4  
    nameserver 8.8.8.8  
    
  3. Reinicie o serviço resolvconf.

    sudo service resolvconf restart
    

A correção deve ser permanente.

Kevin Stevens
fonte
O arquivo principal contém um aviso para não editar o arquivo, porque é gerado pelo resolvconf?
John Mee
@JohnMee O headarquivo é a fonte usada para gerar /run/resolvconf/resolv.conf. No entanto, eu também não editaria esse arquivo.
Melebius 01/07/19
0

Minha situação era semelhante, mas um pouco diferente: usamos nomes de servidores como myserverno Windows, mas isso não funcionou no Ubuntu 16.04 e eu tive que usar myserver.mycompany.local. Após a atualização para o 18.04, obtive o seguinte comportamento:

$ ping myserver.mycompany.local
ping: myserver.mycompany.local: Name or service not known

$ ping myserver
PING myserver.mycompany.local (192.168.x.y) 56(84) bytes of data.
64 bytes from myserver.mycompany.local (192.168.x.y): icmp_seq=1 ttl=62 time=3.05 ms
...

Eu simplesmente tinha que substituir myserver.mycompany.localcom myserverem minhas aplicações.

Melebius
fonte