Domanda Come si cancella la cache DNS?


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

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


153
2017-08-13 21:23


origine


Inoltre, controlla /etc/hosts. Sono sicuro che il vecchio indirizzo IP del mio dominio è stato memorizzato nella cache, ma solo strace ping example.com ha rivelato che ho dimenticato di rimuovere il /etc/hosts registro che ho aggiunto un tempo fa a causa della mancanza di pazienza per la propagazione del DNS. - ulidtko
molte di queste risposte suggeriscono che la memorizzazione nella cache è disabilitata per impostazione predefinita, ma si riferiscono anche alle versioni precedenti. Certamente sembra essere attivo per impostazione predefinita nella mia macchina (18.04) e varie risposte di seguito mostrano come scaricarlo, basta scorrere verso il basso - Madivad


risposte:


Per il 18.04 e oltre

Guarda a La risposta di Mike Shultz.

Per 11.10 e sotto

Ubuntu non memorizza nella cache i record dns per impostazione predefinita, quindi, a meno che tu non abbia installato una cache dns, non c'è nulla da cancellare.

I record DNS sono probabilmente memorizzati nella cache dei server DNS del tuo provider, quindi se vuoi controllare se le modifiche al 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

Si desidera che Ubuntu inizi a memorizzare i dns nella cache che consiglio di installare pdnsd insieme a resolvconf. nscd è bacato e non consigliabile.


52
2017-08-14 00:13



Qualsiasi riferimento al motivo per cui nscd è bacato? È ancora bacato oggi (2012-10)? - jjmontes
Puoi aggiornare la tua risposta - ATM sembra che le versioni di Ubuntu 11.10+ facciano cache dei record DNS. - Martin Konecny


12.04

Utilizza Ubuntu 12.04 dnsmasq in cui è incorporato network-manager, ma ciò non lo fa cache DNS quindi non è necessario svuotarlo. Ecco una linea di esempio dalla mia syslog per dimostrare questo punto:

dnsmasq[2980]: started, version 2.59 cache disabled

Non è inoltre necessaria alcuna configurazione di dnsmasq. Se stai utilizzando le impostazioni di borsa, non sarà il dns nella cache, poiché per farlo devi impostarlo esplicitamente come Articolo di Ubuntu descrive.

Se si desidera aggiornare le impostazioni, è possibile disabilitare e abilitare la connessione in rete o eseguire

sudo service network-manager restart

Questo riavvia dnsmasq perché è costruito dentro network-manager; controlla il tuo syslog per le prove per questo.

Se si sta utilizzando una connessione cablata con dhcp network manager prenderà le impostazioni direttamente dal tuo router e la connessione verrà stabilita automaticamente quando accedi a Ubuntu. È possibile verificare che le impostazioni siano corrette nel router se è possibile accedervi tramite l'interfaccia Web e, eventualmente, riavviarla.  Se si tratta di un problema generale con dns, puoi provare a utilizzare Google dns invece del tuo isp dns, e maggiori informazioni su ciò è dettagliato qui.


69
2017-09-14 20:39



sudo service network-manager restart ha fatto il trucco per me con Debian - Pierre de LESPINAY


Nota che Ubuntu usa systemd-resolve dal 17.04 in poi quindi questa risposta non si applica più alle recenti versioni di Ubuntu. Vedi "svuota la cache DNS in Ubuntu 17.04 e versioni successive (18.04)"

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

Per confermare in un modo o nell'altro se dnsmasq è il caching, corri ps ax | grep dnsmasq e guarda il comando di marcia. Ecco una ripartizione della mia macchina 13.10 predefinita:

/ usr / sbin / dnsmasq \
  --no-resolv \
  - keep-in-foreground \
  --no-hosts \
  --bind-interface \
  --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=0significa cosa pensiamo significhi (invece di un illimitato cache), 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.

Allora mentre dnsmasq  può cache DNS, non sta nascondendo la casella. Puoi controllare la tua macchina e varie directory di configurazione per verificare di essere sulla stessa pagina.

