Dizemos-lhe quais são os testes a fazer e quais as operações a executar quando o servidor DNS não responder e estiver num cliente Microsoft Windows.
O DNS (Domain Name Service) é um padrão definido pela IETF (Internet Engineering Task Force) que, sendo um serviço, permite que computadores clientes (tanto máquinas clientes como servidores) pertencentes a um domínio se registem e resolvam nomes. Por outras palavras, este serviço é responsável por fornecer a tradução de IPs para nomes de domínio, ou seja, fornecer nomes mais fáceis de aprender que o IP e vice-versa.
Os três componentes básicos do serviço DNS são:
- Servidor (ou Servidores) DNS: Computadores servidores que têm a função DNS e oferecem o serviço de resolução de nomes para um espaço de nomes de domínio. São responsáveis por resolver em ambas as direções e garantir que os serviços de domínio funcionem corretamente através da resolução do FQDN (Fully Qualified Domain Name).
- Espaço de nomes de domínio: Basicamente, contém os registos de recursos associados ao espaço DNS.
- Clientes DNS: Computadores que ligam ao serviço de resolução de nomes fornecido pelos servidores DNS para obter as traduções de que precisam para operar.
Dentro desta arquitetura, vamos concentrar-nos nos problemas detetados na parte de Clientes DNS, onde veremos uma série de problemas relacionados com o clássico “Servidor DNS não responde” que todos tivemos de sofrer uma vez ou outra.
Os processos que serão descritos neste artigo são operacionais para sistemas cliente Windows 7, Windows 8, Windows 8.1, Windows 10 ou Windows 11, além de poderem ser aplicados a computadores Windows Server que sejam clientes de outra infraestrutura DNS .
O que podemos fazer quando o Servidor DNS não responde?
Verificação de status do DNS:
Uma das coisas que devemos saber é como podemos verificar o estado do nosso serviço DNS, além de fazer consultas via web e verificar se carrega corretamente ou não, algo que é funcional mas não muito “elegante”.
O mais normal é que façamos consultas a partir da linha de comandos (CMD) ou do console do PowerShell (não abordado neste artigo), o que nos permitirá executar alguns comandos adicionais. Por enquanto, vamos ver os comandos básicos que podemos usar e como usá-los, através de alguns exemplos.
Os comandos que podemos usar para verificar o status do DNS são:
- Ipconfig.
- Nslookup.
- Ping (mas pouco).
- Outros comandos.
O comando “ipconfig”:
O primeiro comando que vamos ver é o nosso velho amigo “ipconfig”, um comando que nós, administradores de sistemas, usamos ad nauseam, e que aqueles entre nós que vêm do mundo UNIX (ou GNU/Linux) tendem a confundir com “ ifconfig”, seu homónimo do mundo UNIX.
Com o comando ipconfig podemos fazer várias configurações e verificações de todos os tipos, mas agora, como estamos focados no DNS, vamos lidar apenas com os comandos relacionados com este serviço.
Para começar, podemos usar o comando “ipconfig /displaydns” para ver a cache do cliente DNS no qual estamos a executar o comando.
Imagem. Execução de ipconfig para exibir o DNS
O comando, como mencionamos, mostra o conteúdo da cache do cliente, incluindo tudo o que foi carregado do próprio serviço e o que está carregado no caminho “C:\Windows\System32\drivers\etc\hosts” , que verá frequentemente referenciado na documentação como “%systemroot%\system32\drivers\etc\hosts”, pois “%systemroot%” representa a string “C:\Windows\”.
Imagem. Exemplo de conteúdo de ficheiro host de cliente Windows
O conteúdo do ficheiro host é consultado, juntamente com a cache DNS existente no computador, antes de iniciar a consulta ao servidor de nomes de domínio.
Na segunda parte deste artigo veremos outros usos do “ipconfig” para resolver problemas relacionados com a resolução de nomes.
O comando “nslookup”:
O próximo comando que podemos usar para verificar o status do serviço de resolução de nomes (DNS) é “nslookup”. É um comando amplamente utilizado para enviar pedidos de uma máquina cliente para um servidor e assim poder ver se o pedido foi resolvido corretamente, fornecendo também um grande volume de informações adicionais sobre o serviço.
O comando pode funcionar em dois modos:
- Modo não interativo: É o modo de execução em que indicamos os parâmetros junto com o próprio comando, sendo ideal para consultas únicas e para serem integrados em scripts.
- Modo interativo: É o modo de execução em que lançamos o comando “nslookup” para depois lançar os parâmetros a serem verificados. É o mais usado para tarefas de troubleshooting.
Vamos ver as duas opções fazendo uma consulta para resolver: www.google.com.
Para usar o modo não interativo, iniciaremos o seguinte comando:
# nslookup www.google.com
Para usar o modo interativo, iniciaremos o seguinte comando:
# nslookup
Em seguida, devemos entrar no servidor ou domínio através do qual consultamos:
www.google.com
Como resposta para ambos os casos, podemos ver que o sistema nos informa de uma série de coisas:
- Resposta não autoritativa: Indica que são informações recebidas de um DNS externo à nossa organização.
- Nome: Fornece o nome do servidor.
- Addresses: Fornece informações sobre endereços resolvidos.
Imagem. Execução de ipconfig para exibir o DNS
Executamos o comando nslookup em ambos os modos
Existem vários parâmetros e opções que podem ser adicionados à execução e neste caso deixamos o leitor investigar.
O comando “ping”:
A última “ferramenta” que podemos usar é o clássico “ping” que também podemos usar para lançar uma consulta e ver se conseguimos chegar ao servidor DNS, porque se por algum motivo o servidor não responder ou não estiver alcançável, não poderemos fazer uso do serviço.
A maneira de usar o ping é o clássico “ping <Server_Name>” que pode ser “ping 8.8.8.8” no caso de iniciar a consulta no serviço do Google.
Outros comandos:
Há outros comandos que podem ser utilizados em determinados sistemas operativos ou algumas versões específicas. Neste caso, vamos simplesmente listá-los e fazer um breve comentário sobre cada um deles.
- Dig: Comando para consultar servidores DNS de sistemas GNU/Linux ou MacOSX.
- Netdiag: Comando usado para consultar vários serviços, incluindo DNS. Foi descontinuado desde as versões do Windows Server 2008.
- DNSList: Ferramenta utilizada para diagnosticar problemas no serviço DNS. Foi descontinuado nas versões do Windows Server 2008. Há uma versão para download.
- PowerShell: Como sempre defendemos, com o PowerShell temos tudo o que precisamos para gerir e solucionar problemas de todos os serviços, mas deixaremos isto para outro artigo, dada a profundidade do tema.
Operações para resolver os problemas quando o servidor DNS não responde:
Limpar a Cache DNS:
Para limpar a cache DNS, podemos usar o comando “Ipconfig” com “/flushdns”, que esvazia e limpa a cache de resolução de nomes do cliente.
Este comando limpa todas as entradas que foram adicionadas dinamicamente à nossa cache DNS, ou seja, tudo que vimos quando lançamos o comando “ipconfig /displaydns”. A parte positiva é que possivelmente eliminaremos entradas corrompidas ou que estão a causar problemas. A parte má é que todas as entradas são eliminadas, incluindo as corretas. Mas não há problema, pois elas serão reconstruídas.
A maneira de usá-lo é muito simples, e bastará iniciar o comando da seguinte forma:
# ipconfig /flushdns
Imagem. Limpamos a cache DNS do cliente Windows.
Uma vez que a cache DNS do nosso cliente tenha sido limpa, devemos iniciar o registo novamente. Isto é útil para solucionar determinados problemas e para carregar as informações do serviço DNS no cliente, se necessário, como quando fazemos uma alteração na configuração e queremos ter a certeza de que a configuração foi carregada corretamente e que não surgirá nenhum problema.
Para realizar esta operação e registar novamente o DNS, utilizaremos novamente o comando “ipconfig”, mas desta vez com a chave “/registerdns”, que realizará esta operação sem a necessidade de reiniciar o computador.
Este comando seria lançado da seguinte forma:
# ipconfig /registerdns
Imagem. Registamos o DNS do cliente Windows outra vez.
NOTA: Sim, nesta ocasião poderíamos usar o clássico “já tentou reiniciar o computador e tentar outra vez?”, mas preferimos tentar tornar a operação o mais “elegante” possível, por isso deixamos o reboot como último recurso.
Este comando é executado indiscriminadamente em todas as interfaces de rede, portanto no caso de executar “ipconfig /registerdns”, este será lançado em todas as placas. Se quiser trabalhar apenas com uma das placas, pode adicionar o modificador “CARD_NAME” ao comando , executando-o da seguinte forma:
# ipconfig /registerdns CARD_NAME
Solicitar nova concessão de IP para interfaces com DHCP:
Outro comando que podemos usar, ou melhor, outra variação de “ipconfig” é o comando “ipconfig /release” que liberta manualmente a atribuição de IP do protocolo IPv4 da placa na qual esta operação é realizada ou de todas, se não se especificar nada. Isto é conseguido ao enviar uma mensagem DHCPRELEASE ao servidor que fornece DHCP na rede e do qual obteve a reserva anteriormente.
Isto faz com que todas as configurações de rede sejam limpas, o que permitirá que todas as configurações sejam reatribuídas novamente, sem arrastar falhas anteriores, caso existam.
A execução deste comando com este parâmetro específico faz com que o protocolo TCP/IP seja desabilitado e não seja feita uma solicitação de atribuição de IP, por isso, geralmente é executado em conjunto com o comando “ipconfig /renew”.
A execução neste caso, conforme mencionado anteriormente, seria a seguinte:
# ipconfig /release
Imagem. Libertamos a atribuição de IP do cliente Windows
Existe também uma versão para IPv6 que faz a mesma função, mas neste protocolo a sintaxe é “ipconfig /release6”.
Por fim, dentro dos comandos “ipconfig”, temos o comando “ipconfig /renew”, que nos permite fazer uma solicitação para renovar a concessão de IP para o protocolo IPv4. Como no caso do comando anterior, este comando afetará todas as interfaces se não tivermos definido uma interface específica. Outra coisa que devemos ter em conta é que, como no caso de “/release”, isto afetará apenas as interfaces com atribuição de endereço IP dinâmico, portanto, se o iniciarmos numa interface com IP fixo, este comando não fará nenhum tipo de operação.
A forma de executar o comando é:
# ipconfig /renew
Imagem. Renovamos a atribuição de IP do cliente Windows
Para executar este comando numa interface IPv6, devemos adicionar o comando “/renew6”.
# ipconfig /renew6
NOTA: Sabemos que o comando “ipconfig” tem muitas opções, e é mais do que provável que não as conheçamos todas, portanto devemos lembrar que podemos usar o “/?” para obter informações sobre as diferentes opções e exemplos.
Alteração do DNS padrão:
Caso as operações que estamos a realizar não consigam reverter o problema, pode optar por alterar o DNS padrão, aquele que está a ser utilizado pelo cliente e que está a causar falhas de conexão. Isto pode ocorrer em algumas situações, como estes três exemplos:
- Um servidor DNS está a dar algum tipo de problema, então devemos alterar o servidor para o qual os clientes apontam.
- Outro caso pode ser que o serviço DHCP que fornece os dados esteja a fornecer dados errados aos clientes.
- Alguns erros de Domain Controller fazem com que os comportamentos das máquinas sejam errados.
Para todos eles, podemos adotar a seguinte operação e modificar o DNS manualmente para ver se o problema se resolve desta forma, embora seja necessário estudar cada um dos casos expostos para eliminar a causa raiz (problema) que está a gerar estes incidentes.
A primeira coisa que devemos fazer é aceder à configuração da rede. Podemos fazê-lo de diferentes maneiras, como ir ao “Painel de Controlo“, mas neste caso vamos clicar com o botão direito no ícone de conexão de rede e depois selecionar a opção “Configurações de rede e Internet“.
Imagem. Abrimos as configurações de rede e Internet
Isto abrirá uma janela de configuração onde devemos verificar se estamos no separador “Ethernet” e clicar em “Alterar opções de adaptador”.
Imagem. Acedemos às propriedades da interface de rede que queremos modificar
Neste ponto, selecionamos a opção “Protocolo de Internet versão 4 (TCP/IP)” com um clique em “Propriedades”.
Imagem. Selecionamos a opção IPv4 da interface de rede que queremos modificar e clicamos em Propriedades
Com a janela de configuração “propriedades do protocolo de internet versão 4 (TCP/IPv4)”, deve-se editar o servidor DNS preferencial e substituí-lo pelo novo servidor DNS, fazendo o mesmo com o servidor DNS alternativo se necessário.
Imagem. Modificamos o servidor ou servidores DNS para os quais o cliente aponta
Assim estaria terminada esta operação e as alterações deveriam guardar-se automaticamente. Podemos verificar isto com o comando “nslookup”.
Desativar Protocolo IPv6:
Às vezes, podemos encontrar alguns problemas derivados de problemas de encaminhamento ou similares, e pode ser necessário desabilitar o uso do protocolo IPv6, se este não estiver a ser usado, claro.
Para desativar o IPv6 numa interface de rede, seguiremos o seguinte processo.
Para aceder às configurações, faremos o mesmo processo que fizemos no caso anterior para alterar o DNS, pelo menos até que tenhamos a interface selecionada e estejamos a editar as suas propriedades.
Em seguida, procuramos a opção “Internet Protocol version 6 (TCP/IPv6)” e desmarcamos a caixa de seleção para desativá-la.
Imagem. Desativamos a opção IPv6 da interface de rede que queremos modificar
Depois disto, em princípio, a opção IPv6 deve ficar desativada e os problemas que essa opção pode causar devem ficar resolvidos.
Caso a configuração não surta efeito, ou não notemos uma melhora, podemos tentar clicar com o botão direito na interface e selecionar a opção “Desativar” para repetir a opção novamente e clicar em “Ativar“, forçando desta forma para que as alterações tenham efeito.
Imagem. Desativamos e reativamos a interface de rede que queremos modificar
E assim teríamos a operação realizada.
Conclusões
Ao longo deste artigo apresentamos uma série de verificações e operações para atacar o problema do que fazer quando um servidor DNS não responde a solicitações de máquinas clientes para um espaço de resolução de nomes.
Como sempre, devemos dizer que aqui não estão todas as possíveis causas ou operações para resolver os problemas, mas trata-se apenas de um pequeno compêndio de testes que podemos fazer para resolver este tipo de incidentes. Deixamos de lado, por exemplo, o uso do PowerShell, que poderá ser abordado num artigo posterior.
Da mesma forma, também recomendamos que, além das operações aqui assinaladas, seja realizada uma manutenção proativa da infraestrutura, especialmente a de Controladores de Domínio e Servidores DNS, pois manter estes serviços em condições vai poupar-nos muito tempo, esforço e sustos na administração da nossa organização, ou dito de outra forma: “é melhor prevenir do que remediar”.