16.10 falha ao resolver o DNS

34

Depois de atualizar minha instalação 16.04 para 16.10, tenho problemas com o DNS.

Primeiro, tive problemas algumas vezes quando conectado ao WiFi, enquanto ele trabalhava na Ethernet. Agora parece que também funciona com WiFi. Não sei por que e se está relacionado ao problema que enfrento agora:

Ao conectar-se a um host VPN com o Cisco Anyconnect VPN , ele adiciona uma linha em '/etc/resolv.conf' . Eu entendo que o Ubuntu agora está usando systemd-resolve , e a página de manual diz que existem três modos diferentes para lidar com o /etc/resolv.conf. Meu /etc/resolv.conf não é um link simbólico e não lista 127.0.0.53 como um servidor DNS, pelo que entendi que systemd-resolved deveria "lê-lo para obter dados de configuração de DNS". No entanto, parece não se importar com isso.

escavação

O estranho (para mim) é que dig host.customer.tld, retorna uma boa resposta com uma seção de resposta mostrando o ip do host solicitado e refere-se ao servidor DNS adicionado ao /etc/resolv.conf pelo cliente vpn como servidor. Quando a conexão VPN está desativada, não recebo resposta. Ou seja, dig lê /etc/resolv.conf .

ping

O navegador, por outro lado, não acessa o /etc/resolv.conf e não consegue resolver o nome do host. Nem é ping / curl, a propósito.

nmcli

Encontrei uma postagem relacionada e tentei executar

nmcli device show <interfacename> | grep IP4.DNS

mas não lista nenhum DNS para o dispositivo cscotun0. (Também não está no 16.04.) Além disso, o nmcli lista meu servidor dhcp (meu roteador) como host IP4.DNS para minhas conexões eth / wlan. Usar dig @192.168.0.1 xxxpara qualquer domínio público funciona bem.

configuração

Existem alguns outros servidores DNS listados em meu /run/systemd/resolve/resolv.conf:

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 2001:4860:4860::8888
# Too many DNS servers configured, the following entries may be ignored.
nameserver 2001:4860:4860::8844

Estes não são servidos pelo meu servidor DHCP. o arquivo /etc/systemd/resolved.conf contém apenas linhas comentadas, exceto o cabeçalho da seção:

[Resolve]
#DNS=
#FallbackDNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

A página de manual do resolved.conf diz que

DNS = Uma lista separada por espaços de endereços IPv4 e IPv6 para usar como servidores DNS do sistema. ... Por motivos de compatibilidade, se essa configuração não for especificada, os servidores DNS listados em /etc/resolv.conf serão utilizados, se esse arquivo existir e se houver algum servidor nele configurado. Essa configuração é padronizada para a lista vazia.

FallbackDNS = Uma lista separada por espaços de endereços IPv4 e IPv6 a serem usados ​​como servidores DNS de fallback. Qualquer servidor DNS por link obtido no systemd-networkd.service (8) tem precedência sobre essa configuração, assim como qualquer servidor configurado via DNS = acima ou /etc/resolv.conf. Essa configuração é usada apenas se nenhuma outra informação do servidor DNS for conhecida. Se essa opção não for fornecida, uma lista compilada de servidores DNS será usada.

Parece que o fallback acaba em /run/systemd/resolve/resolv.conf no meu caso.

EDIT: Eu não tinha certeza de qual era o problema e, para ser sincero, ainda não sei exatamente como isso funciona, mas pelo menos aconteceu que a solução no meu caso era desativar o systemd-resolvedserviço. Eu pensei que esse serviço era necessário, que era o componente que fornecia o serviço DNS para todos os aplicativos locais, mas aparentemente há algo mais lá fazendo esse trabalho.

aweibell
fonte
Você tem algum problema com o DNS se não estiver usando a VPN?
Mark Stosberg
Você tentou esta solução para os problemas de AnyConnect em 16.04 que podem se aplicar?
Mark Stosberg 19/10/19
3
Só queria observar que estou enfrentando exatamente os mesmos problemas com o Anyconnect na 16.10. A conexão múltipla ao serviço VPN parece corrigi-lo temporariamente, mas em algum momento o DNS não está mais funcionando novamente.
precisa
2
Tenho problemas de resolução de DNS semelhantes que não estavam presentes no 16.04. Minha sugestão é começar removendo (backup) /etc/resolv.conf; desinstalar o pacote resolvconf; reiniciar; e use dig, systemd-resolve com e sem VPN para ver o que está funcionando ou não.
philcolbourn
11
Compare este relatório de bug: bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317
jdthood 21/10/16

Respostas:

15

Eu tive problemas semelhantes, por exemplo, com a adição de um dongle USB USB extra. Primeiro, desativei o dnsmasq no networkmanager, conforme descrito acima, e parei o dnsmasq (service dnsmasq stop)

Percebi que, ao resolver quebras durante a conexão da VPN, a tabela de roteamento parece um pouco diferente (comando output of route). O nome do gateway é DD-WRT no caso de não funcionar e simplesmente 'gateway' quando funciona. A saída disso não mudou:

nmcli device show wlp1s0 | grep IP4.DNS

Ele continuava mostrando o IP do meu roteador. Uma solução alternativa para fazê-lo funcionar por um tempo é reiniciar o systemd-resolvd:

sudo service systemd-resolved restart

Como o dnsmasq está fora da equação, é systemd-resolvd a causa do problema ou qualquer coisa que altere a tabela de roteamento.

Portanto, esta é a única diferença que vejo:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         gateway         0.0.0.0         UG    601    0        0 

que funciona E isso quando não funciona:

ubuntu@ubuntu-Lenovo-Yoga-2-11:~$ route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         DD-WRT          0.0.0.0         UG    601    0        0 wlp1s0

E a mesma diferença de nome na linha de VPN:

vpn-dns.name gateway         255.255.255.255 UGH   0      0        0 wlp1s0

Quem sabe o que pode influenciar a tabela de roteamento? Seria ótimo se pudéssemos identificar isso para que um relatório de bug possa ser arquivado. Estou ficando muito doente e cansado de procurar todos esses bugs, mas gostaria de corrigi-los para que futuros usuários e nós fiquemos felizes :).

[atualização] Parece que parar o systemd-resolved pode corrigir isso e não afetar negativamente outras coisas. Você pode tentar isso e informar se quebra alguma coisa. Eu vi ao executar systemd-resolvd na depuração quando ele quebrou:

Removing scope on link wlp1s0, protocol llmnr, family AF_INET
Removing scope on link wlp1s0, protocol llmnr, family AF_INET6
Removing scope on link *, protocol dns, family *

Desabilitar:

sudo systemctl disable systemd-resolved.service

Eu atualizei o relatório do Ubuntu com sugestões. [/ update] Add: Note: o relatório de bug: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1624317 possui um patch para 17.04 para alguns problemas. Por favor, verifique o relatório de erros e, se possível, teste o patch. Obrigado!

[atualizar]

Por favor, verifique o relatório de bug mencionado acima, o problema parece ter sido resolvido para 17.10 e com um comando simples, o vazamento de DNS também pode ser desativado.

[/atualizar]

Vincent Gerris
fonte
Obrigado pelo seu relatório completo! Vejo alterações diferentes na tabela de roteamento que você - minha VPN parece adicionar muitas rotas, dinamicamente enquanto elas estão sendo usadas, suspeito. No entanto, desabilitar o systemd-resolved também funcionou muito bem para o meu problema!
aweibell
Acho que, eventualmente, o nome na tabela de roteamento não importou, foi resolvido pelo sistema, atrapalhando o DNS de alguma forma. Eu também tive que desativar o serviço dnsmasq para impedir que ele fosse iniciado, mas tudo funciona agora. Vamos esperar que alguém conserte o conjunto adequado de dependências entre os pacotes necessários para que tudo funcione corretamente. É um bug tão irritante de se lidar.
Vincent Gerris
vale a pena notar que lutei por um dia inteiro com esse problema, reiniciar o serviço resolvido pelo systemd não fez nada por mim, mas desativá-lo completamente e sem problemas!
precisa saber é
Apenas para reiterar, tive problemas de rede por vários dias desde a atualização para 17.04, de 16.10. Tentei a maioria das respostas aqui, a maioria trabalha por um tempo e, em seguida, surge o problema novamente. O que finalmente funcionou foi desabilitar o systemd-resolved usando sudo systemctl disable systemd-resolved.service e configurando o DNS a 8.8.8.8 em /etc/resolv.conf
Jafé Ongeri - inkalimeva
Esta linha simples resolveu para mim: sudo service systemd-resolved restart, obrigado!
Sergio Abreu
36

