it-swarm.it

Come posso cancellare la cache DNS?

Ho appena aggiornato il record DNS (ns1, ns2, ns3.myhostingcompany.com) per un sito che ho ospitato, ma ottengo ancora la pagina di parcheggio del registrar di domini.

Mi piacerebbe vedere se il problema riguarda i record DNS nella cache di Ubuntu. C'è un modo per cancellare la cache DNS di Ubuntu? (se esiste una cosa del genere?)

192
Jono

Per 18.04 e versioni successive

Guarda la risposta di Mike Shultz .

Per l'11.10 e sotto

Ubuntu non memorizza nella cache i record DNS per impostazione predefinita, quindi se non hai installato una cache DNS non c'è nulla da cancellare.

I record DNS sono probabilmente memorizzati nella cache dai server DNS del tuo provider, quindi se vuoi verificare se le modifiche DNS che hai apportato hanno avuto successo puoi interrogare un server DNS dal tuo servizio di hosting del dominio con Dig:

Dig -t a ns1.myhostingcompany.com @domain_registrar_dns_server

Se vuoi che Ubuntu inizi a memorizzare nella cache dns, ti consiglio di installare pdnsd insieme a resolvconf. nscd è difettoso e non consigliabile.

64
Li Lo

12.04

Ubuntu 12.04 usa dnsmasq che è integrato in network-manager, ma non memorizza nella cache DNS quindi non c'è bisogno di sciacquarlo. Ecco una riga di esempio dal mio syslog per dimostrare questo punto:

dnsmasq[2980]: started, version 2.59 cache disabled

Non è inoltre necessaria alcuna configurazione di dnsmasq. Se si esegue con le impostazioni di stock non sarà memorizzato nella cache dns, per farlo, è necessario configurarlo esplicitamente come questo articolo di Ubunt descrive.

Se si desidera aggiornare le impostazioni è possibile disabilitare e quindi abilitare la rete o eseguire

Sudo service network-manager restart

Questo riavvia dnsmasq perché è incorporato in network-manager; controlla il tuo syslog per le prove a riguardo.

Se si utilizza una connessione cablata con dhcp network manager prenderà le impostazioni direttamente dal router e la connessione verrà stabilita automaticamente quando si accede a Ubuntu. È possibile verificare che le impostazioni siano corrette nel router se è possibile accedervi tramite l'interfaccia Web e, se necessario, riavviarlo. Se si tratta di un problema generale con DNS, potresti provare a utilizzare Google DNS anziché il tuo isp DNS, e maggiori informazioni su questo sono dettagliato qui .

70
user76204

Ubuntu 17.04 e versioni successive (18.04)

Da Ubuntu 17.04 in poi, systemd-resolve viene utilizzato per DNS. Puoi svuotare le cache di systemd in questo modo:

Sudo systemd-resolve --flush-caches
66
Mike Shultz

Nota che Ubuntu utilizza la risoluzione del sistema da 17.04 in poi, quindi questa risposta non si applica più alle versioni recenti di Ubuntu. Vedi " svuota la cache DNS in Ubuntu 17.04 e successive (18.04) "

