As pesquisas de DNS resolvidas pelo systemd do Ubuntu 17.04 falham aleatoriamente

38

Atualizei para o Ubuntu 17.04 e parece que agora existe um novo mecanismo de resolução de DNS introduzido pela primeira vez no Ubuntu 16.10.

Agora estou recebendo falhas de pesquisa de DNS 50% das vezes. Todas as outras chamadas para nslookup estão falhando, com metade das chamadas resolvendo bem e metade dando o seguinte:

watch -n 1 nslookup google.com

Server:     127.0.0.53
Address:    127.0.0.53#53

** server can't find google.com: SERVFAIL

Pelo que entendi, esse endereço IP do servidor DNS agora é usado para representar resolvido pelo sistema, o que faz algum tipo de meta pesquisa para evitar consultas DNS mais lentas (ou algo assim ...). Estou vendo exatamente o mesmo comportamento em duas máquinas que atualizei para 17.04 na semana passada.

Alguma idéia de qual é o problema aqui e a maneira correta de resolvê-lo?

As coisas estavam funcionando bem antes da atualização (de 16.04 ou 16.10, não me lembro qual, desculpe). Eu pensei que o 17.04 foi um lançamento LTS, mas agora vejo que pulei a arma e ela não será considerada estável até abril. Então aqui estou.

Também é importante notar que os navegadores não parecem apresentar problemas, mas nslookup, ping, git, etc.

humor
fonte
2
Dica para o futuro: as versões do Ubuntu são o ano em que será lançado .no mês em que será lançado. (Assim, no seu caso, será em 04/ 17)
timotree
Parece que a resolução do sistema, ficando crowbarred em distribuições, também está causando problemas para outras pessoas .
Moodboom 8/12/16

Respostas:

46

O Ubuntu 17.04 não pode resolver servidores DNS com suporte a DNSSEC a partir de 18/04/2017. Desative o DNSSEC com este daemon:

sudo mkdir -p /etc/systemd/resolved.conf.d
printf "[Resolve]\nDNSSEC=no\n" | sudo tee /etc/systemd/resolved.conf.d/no-dnssec.conf

Opcionalmente, reconfigure o resolvconf se você mexeu com ele (diga sim para "preparar /etc/resolve.conf para atualizações dinâmicas?"):

sudo dpkg-reconfigure resolvconf

Reinicie o systemd-resolved:

sudo systemctl restart systemd-resolved

Seu DNS deve começar a funcionar. Você pode verificar tentando systemd-resolve www.google.come vendo uma resposta.

Sajad Bahmani
fonte
Obrigado pela resposta - você pode explicar o que faz?
precisa saber é o seguinte
O Ubuntu 17.04 não pode (até aqui) resolver o servidor DNS com suporte ao DNSSEC. Desabilito o DNSSEC com este daemon.
Sajad Bahmani 18/04/19
Obrigado, você pode editar essa explicação na sua resposta? :)
bertieb
Essa solução não funcionou para mim - depois de definir isso, ainda assim, sempre que faço uma pesquisa pela primeira vez, recebo um erro SERVFAIL, após algumas tentativas, ela é bem-sucedida e o resultado é armazenado em cache.
Guss
11
@SamuelL. em relação ao tee, é apenas uma maneira elegante de imprimir algo e enviá-lo para um arquivo ao mesmo tempo. Normalmente, você pode redirecionar a saída para um arquivo com> [o caractere maior que], mas não verá a saída. Tee permite ir para os dois lugares. O Resolvconf "configura resolver".
Moodboom 5/09
12

Eu estive alternando entre o resolvido pelo systemd e o gerenciamento /etc/resolv.conf manual e não achei o mecanismo de resolução de DNS do systemd ainda estável.

Aparentemente, há pelo menos um bug libnss no Ubuntu 16.10 e aparentemente ainda no 17.04. Há muitas pessoas com problemas de DNS desde que o Ubuntu 16.10 ativou a resolução do sistema, aqui está uma análise e aqui está a solução alternativa de outra pessoa. Nenhum deles funcionou para mim até eu substituir manualmente o /etc/resolv.conf pelos servidores DNS do Google.

nameserver 8.8.8.8   << or another if you don't trust google
nameserver 8.8.4.4

Esta é uma solução perfeitamente válida , se você não precisar de configuração dinâmica de DNS. Apenas certifique-se de parar e desativar o systemd-resolved:

sudo systemctl disable systemd-resolved.service
sudo service systemd-resolved stop
humor
fonte
Alterar para resolveconf não ajudou no meu problema. Como volto a usar o systemd-resolved? (Obrigado)
Edward Moffett
11
Tente:systemctl enable systemd-resolved.service && systemctl start systemd-resolved.service
moodboom
11
Cara, você acabou de salvar um sistema !! BRAVO
revolucionário
Funcionou bem em 18.04
André M. Faria
4

O Ubuntu 17.04 e outras distribuições estão adotando o systemd, que inclui resolvido pelo systemd, que submete os usuários a uma resolução de DNS bastante pesada.

  • Conforme mencionado na resposta SjB, o suporte ao DNSSEC pode causar problemas.
  • O systemd-resolved envia todos os resolvedores de DNS para que ele possa usar o mais rápido. Isso pode causar problemas com VPNs etc. em ambientes mais complexos.
  • Os certificados do servidor DNS são verificados. Ocorreu um erro se meu relógio estiver inclinado.

Eu não acho que é necessariamente uma mudança ruim, é apenas muita mudança. Tentarei atualizar e expandir esta resposta à medida que aprender mais.

humor
fonte
4

Simplificando, você só precisa ter a linha "DNSSEC = no" na seção [Resolve] do /etc/systemd/resolved.conf.

https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1682499/

John Ball
fonte
Obrigado pelo link do bugfix. O padrão será alterado novamente para DNSSEC = no nas próximas atualizações, o que fará com que esse problema específico desapareça.
Moodboom 6/09
1

basta adicionar o servidor de nomes /etc/systemd/resolved.conf DNS = 194.109.xxx.xxx (no seu roteador, servidor de nomes externo)

systemctl restart systemd-resolved

não é necessário alterar o rand de 3 para 2, não é necessário alterar a configuração do dnssec para off

Henk
fonte
Infelizmente, isso por si só não resolve o problema "todos os outros pedidos falham" para mim.
Moodboom
Concordo com @moodboom, isso também não me resolve.
André M. Faria