Mesmo com o DNS correto, o Windows pode usar uma tradução local diferente para um nome. Essa tradução vem do arquivo hosts, e uma entrada esquecida nesse arquivo pode desviar a comunicação de um único computador.
O que é o arquivo hosts
O arquivo hosts é um arquivo de texto do próprio Windows, que fica no caminho C:\Windows\System32\drivers\etc\hosts. Cada linha do arquivo associa um endereço IP a um nome, separados por espaços:
192.168.1.10 servidor-loja
As linhas que começam com o símbolo cerquilha são comentários e são ignoradas pelo sistema.
O Windows consulta o arquivo hosts antes de perguntar ao servidor DNS. Por isso, uma linha nesse arquivo tem prioridade sobre o DNS. Enquanto a linha existir, aquele computador usa o endereço indicado no arquivo, independentemente do que o DNS responder.
Quando o arquivo hosts é útil e quando vira armadilha
O arquivo hosts é útil em algumas situações:
- em redes sem servidor DNS próprio, para dar nomes aos servidores;
- em sistemas mais antigos, configurados com nomes de computadores;
- em testes, para direcionar um nome a um servidor novo antes de alterar o DNS.
O mesmo recurso vira armadilha quando a entrada fica esquecida. Se o endereço do servidor muda e a linha antiga continua no arquivo, aquele nome passa a ser traduzido para o endereço errado indefinidamente, apenas no computador que tem a linha.
O ping e o nslookup não concordam
O comando nslookup ignora o arquivo hosts, porque consulta o servidor DNS diretamente. O ping, por outro lado, usa a tradução completa do Windows, que inclui o arquivo hosts. Essa diferença produz uma situação que parece impossível. Em um computador cujo arquivo hosts ainda tem uma linha antiga, criada quando o servidor da loja usava o endereço 192.168.1.73, o resultado é o seguinte:
ping servidor-loja: exibe o endereço192.168.1.73, vindo do arquivo hosts;nslookup servidor-loja: mostra o endereço192.168.1.10, vindo do DNS.
Como editar o arquivo hosts
O arquivo hosts só pode ser alterado com permissão de administrador. Para editá-lo, o Bloco de Notas é aberto como administrador, e o arquivo é salvo sem extensão. Um arquivo salvo como hosts.txt é ignorado pelo Windows. Em geral, a alteração vale imediatamente, e o comando ipconfig /flushdns apaga respostas antigas que ainda estejam guardadas no cache de DNS.
No suporte
Quando o ping e o nslookup mostram endereços diferentes para o mesmo nome, convém abrir o arquivo hosts. Depois de uma troca de servidor, entradas antigas nesse arquivo são uma causa real do sintoma em que alguns computadores funcionam e outros não.
Para guardar
- O arquivo hosts tem prioridade sobre o DNS.
- O comando nslookup não lê o arquivo hosts, e o ping lê.
- Entradas antigas no arquivo hosts mandam a comunicação para o endereço errado, apenas no computador que as contém.
- O arquivo hosts é editado com permissão de administrador e salvo sem extensão.
O comando ping servidor-loja exibe o endereço 192.168.1.73, mas o comando nslookup servidor-loja mostra o endereço 192.168.1.10. Qual é a explicação mais provável?
Uma entrada antiga no arquivo hosts. O ping usa a tradução do Windows, que inclui o arquivo hosts, enquanto o nslookup consulta o servidor DNS diretamente.
Um técnico acrescentou uma linha ao arquivo hosts, mas o Windows continua ignorando a entrada. Qual é uma causa comum?
O arquivo pode ter sido salvo com a extensão txt, como hosts.txt, ou em outra pasta, por falta de permissão de administrador. O Windows lê apenas o arquivo chamado hosts, sem extensão, na pasta etc.