Problemas de resolução DNS no linux ? Aprenda a resolver.

Compartilhe:

Monitor exibindo terminal lcom comandos para resolver problemas de resolução dns no linux

Enfrentando problemas de resolução DNS no linux ?

Normalmente os erros são percebidos ao tentar atualizar o sistema, testar conexões via ping ou acessar um site.

Quando o dns não funciona no linux a capacidade de resolver nomes dns (como google.com) em um endereço IP é perdida, interrompendo a comunicação com a rede local ou com a internet de forma completa.

Neste artigo, você vai aprender exatamente o que causa esses problemas de resolução DNS no linux e, mais importante, como diagnosticá-los e corrigi-los passo a passo.

Pré-requisitos:

Durante o artigo é necessário que tenha:

  • Privilégios do usuário root ou use o comando sudo.
  • Conexão com a internet.

Após ter esses pré-requisitos pode prosseguir com a leitura.

Problemas de resolução DNS no linux

O DNS (Domain Name System) é responsável por converter nomes de domínio (exemplo: ftp.debian.org) em endereços IP. Quando essa conversão falha, não é possível localizar o endereço IP e estabelecer uma conexão e o linux pode exibir mensagens de erro.

Por exemplo, ao tentar atualizar a lista de pacotes ou instalar um novo programa via gerenciadores de pacotes, mensagens de erros como “falha temporária resolvendo” ou “Could not resolve hostname” podem ser exibidas se não for possível resolver nomes dns.

A rede de computadores pode até estar funcionando, mas a distribuição linux não consegue localizar um servidor DNS válido ou consultar corretamente esse servidor.

Para fazer o diagnostico é necessário fazer uma série de testes e verificações, como ilustrado no fluxo de trabalho a seguir:

O fluxograma da imagem será utilizado para identificar e resolver problemas de resolução DNS no linux ilustrados nessa seção e na próxima.

Erro “falha temporária na resolução de nome”

A mensagem “falha temporária na resolução de nome” ou “Nome ou serviço desconhecido” podem aparecer por problemas de resolução dns no linux ao executar o comando ping.

Os dois motivos principais que geram esse e outros problemas do lado cliente (servidor ou desktop) é a configuração errada em “/etc/nsswitch.conf” e “/etc/resolv.conf” ou nos dois arquivos, a seguir tem a explicação da finalidade deles:

  • /etc/nsswitch.conf: Define a ordem em que as aplicações do sistema obterá informações e onde encontra-las. A configuração sobre resolução de nomes dns inicia com “hosts:” seguido das databases, que é onde será buscada a informação requerida.
  • /etc/resolv.conf: Esse arquivo informa quais servidores DNS serão utilizados quando o sistema precisar fazer consultas DNS.

Como Resolver ?

Para solucionar os erros “falha temporária na resolução de nome”, “Nome ou serviço desconhecido” ou “Could not resolve hostname”, siga estes passos na ordem que são apresentados:

1º Etapa: Verifique a ordem de resolução de nomes dns no arquivo “/etc/nsswitch.conf”, confira a configuração executando:

A saída deve ser semelhante a: “hosts: files dns” (correta), essa configuração significa: primeiro o sistema consulta “/etc/hosts” e se o nome não for encontrado, consulta os servidores DNS configurados em “/etc/resolv.conf”.

A presença da entada “dns” é obrigatória para que o sistema consulte servidores DNS.

Exemplo de configuração incorreta: “hosts: files mdns4_minimal”, Nesse caso, servidores DNS nunca serão consultados. O mdns4_minimal resolve apenas nomes locais via multicast DNS (como host.local), normalmente utilizando o serviço avahi-daemon.

Se a configuração estiver incorreta: corrija o arquivo e teste novamente a resolução de nomes.

Se estiver correta: → prossiga para a etapa 2.

2º Etapa: Verifique a configuração do arquivo “/etc/resolv.conf”. Confira se existe pelo menos uma linha iniciando com: “nameserver <endereço_IP>”, exemplo: “nameserver 8.8.4.4”.

Se não existir nenhuma entrada nameserver: configure um servidor DNS em “/etc/resolv.conf” e teste novamente a resolução de nomes.

Se a configuração estiver correta, com no mínimo uma entrada nameserver: → prossiga para a etapa 3.

3º Etapa: Veja qual é o endereço IP configurado na primeira entrada nameserver do arquivo “/etc/resolv.conf“.

Caso 1: O endereço é “127.0.0.1” ou um “IP da rede local” ou “IP PÚBLICO (EX: 1.1.1.1) de outro servidor (e o sistema tem conexão com a internet)”, então → prossiga para a etapa 4.

Caso 2: O endereço é um IP PÚBLICO de outro servidor (como 1.1.1.1 ou 8.8.8.8), porém o linux não tem acesso à Internet. Nesse cenário a resolução DNS não funcionará. Primeiro resolva o problema de conectividade com a Internet e somente depois continue o diagnóstico.

4º Etapa: Teste a comunicação com o servidor DNS na porta 53 do primeiro servidor listado em /etc/resolv.conf. Exemplo de comando:

Substitua “192.168.213.145” pelo endereço IP correto do servidor DNS.

Se o servidor responder a mensagem “SERVIDOR DNS RESPONDENDO” será exibida, nesse caso indica que existe comunicação com o servidor DNS, então → prossiga para a etapa 5.

Mas, se aparecer “SERVIDOR DNS NAO RESPONDE”, há falha de conectividade com o servidor DNS, nesse caso verifique problemas relacionados a regras de firewall e roteamento que podem impedir a comunicação, e somente após corrigir o problema, teste novamente.

5º Etapa: Se o cliente linux está configurado corretamente (/etc/nsswitch.conf e /etc/resolv.conf) e há comunicação na porta 53 do servidor dns, mas mesmo assim a resolução de nomes dns continua falhando, resta checar as configurações do servidor DNS.

Se você administra o servidor faça uma verificação nas configurações e resolva o problema.

Mas, se você não administra o servidor dns, utilize outro servidor nas configurações de “/etc/resolv.conf” do cliente linux.

Após a conclusão das etapas repita a tarefa que gerou os erros para saber se continua com problemas de resolução dns no linux, caso o problema persista revise todas as etapas.

Algumas distribuições linux utilizam serviços, como systemd-resolved e NetworkManager para configurar o dns do sistema, se você alterar o “/etc/resolv.conf”, esses serviços reescreverão o arquivo automaticamente, fazendo com que os problemas de resolução DNS no linux retornem rapidamente.

Para evitar esse problema, a seguir você aprenderá a configurar tanto o NetworkManager quanto o systemd-resolved corretamente para atribuir o endereço DNS correto.

Corrigindo configuração DNS do systemd-resolved

O systemd-rsolved é um programa que algumas distros linux utilizam para resolver nomes dns para aplicações do sistema. Para saber se ele está atualizando o arquivo /etc/resolv.conf, execute o comando:

Se a saída do comando exibir “/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf”, então o systemd-resolved está mantendo /etc/resolv.conf atualizado.

Para configura-lo crie um novo diretório:

E dentro do diretório adicione um arquivo com a extensão “.conf”, no comando a seguir substitua “8.8.8.8” e “1.1.1.1” pelos servidores dns que precisar.

A opção “DNS” define uma lista de endereços IP de servidores consultados sempre que precisar resolver nomes dns.

Para aplicar as configurações reinicie o serviço systemd-resolved:

Visualize as configurações executando o comando resolvectl.

Corrigindo configuração DNS do NetworkManager

O serviço NetworkManager não gerencia o cliente dns do linux, ou seja, não resolve nomes dns, em vez disso, ele atualiza o arquivo /etc/resolv.conf.

Em sistemas baseados em Red Hat e algumas distribuições para desktop, o NetworkManager é quem configura as placas de rede. Para definir quais servidores DNS uma conexão específica do NetworkManager vai utilizar, use o comando nmcli, veja o passo-a-passo:

1. Identifique o nome da sua conexão ativa:


2. Defina os servidores DNS desejados na conexão listada no comando anterior (substituindo enp0s3 pelo nome correto da sua conexão):

3. Para desktops, force a interface a utilizar apenas os DNS configurados manualmente, ignorando os recebidos automaticamente via DHCP:

4. Aplique as configurações na conexão (desativa e ativa a placa de rede da conexão):

Ao concluir todas essas etapas de configuração do NetworkManager o arquivo /etc/resolv.conf já foi atualizado com os endereços dos servidores dns que definiu.

