A sua experiência de navegação na Internet está lenta no seu dispositivo Linux ou os sites que você está visitando estão desatualizados ou são totalmente errados? Vamos discutir a liberação do cache DNS no Linux e como saber se você realmente precisa fazer isso.
Índice
O que são caches DNS?
O serviço de nomes de domínio é a mágica que converte nomes em números. Ele pega nomes de redes de dispositivos e nomes de sites e procura seus endereços IP. A rede pode então usar o endereço IP para rotear corretamente o tráfego para esses dispositivos ou sites.
Essas pesquisas, conhecidas como solicitações, não acontecem instantaneamente . Há um período de tempo pequeno e finito envolvido. As solicitações de DNS da Internet podem exigir a consulta de servidores DNS precursores, servidores de nomes raiz, servidores de domínio de nível superior e servidores de nomes autorizados. As solicitações de DNS são rápidas, mas para torná-las ainda mais rápidas, as respostas às solicitações de DNS recentes são armazenadas em cache nos servidores precursores do DNS.
Se a resposta a uma solicitação DNS for encontrada no cache do servidor precursor, nenhum outro servidor precisará ser contatado. A resposta é enviada de volta do cache do servidor precursor. Da mesma forma, um pequeno cache é mantido pelo seu roteador de banda larga em casa. Se você solicitar um dispositivo de rede local usando o nome do dispositivo de rede, seu roteador fornecerá o endereço IP. Ele também pode armazenar em cache as respostas recebidas de servidores DNS externos.
Normalmente, redes e computadores Linux são configurados para usar serviços DNS externos, fornecidos pelo seu provedor de serviços de Internet ou por um serviço gratuito como OpenDNS ou Google DNS . Existem boas razões pelas quais algumas pessoas executam seus próprios servidores DNS , mas a maioria de nós não. No entanto, seu computador Linux – mesmo que não esteja executando um servidor DNS – pode, opcionalmente, armazenar em cache os resultados da solicitação de DNS.
O problema de usar dados armazenados em cache é que tudo se baseia na suposição de que nenhum dos detalhes armazenados em cache foi alterado desde que foram armazenados em cache. Se os detalhes foram alterados, as informações que você recebe estarão desatualizadas.
Se uma entrada de cache ou todo o cache for corrompido, você obterá, na melhor das hipóteses, um desempenho instável e, na pior, vulnerabilidades de segurança. É aí que você deseja “liberar” ou limpar o cache DNS.
O seu computador está usando um cache DNS local?
Alguns de nossos computadores de teste tinham caches DNS locais ativados e outros estavam desativados. Estava desativado em nosso computador Manjaro 21, mas foi ativado por padrão no Fedora 37 e no Ubuntu 22.10 .
Para determinar se o seu computador Linux está armazenando solicitações de DNS em cache, use a is-active
opção do systemctl
comando. O daemon que gerencia o cache DNS é o gerenciador de resolução de nomes de rede systemd, conhecido como systemd-resolved
.
systemctl está ativo resolvido pelo systemd
Se a resposta for “ativa”, o cache DNS está ocorrendo. Se a resposta for “inativa”, não é. Neste computador específico, ele está ativo. Podemos usar o resolvectl
comando com a opção de estatísticas para ver quantos registros estão no cache.
estatísticas de resolução
Podemos ver que existem 330 entradas no cache DNS deste computador.
Revendo seu cache DNS
A revisão das entradas do cache DNS não é um pré-requisito para liberar o cache e, se você não tiver interesse em fazer isso, poderá pular esta etapa inteira . Às vezes, porém, pode ser informativo. Você poderá ver entradas embaralhadas que indicam corrupção ou mensagens de erro relacionadas a problemas de endereçamento de dispositivos em sua rede.
Agora, não há uma maneira direta de ver essas entradas. Podemos fazer isso, mas precisamos ser um pouco criativos. USR1
, ou sinal número um definido pelo usuário, é um sinal que pode ser enviado pelos comandos kill
e killall
. Este sinal não tem significado predefinido. Os aplicativos são livres para ignorar esse sinal ou reagir da maneira que os desenvolvedores implementarem.
O systemd-resolved
daemon reage USR1
gravando seu cache nos logs do sistema. Podemos então usar o journalctl
comando para filtrar as entradas DNS.
Usaremos o killall
comando com USR1
Para enviar o sinal ao systemd-resolved
daemon. Observe que embora estejamos usando o killall
comando, o systemd-resolved
daemon continua em execução. Este não é um sinal de encerramento que estamos enviando.
sudo killall -USR1 resolvido pelo sistema
Agora usaremos o journalctl
comando com a opção -u
(filtro por systemd
unidade) para extrair as entradas de log que foram geradas pelo systemd-resolved
. Redirecionaremos essa saída para um arquivo de texto chamado “dns.txt”.
sudo journalctl -u systemd-resolvido > dns.txt
Usaremos o less
visualizador de arquivos para visualizar o conteúdo do arquivo.
menos dns.txt
Você poderá encontrar os mapeamentos em cache entre nomes de domínio e endereços IP rolando e pesquisando o texto.
Podemos ver uma entrada para o Google que possui um endereço IP de 216.58.212.196. Você pode verificar isso colocando o endereço IP em um navegador da web. Você deverá ver a página inicial da pesquisa do Google.
Como limpar o cache DNS no Linux
A limpeza do cache remove todas as entradas e inicia o processo de coleta mais uma vez. Se houver alguma, isso remove à força as entradas incorretas e corrompidas do cache.
O comando é simples; usamos resolvectl
com a flush-caches
opção.
resolvectl flush-caches
Voltamos silenciosamente à linha de comando. Para confirmar se algo realmente aconteceu, verificaremos novamente as estatísticas do cache DNS.
estatísticas de resolução
Podemos ver que o tamanho do cache caiu para zero. Aumentará com o tempo à medida que acumula novas entradas.
Como liberar o cache dnsmasq no Linux
O dnsmasq
aplicativo fornece um cache DNS e um servidor DHCP. É popular entre usuários que desejam executar seu próprio servidor DNS, especialmente em instalações que não sejam do systemd .
Limpar o dnsmasq
cache DNS é fácil. Precisamos enviar o SIGHUP
sinal, que informa ao dnsmasq
daemon para reinicializar efetivamente. Fazer isso limpa o cache DNS. Para enviar o sinal utilizamos o killall
comando com a -HUP
flag e o nome da aplicação.
sudo killall -HUP dnsmasq
Corado, com sucesso
Claro, se o seu computador não estiver armazenando em cache, não há nada que você precise verificar.
Se estiver armazenando solicitações de DNS em cache, mas tudo estiver funcionando bem, você também poderá ignorá-lo. Mas se você estiver enfrentando atualizações lentas ou esporádicas de páginas da web ao navegar na web, ou vendo páginas da web erradas, provavelmente é um bom momento para limpar o cache DNS.
Comandos Linux | ||
arquivos | tar · pv · cat · tac · chmod · grep · diff · sed · ar · man · pushd · popd · fsck · testdisk · seq · fd · pandoc · cd · $PATH · awk · join · jq · fold · uniq · journalctl · cauda · estatística · ls · fstab · echo · menos · chgrp · chown · rev · olhar · strings · digitar · renomear · zip · descompactar · montar · desmontar · instalar · fdisk · mkfs · rm · rmdir · rsync · df · gpg · vi · nano · mkdir · du · ln · patch · converter · rclone · fragmentar · srm · scp · gzip · chattr · cortar · encontrar · umask · wc · tr | |
Processos | alias · tela · topo · legal · renice · progresso · strace · systemd · tmux · chsh · histórico · em · lote · grátis · which · dmesg · chfn · usermod · ps · chroot · xargs · tty · mindinho · lsof · vmstat · tempo limite · parede · sim · matar · dormir · sudo · su · tempo · groupadd · usermod · grupos · lshw · desligar · reiniciar · parar · desligar · senha · lscpu · crontab · data · bg · fg · pidof · nohup · pmap | |
Rede | netstat · ping · traceroute · ip · ss · whois · fail2ban · bmon · cavar · dedo · nmap · ftp · curl · wget · quem · whoami · w · iptables · ssh-keygen · ufw · arping · firewalld |