Per impostazione predefinita, DNS non è memorizzato nella cache in Ubuntu <17.04 (ma potrebbe essere memorizzato nella cache della rete o dell'applicazione)

Per confermare in un modo o nell'altro se dnsmasq sta memorizzando nella cache, eseguire ps ax | grep dnsmasq e guardare il comando in esecuzione. Ecco una ripartizione della mia macchina 13.10 predefinita:

/ usr/sbin/dnsmasq\
 --no-resolv\
 --keep-in-foreground\
 --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 è vuoto per impostazione predefinita. Quindi non ci sono override in arrivo e solo per controllare --cache-size=0 significa cosa pensiamo significhi (invece di una cache illimitata ), man dnsmasq Spettacoli:

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

Quindi, mentre dnsmasq può memorizzare nella cache DNS, non viene memorizzato nella cache. Puoi controllare la tua macchina e varie directory di configurazione per verificare di essere sulla stessa pagina.

Se riscontri problemi di cache, è probabile che ciò accada in uno dei seguenti punti:

  • A monte del tuo computer. Cache di alcuni router. Molte reti aziendali memorizzeranno nella cache DNS. Molti server DNS gestiti dall'ISP e useranno le loro cache. L'unico modo per garantire contro una cache di rete è utilizzare una cache che è possibile aggiornare manualmente. Ecco perché mi piace OpenDNS.
  • Nell'applicazione client (in particolare i browser). Le applicazioni possono eseguire ogni sorta di cache su cui Ubuntu non ha alcun effetto. Come Firefox memorizza nella cache DNS . Come cancellare la cache DNS di Chrome . Altri browser (e applicazioni) potrebbero avere i propri meccanismi.
  • Sto raschiando la canna qui, ma forse hai installato un server DNS non standard in Ubuntu invece di attivare la cache in dnsmasq. Ce ne sono molti: nscd, DJBDNS dnscache (aka TinyDNS), pdns, pdnsd, Bind9 (e le sue varianti) e altro che non ricordo nemmeno. Questi probabilmente saranno evidenziati in /etc/resolv.conf (con la configurazione in/etc/resolvconf/`per autogen quel file). Di seguito viene mostrata una query DNS intercettata 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 non stai colpendo 8.8.8.8 (o qualunque cosa ti aspetti dal tuo server DNS), controlla invece cosa stai colpendo. Nel mio caso, vedo che questo è solo dnsmasq impostato per rispecchiare le query DNS per LXC, ma nel tuo caso potrebbe fare cose cattive nella cache.

    Se hai fatto delle cache elencate, il processo per svuotare ciascuna varia:

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

Su una nota leggermente correlata, vedere questo per abilitare la memorizzazione nella cache in dnsmasq .

62
Oli

Per 12.04:

Ubuntu 12.04 memorizza nella cache DNS usando dnsmasq (vedi man dnsmasq). Utilizzare quanto segue per cancellare la cache:

Sudo kill -HUP $(pgrep dnsmasq)
39
zechariah

Sudo /etc/init.d/nscd restart

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

Inoltre, come nota, puoi controllare e vedere se le tue modifiche DNS si sono propagate usando Dig e cercando qualcuno diverso dai tuoi server DNS predefiniti. In questo caso google DNS.

Dig @8.8.8.8 example.com

15
Mark Davidson

Personalmente, --- so OpenDNS e uso funzione Cache Check per forzare un aggiornamento solo per assicurarsi che le modifiche funzionino ma non è possibile garanzia si aggiorneranno per i tuoi utenti entro 48 ore.

Il DNS è una bestia lenta. La pazienza ti manterrà sano di mente.

11
Oli

Se stai usando nscd:

Sudo /etc/init.d/nscd restart

Vale la pena ricordare che potrebbe non essere il sistema operativo che lo sta memorizzando nella cache. Everyone piace memorizzare nella cache DNS ... Alcuni test:

Verifica se si tratta dell'IP nuovo o precedente. La maggior parte dei browser memorizza anche nella cache DNS, quindi se non hai riavviato Chromium o qualsiasi altra cosa potresti non vedere le ultime novità.

ping yourdomain.com

Passa il tuo nameserver locale in /etc/resolv.conf a un altro provider, google o livello, esempi:

nameserver 8.8.8.8
nameserver 4.2.2.2

E poi esegui nuovamente il ping.

Verificare che il router non stia memorizzando nella cache DNS in alcun modo. (Varia in base al router/firmware/ecc.)

Finalmente pazienza. Il DNS può impiegare un po 'di tempo a propagarsi su Internet.

7
bikesandcode

Tutte le risposte sopra hanno dimenticato una cosa importante nella risoluzione dei nomi: generalmente i server DNS a cui si richiede la risoluzione dei nomi non sono quelli che detengono i record stessi (il server autorevole). Poiché ogni record DNS viene fornito con un valore Time To Live che obbliga ciascun server DNS nella catena di risoluzione a eseguire la memorizzazione nella cache per la quantità di secondi indicata da questo valore. Quindi non solo puoi memorizzare nella cache della tua macchina, ma Certamente il risultato della ricerca del nome verrà memorizzato nella cache da qualche parte su un server che non controlli.

L'unica soluzione per ricevere immediatamente una notifica di una modifica del record del nome è utilizzare un valore TTL pari a 0 quando si crea/aggiorna la voce nel server dei nomi autorevole. Ciò significa che per ogni risoluzione dei nomi verrà colpito il server, in genere ciò non è consentito dai registrar. Ad esempio, possono fornire un elenco di valori predefiniti TTL che puoi scegliere.

Gestisco nomi di dominio diversi e per essere sicuro che la modifica sia ben applicata nei server dei nomi autorevoli, sto usando uno strumento chiamato dnstracer che può mostrare il risultato della ricerca su ciascun server dalla radice DNS.

In conclusione, anche senza alcuna soluzione di memorizzazione nella cache DNS, ci sarà ancora un ritardo tra il momento in cui cambi i record DNS e la modifica viene visualizzata su un PC. Questo ritardo dipende fortemente dal TTL dei record e dal numero di server DNS tra il PC e il server dei nomi autorevole.

5
Benoit

Per Ubuntu 14.04, consiglio questo comando:

Sudo service dns-clean
2
alphayax

Ho usato il seguente comando per svuotare la cache DNS sulla mia casella Ubuntu 12.10 e ha funzionato alla grande.

Sudo kill -HUP $(pgrep dnsmasq)

Un altro segnale utile è SIGUSR1 che scarica un po 'di statistica su syslog o come è nota da man dnsmasq:

In modalità --no-daemon o quando è abilitata la registrazione completa (-q), viene eseguito un dump completo del contenuto della cache.

1
j0inty

Ho anche trovato contraddizioni, ma questo: https://superuser.com/a/521562 mi sveglia (Ubuntu 13.10 con gli ultimi aggiornamenti, nessun pacchetto di rete speciale installato).
In breve, usa questo
Sudo /etc/init.d/dns-clean

0
Nitz

Su Ubuntu 16.04, non riuscivo a cancellare la cache a meno che non facessi:

Sudo service dnsmasq restart
0
Volomike

Raccomando openDNS specialmente nei server Ubuntu remoti, allevia molto dolore ...

Come farlo? Bene...

cd /etc/dhcp
Sudo nano dhclient.conf

inserire questa PRIMA DI la riga "richiesta maschera di sottorete ..."

supersede domain-name-servers 208.67.222.222,208.67.220.220;

questo riavvierà l'interfaccia così velocemente che non dovresti nemmeno perdere la connessione SSH

Sudo ifdown eth0 && Sudo ifup eth0

controlla questo per vedere se il tuo nuovissimo openDNS è installato correttamente

cat /etc/resolv.conf
0
D.Snap