Mas, em alguns sistemas o NetworkManager configura o serviçosystemd-resolved” (se presente e em execução), que é utilizado para resolver nomes.

Melhores práticas para evitar problemas de resolução dns no linux

Não edite apenas o “/etc/resolv.conf” sem descobrir quem controla esse arquivo, como informado algumas distros linux utilizam serviços, como: NetworkManager ou systemd-resolved que sobrescrevem as alterações.

Sempre teste a resolução de nomes DNS quando alterar a configuração do arquivo “/etc/resolv.conf” ou em um dos serviços que configura a placa de rede, como NetworkManager ou netplan.

Outra boa prática é incluir mais de um IP de servidor dns em “/etc/resolv.conf”, assim o segundo servidor é consultado se o primeiro não responder (sofrer um timeout ou falha de conexão).

Seguindo essas recomendações, fica mais fácil identificar a origem dos problemas de resolução DNS no Linux e corrigir falhas antes que afetem aplicações e serviços.

Conclusão

Os problemas de resolução DNS no Linux geralmente estão relacionados à configuração incorreta dos arquivos “resolv.conf” e “nsswitch.conf” e servidores DNS indisponíveis.

Ao seguir o fluxo de trabalho apresentado neste artigo, você conseguirá identificar se a falha está na conectividade da porta 53 do servidor dns, na configuração de arquivos do cliente linux ou no servidor dns.

Se você ainda encontrar a mensagem falha temporária na resolução de nomes, deixe um comentário com detalhes do que está ocorrendo. Assim fica mais fácil ajudar você a encontrar a solução correta.


Perguntas Frequentes (FAQ) sobre como corrigir problemas de resolução dns no linux

Como limpar o cache de DNS no Linux ?

Dependendo do serviço de resolução dns em uso, o comando pode variar:

Para distribuições com systemd-resolved, execute: resolvectl flush-caches

Para sistemas com o serviço dnsmasq, use: systemctl restart dnsmasq

É necessário ter privilégio para executar os comandos, use o usuário root ou o comando sudo.

Qual é a diferença entre /etc/hosts e /etc/resolv.conf ?

O arquivo /etc/hosts permite mapear manualmente nomes de domínio dns para endereços IP direto na sua máquina (sem consultar a internet). Já o /etc/resolv.conf define quais servidores DNS a máquina deve consultar para resolver nomes dns não mapeados em /etc/hosts.

Como testar se um servidor DNS específico está respondendo via terminal ?

A forma mais eficiente de testar a resposta de um servidor DNS específico é usando ferramentas de diagnóstico como dig ou host. Por exemplo, para testar a resolução do Google usando o DNS do Cloudflare, execute: dig @1.1.1.1 google.com

Por que minhas alterações no /etc/resolv.conf somem após reiniciar o Linux ?

Em distribuições linux atuais, o arquivo /etc/resolv.conf costuma ser um link simbólico gerenciado automaticamente pelo serviço systemd-resolved ou ser sobrescrito por um serviço como o NetworkManager toda vez que a máquina é reiniciada.

O arquivo /etc/nsswitch.conf pode causar lentidão na resolução de nomes ?

Sim, se a ordem de resolução estiver configurada incorretamente, o sistema pode tentar consultar fontes desnecessárias antes do DNS, aumentando significativamente o tempo de resposta.

Uma configuração recomendada costuma ser: hosts: files dns

Assim, o linux verifica primeiro o arquivo /etc/hosts e somente depois consulta os servidores DNS.

Navegue por tópicos:

Foto de Edson Oliveira
Edson Oliveira

Especialista em Linux, trabalhando com TI tem experiência no gerenciamento, solução de problemas e suporte de servidores linux em ambientes corporativos.

Professor de cursos voltados a linux, tecnologias open source e certificações LPI. Possui as certificações LPIC-1, LPIC-2 e LPIC-3 (Mixed Environment).

Navegue por tópicos:

Você também pode gostar:

Deixe um comentário

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

Valorizamos sua privacidade

Utilizamos cookies para aprimorar sua experiência de navegação, exibir anúncios ou conteúdo personalizado e analisar nosso tráfego. Ao clicar no botão “Aceitar todos”, você concorda com nosso uso de cookies.

Para mais informações leia nossa Política de Privacidade.