ti-enxame.com

Como faço para limpar o cache do DNS?

Acabei de atualizar o registro de DNS (ns1, ns2, ns3.myhostingcompany.com) para um site que 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?)

189
Jono

Para 18.04 e superior

Olhe para resposta de Mike Shultz .

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, poderá interrogar um servidor DNS do serviço de hospedagem de domínio com o Dig:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

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

63
Li Lo

12,04

O Ubuntu 12.04 usa dnsmasq que é construído em network-manager, mas ele não cache dns então não há necessidade de liberá-lo . Aqui está uma linha de amostra do meu 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 ações não será caching dns, como para isso você tem que explicitamente configurá-lo como isso artigo do Ubunt 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 está embutido em network-manager; verifique seu syslog para a evidência disso.

Se você estiver usando uma conexão com fio com dhcp network manager estará tomando 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 .

70
user76204

Note que o Ubuntu usa o systemd-resolve a partir de 17.04 em diante, então esta resposta não se aplica mais às versões recentes do Ubuntu. Veja " esvaziar o cache do 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 de uma forma ou de outra se dnsmasq está armazenando em cache, execute ps ax | grep dnsmasq e observe o comando running. Aqui está um detalhamento da minha máquina padrão 13.10:

/ usr/sbin/dnsmasq\
 --no-resolv\
 --manter em primeiro plano\
 --no-hosts\
 --bind -interfaces\
 --pid-file = /var/trun/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. Portanto, não há quaisquer substituições chegando lá e apenas para verificar --cache-size=0 significa o que achamos 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.

Então, enquanto dnsmasqcan pode armazenar em cache o DNS, não está fazendo o cache 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 cache de roteadores. 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). Os aplicativos podem fazer todo tipo de armazenamento em 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. Existem muitos: nscd, DJBDNS 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 evidenciados 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 seja seu servidor DNS), verifique o que você está pressionando. No meu caso eu posso ver que isso é apenas dnsmasq configurado para espelhar as 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 isto para habilitar o cache em dnsmasq .

63
Oli

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
57
Mike Shultz

Para 12.04:

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

Sudo kill -HUP $(pgrep dnsmasq)
40
zechariah

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 as alterações de DNS se propagaram usando o Dig e procurando alguém diferente dos servidores DNS padrão. Neste caso, o DNS do Google.

Dig @8.8.8.8 example.com

16
Mark Davidson

Pessoalmente, eu so OpenDNS e uso sua função Cache Check para forçar uma atualização apenas para garantir que as mudanças funcionem, mas você não pode garantia eles serão atualizados para seus usuários em 48 horas.

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

11
Oli

Se você estiver usando o nscd:

Sudo /etc/init.d/nscd restart

Vale a pena mencionar que talvez não seja o sistema operacional que está armazenando em cache. Everyone 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
bikesandcode

Todas as respostas acima esqueceram uma coisa importante na resolução de nomes: geralmente, os servidores DNS para os quais você solicita a resolução de nomes não são os que mantêm os registros em si (o servidor autoritativo). Como cada registro DNS vem com um valor Time to Live que obrigará cada servidor DNS na cadeia de resolução a fazer o cache durante a quantidade de segundos mencionados por este valor. Então, não só você pode armazenar em cache na sua máquina, mas CERTAMENTE o resultado da pesquisa de nomes será armazenada em algum lugar em um servidor que você não controla.

A única solução a ser imediatamente notificada sobre uma alteração de registro de nome é usar um valor TTL de 0 ao criar/atualizar a entrada no servidor de nomes autoritativo. Mas isso significa que, para cada resolução de nome, o servidor será atingido, geralmente isso não é permitido pelos registradores. Por exemplo, eles podem fornecer uma lista de valores predefinidos de TTL que você pode escolher.

Eu gerencio nomes de domínio diferentes e para ter certeza de que a alteração é bem aplicada nos servidores de nomes oficiais, estou usando uma ferramenta chamada dnstracer que pode mostrar o resultado da pesquisa em cada servidor da raiz do DNS.

Em conclusão, mesmo sem nenhuma solução de armazenamento em cache DNS, ainda haverá um atraso entre o momento em que você altera os registros DNS e a alteração é vista em um PC. Esse atraso depende muito do TTL dos registros e do número de servidores DNS entre o seu PC e o servidor de nomes autoritativo.

5
Benoit

Eu usei o seguinte comando para limpar o cache do DNS na minha caixa do Ubuntu e funcionou de forma fantástica.

Sudo kill -HUP $(pgrep dnsmasq)

Outro sinal útil é o SIGUSR1 que despeja uma pequena estatística no syslog ou como é uma nota de man dnsmasq:

No modo --no-daemon ou quando o log completo está ativado (-q), é feito um despejo completo do conteúdo do cache.

1
j0inty

Eu também encontrei contradições, mas isto: https://superuser.com/a/521562 woks para mim (Ubuntu 13.10 com atualizações mais recentes, nenhum pacote de rede especial instalado).
Em suma, basta usar isso
Sudo /etc/init.d/dns-clean

0
Nitz

No Ubuntu 16.04, eu não consegui limpar o cache a menos que eu fizesse:

Sudo service dnsmasq restart
0
Volomike

Eu recomendo openDNS especialmente em servidores Ubuntu remotos, isso facilita muito a dor ...

Como fazer isso? Bem...

cd /etc/dhcp
Sudo nano dhclient.conf

insert this BEFORE a linha "request subnet-mask ..."

supersede domain-name-servers 208.67.222.222,208.67.220.220;

isso reiniciará a interface tão rápido que você nem perderá sua conexão SSH

Sudo ifdown eth0 && Sudo ifup eth0

verifique isso para ver se o seu novo openDNS está instalado corretamente

cat /etc/resolv.conf
0
D.Snap