Questão Como faço para limpar o cache do DNS?


Acabei de atualizar o registro DNS (ns1, ns2, ns3.myhostingcompany.com) para um site que já hospedei, mas ainda recebo a página de estacionamento de registradores de domínio.

Eu gostaria de ver se o problema são os registros DNS em cache do Ubuntu. Existe uma maneira de limpar o cache DNS do Ubuntu? (se tal coisa existe?)


153
2017-08-13 21:23


origem


Além disso, verifique /etc/hosts. Acabei de ter certeza de que o endereço IP antigo do meu domínio estava sendo armazenado em cache, mas apenas strace ping example.com revelou que eu esqueci de remover o /etc/hosts registro que eu adicionei um tempo atrás por causa da falta de paciência para a propagação de DNS. - ulidtko
Muitas dessas respostas sugerem que o armazenamento em cache está desabilitado por padrão, mas elas também fazem referência a versões mais antigas. Ele certamente parece estar ativado por padrão na minha máquina (18.04) e várias respostas abaixo mostram como limpá-lo, basta descer - Madivad


Respostas:


Para 18.04 e superior

Olhe para Mike Shultz 'responder.

Para 11,10 e abaixo

O Ubuntu não armazena em cache os registros de DNS por padrão, a menos que você tenha instalado um cache de DNS não há nada para limpar.

É provável que os registros DNS sejam armazenados em cache pelos servidores DNS do seu provedor, portanto, se você quiser verificar se as alterações feitas no DNS foram bem-sucedidas, é possível interrogar um servidor DNS do serviço de hospedagem do seu domínio com a escavação:

dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Se você quiser que o Ubuntu inicie o cache do dns, eu recomendo instalar pdnsd junto com resolvconf. nscd é buggy e não é aconselhável.


52
2017-08-14 00:13



Quaisquer referências sobre por que o nscd é buggy? Ainda é buggy hoje (2012-10)? - jjmontes
Você pode atualizar sua resposta ATM, parece que as versões do Ubuntu 11.10+ armazenam em cache os registros DNS. - Martin Konecny


12,04

Ubuntu 12.04 usa dnsmasq que é construído em network-manager, mas não faz cache dns, então não há necessidade de liberá-lo. Aqui está uma linha de amostra da minha syslog para provar esse ponto:

dnsmasq[2980]: started, version 2.59 cache disabled

Também não há necessidade de qualquer configuração de dnsmasq. Se você estiver executando com configurações de estoque não será caching dns, como para isso você tem que explicitamente configurá-lo como este Artigo do Ubuntu descreve.

Se você quisesse atualizar suas configurações, você poderia desativar e ativar a rede ou executar

sudo service network-manager restart

Isso reinicia dnsmasq porque é construído para network-manager; verifique seu syslog para a evidência disso.

Se você estiver usando uma conexão com fio com dhcp network manager vai tomar as configurações diretamente do seu roteador e sua conexão será estabelecida automaticamente quando você fizer o login no Ubuntu. Você pode verificar se as configurações estão corretas no seu roteador, se você pode acessá-lo através da interface web, e talvez reiniciá-lo, se necessário.  Se é um problema geral com dns, você poderia tentar usar o dns do Google em vez do seu dns isp, e mais informações sobre isso é detalhado aqui.


69
2017-09-14 20:39



sudo service network-manager restart fez o truque para mim com o Debian - Pierre de LESPINAY


Note que o Ubuntu usa systemd-resolve a partir de 17.04 e assim esta resposta não se aplica mais às versões recentes do Ubuntu. Vejo "liberar cache de DNS no Ubuntu 17.04 e superior (18.04)"

Por padrão, o DNS não é armazenado em cache no Ubuntu <17.04 (mas pode ser armazenado em cache na rede ou no aplicativo)

Para confirmar um caminho ou outro se dnsmasq está fazendo cache, execute ps ax | grep dnsmasq e olhe para o comando em execução. Aqui está um detalhamento da minha máquina padrão 13.10:

/ usr / sbin / dnsmasq \
  --no-resolv \
  - mantenha em primeiro plano
  --no-hosts \
  --bind-interfaces \
  --pid-file = / var / run / NetworkManager / dnsmasq.pid \
  --listen-address = 127.0.1.1 \
  --conf-file = / var / run / NetworkManager / dnsmasq.conf \
   --cache-size = 0 \
  --proxy-dnssec \
  --enable-dbus = org.freedesktop.NetworkManager.dnsmasq \
  --conf-dir = / etc / NetworkManager / dnsmasq.d

/etc/NetworkManager/dnsmasq.d está vazio por padrão. Então não há nenhuma substituição vindo lá e apenas para verificar --cache-size=0significa o que pensamos que significa (em vez de um ilimitado cache), man dnsmasq mostra:

-c, --cache-size=<cachesize>
  Set the size of dnsmasq's cache. The default is 150 names. 
  Setting the cache size to zero disables caching.

Por enquanto dnsmasq  posso cache DNS, não é cache fora da caixa. Você pode verificar sua máquina e vários diretórios de configuração para verificar se você está na mesma página.

Se você está vendo problemas de cache, isso provavelmente está acontecendo em um dos poucos locais:

  • Upstream do seu computador. Alguns roteadores armazenam em cache. Muitas redes corporativas armazenam em cache o DNS. Muitos servidores DNS executados pelo ISP e usarão seus próprios caches. A única maneira de garantir um cache de rede é usar um cache que você pode atualizar manualmente. É por isso que gosto do OpenDNS.
  • No aplicativo cliente (principalmente navegadores). As aplicações podem fazer todo o tipo de cache que o Ubuntu não tem efeito. Como o Firefox armazena o DNS. Como limpar o cache DNS do Chrome. Outros navegadores (e aplicativos) podem ter seus próprios mecanismos.
  • Estou raspando o barril aqui, mas talvez você tenha instalado um servidor DNS não padrão no Ubuntu em vez de transformar o cache em dnsmasq. Há muitos: nscdDJBDNS dnscache (também conhecido como TinyDNS), pdns, pdnsd, Bind9 (e suas variantes), e mais eu não consigo nem lembrar. Estes irão provavelmente ser evidenciado em /etc/resolv.conf (com config em / etc / resolvconf / `para autogen esse arquivo). A seguir, é mostrada uma consulta DNS interceptada localmente:

    $ nslookup askubuntu.com
    Server:     127.0.1.1
    Address:    127.0.1.1#53
    
    Non-authoritative answer:
    Name:   askubuntu.com
    Address: 198.252.206.24
    

    Se você não estiver acessando 8.8.8.8 (ou o que você espera que seu servidor DNS esteja), verifique o que você está pressionando. No meu caso eu posso ver que isso é apenas dnsmasq configurado para espelhar consultas DNS de volta para o LXC, mas no seu caso pode estar fazendo coisas ruins em cache.

    Se você tiver feito os caches listados, o processo de limpeza de cada um varia:

    sudo /etc/init.d/nscd reload    # nscd
    sudo /etc/init.d/named restart  # bind9
    

Em uma nota ligeiramente relacionada, veja isso para ativar o cache em dnsmasq.


59
2018-03-17 10:40



Minha saída do ps aux | grep é a mesma que a sua, mas algo definitivamente está armazenando DNSs em cache na minha máquina. Se não é dnsmasq é outra coisa. Prova: Eu criei um subdomínio no meu servidor, mas eu não pude fazer ping, host inacessível. Eu verifiquei em downforeveryoneorjustme.com e foi para cima, então problema de propagação descartado. Não meu roteador nem meu ISP, porque eu uso o 8.8.8.8 do DNS do Google. Então reiniciei o computador (e NÃO o roteador) e consegui alcançar o domínio. Eu estava repetindo uma dúzia de vezes antes de reiniciar sem sorte. Primeiro tente após a reinicialização chegou ao host. - matteo
E esta não foi a primeira vez que experimentei a mesma coisa, a propósito. Meses atrás, o mesmo aconteceu e a única maneira que eu poderia alcançar o domínio foi reiniciar o computador, mas depois eu tive uma versão mais antiga do Ubuntu. - matteo
@matteo O navegador? - Oli♦
não, como eu disse testei com ping, não (só) o (s) navegador (es). - matteo
@matteo Eu adicionei mais, mas estou ficando sem ideias. Não há muito mais lugares para alguém poderia cache DNS :) - Oli♦


Para 12.04:

Ubuntu 12.04 faz cache DNS usando dnsmasq (ver man dnsmasq). Use o seguinte para limpar o cache:

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Obrigado! Você é o primeiro que eu vi mencionar qualquer coisa sobre o cache padrão do 12.04! - Tarka
12.04 não armazena em cache o DNS por padrão - verifique seu syslog após reiniciar o gerenciador de rede; ele terá uma entrada que mostra que o dnsmasq está iniciando com o cache-disabled.
Não sei se o cache está habilitado por padrão, mas essa resposta funcionou para mim. - jeyk
Porque não apenas sudo killall -HUP dnsmasq? - James Haigh
usar pkill ao invés de kill e pgrep - Robert Siemer


sudo /etc/init.d/nscd restart

http://www.ubuntugeek.com/howto-clearflush-dns-cache-in-ubuntu.html

Além disso, como nota, você pode verificar e ver se suas alterações de DNS se propagaram usando escavações e procurando alguém diferente de seus servidores DNS padrão. Neste caso, o DNS do Google.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Vale notar que o nscd não é instalado por padrão. - Scaine


Ubuntu 17.04 e superior (18.04)

Do Ubuntu 17.04 em diante, o systemd-resolve é usado para o DNS. Você pode limpar os caches do systemd assim:

sudo systemd-resolve --flush-caches

12
2018-06-27 04:09



OMG, você vai se casar comigo? Resolvi meu problema com 18.04 também \ o / - NiKo
Isso não funcionou para mim no 16.04 LTS - mas foi útil ver ainda outra maneira que poderia estar sendo armazenada em cache: sudo systemd-resolve --statistics - Phil


Pessoalmente, eu use o OpenDNS e usar seus Função de verificação de cache para forçar uma atualização apenas para garantir que as alterações funcionem, mas você não pode garantia eles serão atualizados para seus usuários em até 48 horas.

O DNS é uma fera lenta. Paciência irá mantê-lo são.


11
2017-08-13 21:26



Eu uso o OpenDNS, bem como limpar o cache é muito útil. - Mark Davidson
Eu suspeito do OpenDNS. Eu estava feliz com isso no começo, mas depois comecei a ficar desconfiada; Embora eu acho que se é uma escolha entre ISP e OpenDNS, eu estou melhor com o OpenDNS, certo? - Jono
Eu diria que o OpenDNS é o mal menor. Eles gostariam de gerar receita com seu tráfego, mas apenas em hits de domínio incorretos. - Oli♦


Se você estiver usando o nscd:

sudo /etc/init.d/nscd restart

Vale ressaltar que talvez não seja o sistema operacional que está armazenando em cache. Todos gosta de esconder o DNS ... Alguns testes:

Verifique se é o IP novo ou antigo. A maioria dos navegadores também armazena em cache o DNS, por isso, se você não tiver reiniciado o Chromium ou qualquer outro que não esteja vendo, o mais recente.

ping yourdomain.com

Mude seu nameserver local no /etc/resolv.conf para outro provedor, google ou level, exemplos:

nameserver 8.8.8.8
nameserver 4.2.2.2

E então ping novamente.

Verifique se o seu roteador não está armazenando DNS em cache de qualquer forma. (Varia de acordo com o roteador / firmware / etc)

Finalmente, paciência. O DNS pode demorar um pouco para se propagar pela internet.


7
2017-08-13 21:33



Se o uso do NetworkManager e do DHCP /etc/resolve.conf for liberado quando a concessão do DHCP expirar, você precisará definir um IP estático no NetworkManager para que isso funcione por mais tempo. - LassePoulsen
Eu não sabia que o Firefox estava armazenando DNS, isso ajudou muito. - wavemode
+1 para mudar o nameserver local para o google funcionou - Bibek Sharma