Como liberar DNS no Linux

Aplicativos no Linux

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.

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.

Recomendado:  Agora é uma boa hora para comprar uma CPU ou placa-mãe Intel?

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-activeopção do systemctlcomando. 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

Usando o comando systemctl para verificar se o cache DNS está ativo

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 resolvectlcomando com a opção de estatísticas para ver quantos registros estão no cache.

estatísticas de resolução

usando o comando resolvectl para visualizar estatísticas de cache DNS

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 kille 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.

Recomendado:  Como pesquisar um tópico online

O systemd-resolveddaemon reage USR1gravando seu cache nos logs do sistema. Podemos então usar o journalctlcomando para filtrar as entradas DNS.

Usaremos o killallcomando com USR1Para enviar o sinal ao systemd-resolveddaemon. Observe que embora estejamos usando o killallcomando, o systemd-resolveddaemon continua em execução. Este não é um sinal de encerramento que estamos enviando.

sudo killall -USR1 resolvido pelo sistema

Enviando o sinal USR1 para o daemon resolvido pelo systemd

Agora usaremos o journalctlcomando com a opção -u(filtro por systemdunidade) 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

Filtrando as entradas de log resolvidas pelo systemd e enviando-as para um arquivo

Usaremos o lessvisualizador de arquivos para visualizar o conteúdo do arquivo.

menos dns.txt

Visualizando o arquivo dns.txt com o comando less

Você poderá encontrar os mapeamentos em cache entre nomes de domínio e endereços IP rolando e pesquisando o texto.

O conteúdo do fiole dns.txt com um nome e endereço IP para google.com destacados

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 resolvectlcom a flush-cachesopção.

resolvectl flush-caches

Liberando o cache DNS com o comando resolvectl

Voltamos silenciosamente à linha de comando. Para confirmar se algo realmente aconteceu, verificaremos novamente as estatísticas do cache DNS.

estatísticas de resolução

As estatísticas de cache que mostram o tamanho do cache foram reduzidas a zero

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 dnsmasqaplicativo 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 dnsmasqcache DNS é fácil. Precisamos enviar o SIGHUPsinal, que informa ao dnsmasqdaemon para reinicializar efetivamente. Fazer isso limpa o cache DNS. Para enviar o sinal utilizamos o killallcomando com a -HUPflag e o nome da aplicação.

Recomendado:  Os melhores interruptores de luz inteligentes de 2022

sudo killall -HUP dnsmasq

Liberando o cache DNS do aplicativo 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