Linux não consegue resolver DNS: causas e soluções

Se no Linux a conexão com a Internet parece estar ativa, mas os sites não abrem, ou se o acesso por endereço IP funciona enquanto o acesso por nome de domínio não funciona, o problema geralmente está na resolução de DNS. O DNS tem a função de traduzir nomes de domínio, como example.com, em endereços IP reais. Quando esse processo falha, a rede pode continuar parecendo ativa, mas o uso normal da Internet fica bastante limitado.

Sintomas comuns

  • O navegador mostra que o servidor não pode ser encontrado
  • ping 8.8.8.8 funciona, mas ping google.com falha
  • Gerenciadores de pacotes como apt, dnf, yum e pacman não funcionam corretamente
  • A mensagem Temporary failure in name resolution aparece

O que verificar primeiro

Primeiro, é preciso descobrir se o problema afeta toda a rede ou apenas o DNS.

ping -c 4 8.8.8.8
ping -c 4 google.com
ip addr
ip route

Se 8.8.8.8 responde, mas google.com não, isso indica fortemente um problema de DNS. Se nem mesmo o IP está acessível, a causa provavelmente está no Wi-Fi, na interface de rede, no gateway ou no roteamento.

Principais causas

1. Configuração incorreta em /etc/resolv.conf

Em muitos sistemas Linux, as informações dos servidores DNS ficam armazenadas em /etc/resolv.conf. Se não houver um nameserver válido ali, os nomes de domínio não poderão ser resolvidos.

cat /etc/resolv.conf

Exemplo:

nameserver 8.8.8.8
nameserver 1.1.1.1

Se o arquivo estiver vazio ou apontando para um DNS local incorreto, o problema aparecerá. Porém, em sistemas Linux modernos, esse arquivo costuma ser gerado automaticamente pelo NetworkManager ou pelo systemd-resolved, então mudanças manuais podem ser sobrescritas.

2. Problema com o systemd-resolved

Em sistemas como Ubuntu, o systemd-resolved frequentemente gerencia o DNS e usa 127.0.0.53 como resolvedor local. Se esse serviço parar, o DNS pode deixar de funcionar.

systemctl status systemd-resolved
resolvectl status

Se houver problema, reinicie o serviço:

sudo systemctl restart systemd-resolved

3. O NetworkManager não aplica o DNS corretamente

Em desktops Linux, o NetworkManager geralmente obtém informações de DNS via DHCP. Se o perfil de rede estiver corrompido ou a reconexão falhar, os servidores DNS corretos talvez não sejam aplicados.

nmcli dev show | grep DNS
nmcli connection show

Se necessário, reinicie-o:

sudo systemctl restart NetworkManager

4. Influência de VPN, proxy ou firewall

Uma VPN pode enviar requisições DNS pela rota errada, e um firewall pode bloquear a porta 53. Nesses casos, a rede parece funcionar, mas os nomes de domínio não são resolvidos.

5. Cache DNS corrompido ou desatualizado

Se o cache local estiver corrompido ou antigo, alguns domínios podem parar de funcionar. Em sistemas com systemd-resolved ou nscd, limpar o cache pode ajudar.

sudo resolvectl flush-caches

Passos práticos para resolver

Passo 1: Teste diretamente um DNS público

nslookup google.com 8.8.8.8
dig google.com @8.8.8.8

Se isso funcionar, o DNS externo provavelmente está normal, e o problema está na configuração local.

Passo 2: Defina temporariamente um DNS público

sudo sh -c 'printf "nameserver 8.8.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf'

Essa é apenas uma solução temporária. Após reiniciar ou reconectar, o arquivo pode ser alterado novamente. Para uma solução permanente, é preciso corrigir a configuração do NetworkManager, do netplan ou do systemd-resolved.

Passo 3: Verifique o netplan no Ubuntu

sudo nano /etc/netplan/*.yaml

Exemplo:

nameservers:
  addresses: [8.8.8.8,1.1.1.1]

Depois aplique a mudança:

sudo netplan apply

Passo 4: Obtenha novamente as informações do DHCP

sudo dhclient -r
sudo dhclient

Se o servidor DHCP forneceu informações erradas de DNS, isso pode ajudar.

Comandos úteis para verificação

ping -c 4 8.8.8.8
ping -c 4 google.com
cat /etc/resolv.conf
systemctl status systemd-resolved
resolvectl status
nmcli dev show | grep DNS
nslookup google.com
dig google.com
journalctl -u systemd-resolved --no-pager | tail -n 50

Como evitar que o problema volte

  • Não se limite apenas a editar manualmente o /etc/resolv.conf
  • Entenda se o DNS é gerenciado por DHCP, NetworkManager ou systemd-resolved
  • Depois de configurar uma VPN, verifique as configurações de DNS
  • Em servidores, é melhor definir claramente DNS fixos

Conclusão

Quando o Linux não consegue resolver nomes DNS, o passo inicial mais importante é verificar se a comunicação por endereço IP ainda funciona. Isso ajuda a identificar rapidamente se o problema está apenas no DNS ou em toda a rede. Depois, vale revisar de forma sistemática /etc/resolv.conf, systemd-resolved, NetworkManager, DHCP e as configurações de VPN. O objetivo não é apenas restaurar o funcionamento temporariamente, mas também entender qual componente do sistema realmente controla o DNS.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *