Ir para o conteúdo principal

Guias / Corrigir: guias para os erros que aparecem de verdade

Como limpar o cache de DNS no Windows, macOS e Linux

Para limpar o DNS, execute ipconfig /flushdns no Windows, sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder no macOS, ou resolvectl flush-caches no Linux com systemd-resolved. O comando exato depende do sistema operacional e, no Linux, de qual resolvedor está em uso.

O que é o cache de DNS e por que limpá-lo ajuda

Toda vez que um dispositivo resolve um nome de host para um endereço IP, ele guarda essa resposta por um tempo em vez de perguntar de novo a cada requisição. Essa resposta guardada fica no cache de DNS do sistema operacional, separado do cache de DNS que o navegador mantém por cima dele. Esse cache é o que torna a navegação rápida: sem ele, cada requisição de cada recurso de uma página exigiria uma nova consulta.

O cache vira um problema no momento em que um registro muda. Se um site mudou de endereço IP, trocou de provedor de hospedagem ou atualizou um CNAME, sua máquina pode continuar respondendo com o valor antigo até a entrada em cache expirar. Os resolvedores também guardam respostas negativas, ou seja, "esse nome não existe," por um período definido no registro SOA do domínio, então um nome que acabou de voltar a funcionar ainda pode falhar localmente por alguns minutos. Limpar o cache obriga a próxima consulta a sair do zero em vez de reaproveitar o que estava guardado.

Como limpar o DNS no Windows

  1. Abra o Prompt de Comando. Os próprios procedimentos de solução de problemas da Microsoft usam um prompt elevado (clique com o botão direito, Executar como administrador) para comandos de DNS, então comece por aí se a versão comum se comportar de forma estranha.
  2. Execute ipconfig /flushdns. Segundo a documentação da Microsoft Learn para o comando, ele "limpa e reinicia o conteúdo do cache do resolvedor DNS do cliente," descartando tanto entradas negativas quanto qualquer coisa adicionada dinamicamente.
  3. Confirme que funcionou com ipconfig /displaydns, que lista tudo que está atualmente no cache do resolvedor. Logo após uma limpeza, isso deve retornar uma lista quase vazia; navegue por alguns sites e execute o comando de novo para ver entradas novas reaparecerem.

Se um endereço desatualizado continua voltando, os próprios servidores DNS atribuídos por DHCP podem estar em cache junto com a concessão de rede. Liberar e renovar o adaptador resolve os dois de uma vez:

ipconfig /release
ipconfig /renew

Como limpar o DNS no macOS

O comando depende de quão antiga é a versão do macOS na máquina, e usar o comando errado em um Mac atual simplesmente não faz nada.

  • Yosemite 10.10.4 em diante (o que cobre todas as versões de macOS atualmente suportadas, incluindo Sequoia, Sonoma, Ventura, Monterey e Big Sur): sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. O primeiro comando limpa o cache do Directory Service; o segundo envia um sinal HUP ao mDNSResponder para que ele reinicie e descarte o que estava guardado.
  • Somente Yosemite 10.10 até 10.10.3 usava uma ferramenta diferente: sudo discoveryutil mdnsflushcache.
  • Mavericks, Mountain Lion e Lion: sudo killall -HUP mDNSResponder sozinho já era suficiente.
  • Snow Leopard (10.6 a 10.6.8): apenas sudo dscacheutil -flushcache, sem a etapa do killall.

A menos que você esteja usando um Mac antigo o suficiente para anteceder a atualização Yosemite de 2014, use o primeiro comando. Ambas as partes pedem a senha da sua conta, e o comando não produz nenhuma saída quando funciona.

Como limpar o DNS no Linux

O Linux não tem um único cache de DNS para limpar, porque cada distribuição usa uma pilha de resolvedor diferente. Verifique qual está ativa antes de escolher um comando.

Execute resolvectl status primeiro. Se ele retornar as configurações de DNS por interface, a máquina está rodando systemd-resolved, o padrão no Ubuntu, Fedora e na maioria das distribuições atuais. Se o comando não for encontrado, verifique os outros dois serviços comuns: systemctl status nscd ou systemctl status dnsmasq (ou, se o systemd não estiver em uso, procure pelo processo com ps aux | grep -E 'nscd|dnsmasq').

  • systemd-resolved (systemd 239 em diante): resolvectl flush-caches. O manual do systemd descreve isso como limpar "todos os caches de registros DNS que o serviço mantém localmente." Você pode confirmar com resolvectl statistics, que mostra o tamanho atual do cache.
  • systemd-resolved em versões antigas do systemd (antes da renomeação na 239): sudo systemd-resolve --flush-caches. Algumas distribuições atuais ainda mantêm isso como um alias de compatibilidade mesmo depois de adicionar o resolvectl, então vale a pena tentar se o resolvectl não existir mas o systemd-resolve sim.
  • nscd: sudo systemctl restart nscd reinicia o serviço inteiro e limpa o cache junto. Para invalidar só o cache de hosts sem reiniciar, sudo nscd -i hosts funciona nas distribuições que oferecem essa opção.
  • dnsmasq: enviar um sinal HUP limpa o cache sem derrubar o serviço, conforme sua própria página de manual: sudo killall -HUP dnsmasq. Um simples sudo systemctl restart dnsmasq também funciona e ainda recarrega a configuração.

Como limpar o cache de DNS do próprio navegador

O Chrome mantém um cache de DNS próprio, separado do sistema operacional, então limpar só o cache do sistema muitas vezes não é suficiente para uma mudança ter efeito. Abra chrome://net-internals/#dns e clique em Clear host cache. Navegadores baseados em Chromium (Edge, Brave, Opera e outros) expõem a mesma página no mesmo endereço.

Isso ainda pode não resolver tudo. O Chrome também mantém um conjunto de conexões já abertas com o endereço IP antigo e pode reaproveitar uma delas em vez de abrir uma nova conexão, mesmo depois de o cache de DNS estar vazio. Abra chrome://net-internals/#sockets e use Flush socket pools para encerrar essas conexões também. Se um site ainda carregar a versão antiga depois das duas etapas, tente uma janela anônima, já que ela começa sem nenhuma conexão em cache.

Por que o endereço antigo ainda aparece depois de limpar o cache

Se você já limpou todos os caches da máquina e o navegador ainda mostra o servidor antigo, o atraso geralmente já não é mais local. Um roteador doméstico costuma manter seu próprio cache de DNS pequeno para cada dispositivo da rede, e reiniciá-lo limpa essa camada. Além do roteador, o resolvedor do seu provedor de internet também mantém o próprio cache, e você não tem como limpá-lo diretamente; ele se limpa sozinho quando o TTL da entrada em cache expira.

O TTL, o valor de tempo de vida de um registro DNS, é o limite real de quão rápido uma mudança pode se espalhar. Cada resolvedor entre você e o servidor de nomes autoritativo pode guardar uma resposta por exatamente esse número de segundos antes de ser obrigado a consultar de novo. Um registro com TTL de uma hora pode legitimamente continuar devolvendo o endereço antigo para alguns visitantes por quase uma hora depois da mudança, não importa o que você limpe na sua própria máquina. Veja como funciona a propagação de DNS para entender o que controla esse prazo e como verificar se um registro já terminou de atualizar em todo lugar.

Perguntas frequentes

Preciso reiniciar o computador depois de limpar o DNS?

Não. Todo comando acima tem efeito imediato e só limpa o cache em memória; reiniciar não faz parte do processo no Windows, no macOS ou no Linux.

Por que limpar o DNS não resolveu o problema?

Três coisas costumam continuar segurando a resposta antiga: o cache do próprio navegador (limpe-o separadamente em chrome://net-internals/#dns), o roteador que atende sua rede, ou o TTL do registro que simplesmente ainda não expirou no resto da internet. Se uma consulta falhar ou expirar por completo em vez de devolver uma resposta desatualizada, isso aponta para um servidor DNS que não está respondendo, e não para um problema de cache.

Como limpo o DNS no celular?

Nem o iOS nem o Android oferecem um comando manual para limpar o DNS. Ativar e desativar o modo avião, ou trocar do Wi-Fi para os dados móveis e voltar, força o aparelho a descartar o estado de DNS em cache e resolver de novo na próxima requisição.

Limpar o DNS resolve o carregamento lento de páginas?

Raramente, sozinho. Um cache local corrompido ou grande demais pode adicionar um pequeno atraso, mas lentidão constante nas consultas costuma ter causas mais ligadas ao resolvedor em si. Veja por que as consultas de DNS ficam lentas para as causas mais prováveis e como testá-las.

Qual é a diferença entre limpar o DNS e limpar o cache do navegador?

O cache do navegador guarda conteúdo de página: HTML, CSS, imagens e scripts. O cache de DNS guarda apenas o mapeamento de nome de host para IP usado para encontrar o servidor em primeiro lugar. Limpar um não limpa o outro, e uma página desatualizada pode ser causada por qualquer um dos dois.

Como confirmo que a limpeza funcionou?

No Windows, execute ipconfig /displaydns logo após a limpeza; deve voltar quase vazio. No Linux com systemd-resolved, resolvectl statistics mostra o tamanho atual do cache. O macOS não tem um comando de inspeção equivalente, então a verificação prática é consultar o domínio de novo com dig example.com ou rodar uma checagem de fora da sua própria rede com uma ferramenta como uma consulta de DNS que consulta várias localidades ao mesmo tempo, o que também revela se a resposta desatualizada é local ou vem dos próprios servidores de nomes do domínio.

Verificar agora

Faça a verificação gratuita no seu próprio site, sem precisar de conta.

Dns query

Monitorar permanentemente

Seja avisado no momento em que algo quebrar: o HostTracker verifica de mais de 300 localidades e notifica você por e-mail, SMS, Slack, Telegram e mais.

Recursos do HostTracker

Mais nesta seção: Corrigir: guias para os erros que aparecem de verdade