Inizio
/
Assistenza sito web
/
Altro
/
Come svuotare la cache DNS in Linux?

Come svuotare la cache DNS in Linux?

Forse hai notato che i siti web che visiti frequentemente vengono caricati molto più velocemente di altri. Ciò accade a causa della cache del browser e della cache DNS raccolta dal sistema operativo Linux. Consente alla tua macchina Linux di recuperare le informazioni DNS localmente, invece di aspettare il risolutore DNS pubblico.

Spesso, però, questa cache DNS può diventare non valida o danneggiata. Questo può portare a problemi durante il caricamento del tuo sito web nel browser. Devi istruire il tuo Linux a svuotare la cache DNS in tali occasioni.

Questo articolo si concentrerà su cos’è una cache DNS, come determinare il risolutore DNS utilizzato da Ubuntu e come svuotare il DNS in Linux Ubuntu.

Cos’è una cache DNS?

Il Domain Name System (DNS) è un sistema di denominazione globale progettato per mappare i nomi di dominio agli indirizzi IP del server corrispondente. Il lato utente del DNS è chiamato risolutore DNS (Stub Resolver) che interroga la cache DNS riducendo il carico sui server DNS a monte.

La cache DNS è il database temporaneo delle traduzioni da dominio a IP raccolte dal tuo sistema operativo (SO).

Le informazioni memorizzate nella cache DNS sono costituite da record di risorse (RR) che contengono gli indirizzi IP dei nomi di dominio visitati di frequente.

Questi record includono requisiti come Nome, Tipo di record, Tempo di pubblicazione (TTL), Classe, Dati risorsa e Lunghezza dati risorsa. Time to live (TTL) si riferisce al tempo (in secondi) in cui un record è considerato valido prima che venga avviata una nuova ricerca DNS. Tutti i dati in un file di record sono in codice ASCII e c’è una riga separata per ogni nome di dominio in esso. Ecco come appare un formato comune di un record di risorse:

<name> <ttl> <class> <type> <rdlength> <radata>

Quando provi a caricare un sito web, il tuo browser invia una query al tuo sistema operativo che ha bisogno dell’IP per questo nome di dominio. Il sistema operativo invia questa query al risolutore DNS locale per trovare se esiste un record di risorse nella cache DNS.

Se non ci sono record nella cache locale, il sistema operativo avvierà una ricerca DNS sul server DNS pubblico e attenderà di ricevere l’indirizzo IP del server del dominio. Una volta consegnati questi dati, il sistema operativo li memorizza nella cache DNS per un ulteriore utilizzo.

DNS cache

Nel caso in cui la cache DNS abbia un record per il dominio in questione, il browser servirà il contenuto del sito Web più velocemente. Pertanto, la cache DNS semplifica il processo di ricerca DNS e funge da acceleratore, migliorando l’esperienza di navigazione complessiva.

Tuttavia, come accennato in precedenza, la cache DNS è uno stack temporaneo di record DNS e, come tale, potrebbe scadere o danneggiarsi. Quando ciò accade, potresti non essere in grado di raggiungere il tuo sito web o qualsiasi altro dei tuoi siti web preferiti a causa di vari errori DNS.

Questi errori possono essere correlati alla propagazione DNS o ad attacchi di spoofing DNS. Potresti anche essere interessato alla tua privacy e reimpostare frequentemente i record della cache DNS potrebbe essere d’aiuto.

Per modificare un problema di questo tipo, è necessario forzare un flush DNS sul proprio computer Linux. Ciò cancellerà le informazioni obsolete e il tuo sistema operativo inizierà a generare nuovi record per memorizzare nella cache i risultati di ulteriori query DNS.

Trova il tuo risolutore DNS locale

Diverse versioni della distribuzione Linux più comunemente usata, Ubuntu, possono utilizzare vari servizi come risolutore DNS. La maggior parte dei sistemi Linux utilizza systemd-resolved o dnsmasq come applicazione di risoluzione DNS.

Pertanto, la prima cosa che devi fare prima di impegnarti con uno svuotamento DNS di Linux è controllare quale risolutore DNS utilizza il tuo sistema.

Per farlo, dovrai caricare il Terminale e il modo più semplice per farlo è usare la combinazione di tasti Ctrl + Alt + T.

Quindi digita il seguente comando:

sudo lsof -i :53 -S

Il comando restituirà tutti i servizi in ascolto sulla porta 53, la porta del server riservata al DNS. In questo modo, puoi vedere quale è il risolutore DNS che il tuo Linux sta usando per svuotare la sua cache DNS.

Controllo risolutore dns

Come si vede dallo screenshot qui sopra, sulla versione più recente di Ubuntu (22.04), il servizio in ascolto sulla porta DNS 53 è systemd-resolved. Questa è la configurazione per tutte le versioni di Ubuntu dalla versione 18.04.