O comportamento do DNS durante a conexão OpenVPN melhorou imediatamente quando segui uma sugestão no ubuntuforums:

  1. Abra /etc/NetworkManager/NetworkManager.confem um editor com direitos de root.
  2. Exclua (ou comente com um hash #) a linha que lêdns=dnsmasq
  3. Reinicie o NetworkManager via sudo service NetworkManager restart
krlmlr
fonte
Obrigado. Tentei isso agora, mas não funcionou. Na verdade, o DNS está funcionando bem, exceto quando inicio o Cisco VPN Client, que substitui o link simbólico /etc/resolve.conf por um arquivo de texto sem formatação.
aweibell
11
Essa correção funcionou para mim, eu estava tendo problemas de DNS com o OpenVPN. Após essa alteração, meu /etc/resolve.conf mudou. É muito estranho, pois nem tenho o dnsmasq instalado.
Postfuturist
Isso pode funcionar para problemas com o NM e o openvpn, mas pelo menos diminui a velocidade das conexões. Como se adivinha aqui .
BairDev 06/04
3

Ocorreu o mesmo problema. De alguma forma, eu devo ter instalado o DNSmasq com algum aplicativo. A simples remoção do dnsmasq resolveu o problema para mim.

sudo apt-get remove dnsmasq 

Desde então, não há mais desconexões ou alguns sites não conseguem mais carregar (eu tive um problema ao carregar o gmail, ou seja, de repente ele não conseguia se conectar ao gmail, embora outros sites funcionassem).

Nitai
fonte
Ao tentar remover dnsmasq-base de pacote, aptidão diz-me que é exigido pelo network-manager e ubuntu-fã , e removê-lo irá resultar em um monte de pacotes adicionais que estão sendo removidos ..
aweibell
Que distribuição e versão? Estou no Ubuntu 16.10 e não tive problemas para removê-lo. Então eu não teria postado :)
Nitai
Eu também estou no Ubuntu 16.10! Estranho. apt remove dnsmasq-base...The following packages will be REMOVED: account-plugin-ubuntuone checkbox-converged checkbox-gui dnsmasq-base indicator-network network-manager network-manager-gnome network-manager-openconnect network-manager-openconnect-gnome network-manager-openvpn network-manager-openvpn-gnome network-manager-pptp network-manager-pptp-gnome network-manager-vpnc pay-service plainbox-provider-checkbox plainbox-provider-resource-generic ubuntu-desktop ubuntu-fan ubuntu-push-client ....
aweibell
O mesmo aqui com 16.10. Ele quer remover todos os outros pacotes também.
Dave Kincaid
Acabei de me desconectar novamente no outro dia. De alguma forma, um aplicativo deve ter reinstalado o dnsmasq novamente. De qualquer forma, desta vez eu simplesmente o desativei com o systemd. Até agora, ele não está mais funcionando e eu também não tenho desconexões.
Nitai
1

Editar /etc/nsswitch.confe alterar

hosts:          files mdns4_minimal [NOTFOUND=return] dns

para

hosts:          files dns mdns4_minimal [NOTFOUND=return]

Editar:

Eu tenho os mesmos problemas há algum tempo. Consegui resolver nomes de domínio da VPN, mas não consegui fazer ping ou curvar esses nomes ou usá-los em outros aplicativos. A alteração descrita acima resolveu isso para mim.

Amigo
fonte