A limpeza do cache DNS local pode solucionar erros de HTTP e protegê-lo contra falsificação de DNS. Veja como você pode fazer isso no Linux.

Quando você acessa um site usando seu nome de domínio, seu sistema envia uma solicitação a um servidor DNS para obter o endereço IP desse domínio. Este par de endereços IP de domínio é salvo no cache DNS para uso posterior, para que você não precise enviar solicitações ao servidor DNS todas as vezes para fazer uma conexão.

Mas, às vezes, o cache DNS local é corrompido e causa erros de HTTP. Felizmente, liberar e reconstruir o cache DNS em um computador Linux é simples. Veja como fazer isso.

Por que liberar o cache DNS no Linux?

Existem vários motivos pelos quais você pode querer reconstruir o cache DNS armazenado em seu sistema. Talvez você tenha um registro DNS desatualizado para um site e queira buscá-lo novamente no servidor DNS. Ou talvez seu sistema tenha sido comprometido e você deseja garantir que o cache DNS não tenha sido adulterado, também conhecido como falsificação de DNS.

Quando você libera seu cache DNS, o sistema precisa fazer ping no servidor DNS novamente e obter o novo registro de endereço IP de domínio dele, removendo todos os dados desatualizados ou comprometidos no processo.

Como visualizar o cache DNS local no Linux

Antes do systemd, a maioria das distribuições Linux não tinha cache DNS em todo o sistema, a menos que um programa como dnsmasq ou nscd fosse configurado manualmente. systemd vem com systemd-resolved, um serviço que resolve nomes de domínio para endereços IP e armazena em cache as entradas DNS.

As seções a seguir irão orientá-lo sobre como visualizar o conteúdo do cache DNS gerado pelo systemd-resolved, nscd e dnsmasq, para que você possa entender os dados em cache antes de decidir liberá-los.

Exibir cache DNS para resolvido pelo systemd

Para visualizar os registros de cache resolvidos pelo sistema, você precisa primeiro encerrar temporariamente o serviço e, em seguida, exportar seus logs para um arquivo.

Comece enviando um sinal SIGUSR1 para matar o serviço resolvido pelo systemd:

sudo killall -USR1 resolvido pelo sistema

Usar o comando journalctl e o operador de saída padrão para salvar a saída em um arquivo de texto:

sudo journalctl -u systemd-resolved > ~/cache.txt

Você pode visualizar o conteúdo do arquivo usando um editor de texto como o Vim:

vim ~/cache.txt

No arquivo, procure por "CACHE:" pressionando Escapar, digitando "/CACHE:", e batendo Digitar. Todos os registros DNS listados em CACHE: fazem parte do cache DNS local. Imprensa n para pular para o próximo conjunto de entradas DNS se estiver usando o Vim.

Exibir o cache DNS local para nscd

Para visualizar o cache local gerado pelo nscd, você precisa ler o conteúdo do banco de dados nscd hosts usando o comando strings.

Nas distribuições baseadas em Debian e Ubuntu, este arquivo está localizado em /var/cache/nscd/hosts. Execute o seguinte comando para visualizar o arquivo:

sudo strings /var/cache/nscd/hosts | único

Para visualizar estatísticas gerais sobre o cache DNS nscd, use o -g bandeira:

sudo nscd -g

Exibir o cache DNS gerado pelo dnsmasq

O dnsmasq armazena o cache DNS na memória, portanto, não é fácil obter os registros exatos. Mas você pode enviar um sinal de interrupção para dnsmasq e registrar sua saída para obter o número de consultas de DNS processadas.

Para fazer isso, primeiro, certifique-se de que o dnsmasq esteja funcionando usando o comando systemctl:

sudo systemctl status dnsmasq

Se o estado mostrar Ativo, execute o seguinte comando para encerrar o serviço:

sudo pkill -USR1 dnsmasq

Usando o comando journalctl, extraia os logs dnsmasq e salve-os em um arquivo de texto:

sudo journalctl -u dnsmasq > ~/cache.txt

Por fim, visualize o conteúdo do arquivo usando um utilitário de visualização de arquivos como gato ou menos:

gato ~/cache.txt

Como liberar o cache DNS no Linux

Descarregar o cache DNS significa remover os registros DNS em cache do seu computador. Isso o força a enviar uma solicitação ao servidor DNS para recuperar as novas entradas DNS.

Veja como você pode liberar o cache DNS no Linux:

Usando o systemd-resolvido

Você pode usar o comando resolvectl para liberar o cache DNS armazenado pelo systemd-resolved:

sudo resolvectl flush-caches

Se você estiver executando o Ubuntu 17.04 ou 18.04, use o comando systemd-resolved para liberar o cache:

sudo systemd-resolved --flush-caches

Limpe o cache DNS nscd no Linux

A maneira mais conveniente de remover o cache DNS do nscd é simplesmente reiniciar o serviço. Você pode fazer isso executando:

sudo /etc/init.d/nscd restart

Se isso não funcionar, primeiro verifique se o cache local armazenado em seu PC é persistente. Você pode usar o -g flag para verificar:

sudo nscd -g

Se for esse o caso, use o -eu flag com o comando nscd para limpar os registros (eu apoia invalidar):

sudo nscd -i hosts

Remova o cache DNS dnsmasq

A descarga do cache DNS gerado pelo dnsmasq é simples. Como o cache é armazenado na memória, reiniciar o serviço exclui todas as entradas armazenadas.

Para reiniciar o dnsmasq, execute o seguinte comando systemctl:

sudo systemctl reiniciar dnsmasq

Ou, emita o seguinte comando:

reinício dnsmasq do serviço

Digite a senha do administrador, se solicitado. O dnsmasq agora será reiniciado e todas as suas entradas de DNS existentes serão removidas do cache.

Depois de limpar o cache DNS, é melhor visualizar as entradas do cache local e verificar se os dados foram removidos com sucesso. Você pode usar dig, um dos muitos comandos do Linux para solução de problemas de redee verifique o valor do tempo de consulta na saída. Se for mais de 0 ms, o cache foi limpo com sucesso (0 ms significa que o registro de domínio ainda está no cache).

dig google.com

Limpe o cache DNS do Google Chrome

O navegador da Web que você usa com frequência também armazena em cache os registros DNS. Quando você insere uma URL, o sistema procura uma entrada de cache no cache do navegador local. Se não for encontrado, ele verifica os registros no cache do sistema local. É crucial limpar o cache DNS do navegador da Web, pois ele tem precedência maior do que o cache do sistema.

Para demonstração, vamos liberar o cache DNS no Google Chrome. Existem maneiras de fazer isso em outros navegadores também, então é melhor você pesquisar no Google como fazer isso para o navegador que você usa.

Para começar, digite "chrome://net-internals/#dns" na barra de URL e clique Digitar:

Clique Limpar cache do host para limpar as entradas de DNS armazenadas no Google Chrome.

Linux é o melhor sistema operacional para aprender a trabalhar em rede

O Linux pode parecer complicado no início, mas se você investir algum tempo para aprender como ele funciona, perceberá rapidamente que é fantástico e talvez até melhor do que o Windows ou macOS.

A maioria dos servidores on-line executa o Linux, e essa é uma das razões pelas quais o Linux é ideal se você deseja aprender redes ou deseja saber como os computadores funcionam em geral.