Se stai riscontrando problemi con la cache, è probabile che ciò avvenga in uno dei pochi posti:

  • A monte del tuo computer. Alcuni router si nascondono. Molte reti aziendali nascondono il DNS. Molti server DNS gestiti da ISP utilizzano le proprie cache. L'unico modo per garantire contro una cache di rete è utilizzare una cache che è possibile aggiornare manualmente. Questo è il motivo per cui mi piace OpenDNS.
  • Nell'applicazione client (in particolare i browser). Le applicazioni possono fare ogni sorta di caching personale su cui Ubuntu non ha alcun effetto. Come Firefox memorizza nella cache il DNS. Come cancellare la cache DNS di Chrome. Altri browser (e applicazioni) potrebbero avere i loro meccanismi.
  • Sto raschiando il barile qui, ma forse hai installato un server DNS non standard in Ubuntu invece di attivare il caching in dnsmasq. Ci sono molti: nscd, DJBDNS dnscache (aka TinyDNS), pdns, pdnsd, Bind9 (e le sue varianti), e altro ancora non riesco nemmeno a ricordare. Queste volontà probabilmente essere evidenziato in /etc/resolv.conf (con config in / etc / resolvconf / `per autogenare quel file). Quanto segue mostra 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 posso vedere questo è giusto dnsmasq configurare per rispecchiare le query DNS per LXC, ma nel tuo caso potrebbe fare cose cattive in cache.

    Se hai fatto delle cache elencate, il processo di cancellazione di 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 il caching in dnsmasq.


59
2018-03-17 10:40



Il mio output da ps aux | grep è uguale al tuo, eppure qualcosa sicuramente sta memorizzando nella cache i DNS sulla mia macchina. Se non è dnsmasq è qualcos'altro. Prova: ho creato un sottodominio sul mio server, ma non ho potuto eseguire il ping, host irraggiungibile. Ho controllato downforeveryoneorjustme.com ed era scaduto, quindi il problema di propagazione è stato scartato. Non il mio router, né il mio ISP, perché uso il DNS 8.8.8.8 di Google. Quindi ho riavviato il computer (e NON il router) e sono riuscito a raggiungere il dominio. Ho dovuto riprovare una dozzina di volte prima di ripartire senza fortuna. Prima prova dopo il riavvio raggiunto l'host. - matteo
A proposito, non è stata la prima volta che ho provato la stessa cosa. Mesi fa accadde lo stesso e l'unico modo per raggiungere il dominio era il riavvio del computer, ma poi avevo una versione più vecchia di Ubuntu. - matteo
@matteo Il browser? - Oli♦
no, come ho detto ho provato con il ping, non (solo) il browser (s). - matteo
@matteo ne ho aggiunti altri ma sono a corto di idee. Non ci sono molti altri posti in cui qualcuno poteva cache DNS :) - Oli♦


Per 12.04:

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

sudo kill -HUP $(pgrep dnsmasq)

40
2017-07-21 21:32



Grazie! Sei il primo che ho visto menzionare qualcosa circa il caching di default della 12.04! - Tarka
12.04 non memorizza nella cache dns per impostazione predefinita- controlla il tuo syslog dopo aver riavviato il gestore di rete; avrà una voce che mostra che dnsmasq inizia con cache disabilitata.
Non so se la cache è abilitata di default, ma questa risposta ha funzionato per me. - jeyk
Perché non solo sudo killall -HUP dnsmasq? - James Haigh
uso pkill invece di kill e pgrep - Robert Siemer


sudo /etc/init.d/nscd restart

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

Inoltre, puoi controllare e vedere se le tue modifiche al DNS si sono propagate utilizzando dig e cercando altri utenti oltre ai tuoi server DNS predefiniti. In questo caso google DNS.

dig @8.8.8.8 example.com


16
2017-08-13 21:25



Vale la pena notare che nscd non è installato di default. - Scaine


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

12
2018-06-27 04:09



OMG, vuoi sposarmi? Risolto il problema anche con la 18.04 \ o / - NiKo
Questo non ha funzionato per me su LTS 16.04 - ma è stato utile vedere un altro modo in cui potrebbe essere stato memorizzato nella cache: sudo systemd-resolve --statistics - Phil


Personalmente, lo farei usa OpenDNS e usa loro Funzione Cache Check 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 è un animale lento. La pazienza ti manterrà sano di mente.


11
2017-08-13 21:26



+1 Uso OpenDNS e la cache chiara è molto utile. - Mark Davidson
Sono sospettoso di OpenDNS. All'inizio ero contento, ma poi ho cominciato a diventare sospettoso; anche se penso che se è una scelta tra ISP e OpenDNS, sto meglio con OpenDNS, giusto? - Jono
Direi che OpenDNS è il male minore. Vorrebbero monetizzare il tuo traffico, ma solo su hit di dom negativi. - Oli♦


Se stai usando nscd:

sudo /etc/init.d/nscd restart

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

Controlla se è il nuovo o il vecchio IP. La maggior parte dei browser cache anche il DNS, quindi se non hai riavviato Chromium o qualunque cosa potresti non vedere più tardi.

ping yourdomain.com

Cambia il tuo server dei nomi locale in /etc/resolv.conf con un altro provider, google o livello, esempi:

nameserver 8.8.8.8
nameserver 4.2.2.2

E poi ping di nuovo.

Assicurati che il tuo router non memorizzi nella cache il DNS in nessuna forma. (Varia in base al router / firmware / ecc.)

Finalmente, pazienza. DNS può richiedere un po 'di tempo per propagarsi su Internet.


7
2017-08-13 21:33



Se si utilizza NetworkManager e DHCP /etc/resolve.conf si svuoterà quando scadrà il lease DHCP, quindi sarà necessario impostare un IP statico in NetworkManager per farlo funzionare più a lungo. - LassePoulsen
+1 Non mi sono reso conto che Firefox stava memorizzando nella cache DNS, questo ha aiutato molto. - wavemode
+1 per cambiare il nameserver locale in google ha funzionato - Bibek Sharma


Tutte le risposte sopra hanno dimenticato una cosa importante nella risoluzione del nome: in genere i server DNS a cui si richiede la risoluzione del nome non è quello in cui si trovano i record stessi (il server autorevole). Poiché ogni record DNS viene fornito con un valore Time To Live che obbliga ogni server DNS nella catena di risoluzione a fare il caching durante il numero di secondi menzionati da questo valore. Pertanto, non solo è possibile memorizzare nella cache la macchina, ma Sicuramente il risultato della ricerca del nome verrà memorizzato nella cache da qualche parte su un server che non controlli.

L'unica soluzione da notificare immediatamente di una modifica del record del nome consiste nell'utilizzare un valore TTL pari a 0 quando si crea / aggiorna la voce nel server dei nomi autorevole. Ma questo significa che per ogni risoluzione del nome, il server verrà colpito, di solito questo non è consentito dai registrar. Ad esempio, possono fornire un elenco di valori TTL predefiniti che è possibile scegliere.

Gestisco diversi nomi di dominio e per essere sicuro che le modifiche siano ben applicate 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 una soluzione di memorizzazione nella cache DNS, ci sarà comunque un ritardo tra il momento in cui cambi i record DNS e il cambiamento viene visto su un PC. Questo ritardo dipende molto dal TTL dei record e dal numero di server DNS tra il PC e il server dei nomi autorevole.


5
2018-03-18 10:07



Certo, ma se questo era il problema, riavviare il computer non lo risolveva. - matteo