Le versioni precedenti potrebbero funzionare con il risolutore DNS dnsmasq e, se questo è il tuo caso, l’output del comando apparirà come nello screenshot qui sotto:

dnsmasq risolutore DNS su Ubuntu 16.04

Dopo aver capito quale risolutore DNS sta usando il tuo sistema, puoi procedere con il comando flush DNS corretto per il tuo Linux.

Come svuotare la cache DNS su Linux?

Abbiamo elencato i comandi che puoi utilizzare per svuotare la cache DNS su diverse configurazioni Linux nelle sezioni seguenti.

Svuota i DNS di Linux usando systemd-resolved

Se il tuo sistema Linux è un servizio risolto da systemd, puoi utilizzare uno dei seguenti comandi nella finestra Terminale:

$ sudo resolvectl flush-caches
$ sudo systemd-resolve --flush-caches

Nota che nessuno dei comandi precedenti fornisce alcun output per la conferma. Tuttavia, è possibile utilizzare i seguenti comandi corrispondenti per controllare il valore Current Cache Size.

$ sudo systemd-resolve --statistics
$ sudo resolvectl statistics

Ecco come appare l’output con il valore Current Cache Size:

Dimension attuale della cache in systemd-resolved

Svuota la cache DNS usando i segnali

Un modo alternativo per cancellare la cache DNS in un sistema che utilizza systemd-resolved è inviare un segnale “USR2” al risolutore DNS.

$ sudo killall -USR2 systemd-resolved

Successivamente, utilizza il segnale “USR1” per istruire il servizio a scaricare il suo stato corrente nel systemd-journal. Puoi farlo eseguendo i seguenti due comandi consecutivamente e l’output ti mostrerà il registro che conferma lo svuotamento della cache.

$ sudo killall -USR1 systemd-resolved
$ sudo journalctl -r -u systemd-resolved

Svuota DNS usando dnsmasq

A condizione che la tua macchina utilizzi “dnsmasq” per risolvere il DNS, puoi eseguire il comando come mostrato di seguito.

$ sudo killall -HUP dnsmasq

Poiché l’esecuzione di questo comando non genera conferma, è possibile utilizzare nuovamente un “USR1” per segnalare il processo. Questo registrerà le statistiche nel file “syslog” e l’utilizzo di un comando “tail” mostrerà che la dimensione della cache è 0.

$ sudo killall -USR1 dnsmasq
$ tail -f n1000 /var/log/syslog |grep "cache size"
Svuota la cache dnsmasq in Ubuntu

Dnsmasq esegue un servizio

In determinate occasioni, Dnsmasq potrebbe essere eseguito come servizio sul tuo server. Per verificare se dnsmasq è attivo, puoi eseguire questo comando:

$ sudo systemctl is-active dnsmasq

Per i sistemi basati su SysVinit, puoi vedere se dnsmasq è attivo e procedere con il comando seguente:

$ sudo service dnsmasq status

A seconda del tipo di configurazione del sistema, è possibile utilizzare uno dei due comandi successivi per riavviare il servizio.

$ sudo systemctl restart dnsmasq
$ sudo service dnsmasq restart

Il riavvio del servizio Dnsmasq ripristinerà la cache raccolta nel sistema.

Svuota la cache DNS usando Nscd in RedHat

Nel caso in cui tu stia utilizzando la distribuzione RedHat Linux, è molto probabile che stia eseguendo il Name Server Cache Daemon (Nscd). Puoi svuotare la cache DNS di quel servizio eseguendo uno dei comandi qui descritti.

$ sudo systemctl restart nscd.service
$ sudo service nscd restart

Svuota la cache DNS su Google Chrome

Oltre alla cache DNS del sistema operativo, anche il browser Google Chrome sta impilando la cache DNS. Per assicurarti che la cache DNS di Chrome non ti impedisca di accedere al tuo sito web, devi svuotarla.

Devi aprire il browser Chrome e incollare questo nella barra degli indirizzi:

chrome://net-internals/#dns

Questo ti inoltrerà alla pagina delle impostazioni di rete interna di Chrome e dovrai fare clic sul pulsante “Svuota cache host” per svuotare la cache.

Chrome DNS cache

Per riassumere, se si verificano errori DNS o si ha a che fare con la propagazione DNS, è necessario svuotare la cache DNS di Linux. Inoltre, svuotare questa cache può aiutare a risolvere i problemi di spoofing DNS o aiutare a costruire un’esperienza di rete sicura per te. Seguire i passaggi descritti in questo articolo ti aiuterà a farlo in modo indipendente e a risolvere tali problemi.

Condividi questo articolo