Lo svuotamento della cache DNS locale può risolvere gli errori HTTP e proteggerti dallo spoofing DNS. Ecco come puoi farlo su Linux.

Quando accedi a un sito Web utilizzando il suo nome di dominio, il tuo sistema invia una richiesta a un server DNS per ottenere l'indirizzo IP per quel dominio. Questa coppia dominio-indirizzo IP viene salvata nella cache DNS per un uso successivo, quindi non è necessario inviare richieste al server DNS ogni volta per stabilire una connessione.

Ma a volte, la cache DNS locale viene danneggiata e causa errori HTTP. Fortunatamente, svuotare e ricostruire la cache DNS su un computer Linux è semplice. Ecco come farlo.

Perché svuotare la cache DNS su Linux?

Esistono diversi motivi per cui potresti voler ricostruire la cache DNS memorizzata sul tuo sistema. Forse hai un record DNS obsoleto per un sito Web e desideri recuperarlo nuovamente dal server DNS. O forse il tuo sistema è stato compromesso e vuoi assicurarti che anche la cache DNS non sia stata manomessa noto come spoofing DNS.

instagram viewer

Quando si svuota la cache DNS, il sistema deve eseguire nuovamente il ping del server DNS e ottenere da esso il nuovo record dell'indirizzo IP del dominio, rimuovendo eventuali dati obsoleti o compromessi nel processo.

Come visualizzare la cache DNS locale su Linux

Prima di systemd, la maggior parte delle distribuzioni Linux non disponeva di cache DNS a livello di sistema, a meno che un programma come dnsmasq o nscd non fosse configurato manualmente. systemd viene fornito con systemd-resolved, un servizio che risolve i nomi di dominio in indirizzi IP e memorizza nella cache le voci DNS.

Le sezioni seguenti ti guideranno su come visualizzare i contenuti della cache DNS generati da systemd-resolved, nscd e dnsmasq, in modo da poter comprendere i dati memorizzati nella cache prima di decidere di scaricarli.

Visualizza cache DNS per systemd-risolto

Per visualizzare i record della cache risolti da systemd, devi prima terminare temporaneamente il servizio, quindi esportare i suoi registri in un file.

Inizia inviando un segnale SIGUSR1 per terminare il servizio risolto da systemd:

sudo killall -USR1 systemd-risolto

Utilizzo il comando journalctl e l'operatore di output standard per salvare l'output in un file di testo:

sudo journalctl -u systemd-resolved > ~/cache.txt

È quindi possibile visualizzare il contenuto del file utilizzando un editor di testo come Vim:

vim~/cache.txt

Nel file, cercare "CACHE:" premendo Fuga, digitando "/CACHE:", e colpendo accedere. Tutti i record DNS elencati sotto CACHE: fanno parte della cache DNS locale. Premere N per passare al set successivo di voci DNS se stai usando Vim.

Visualizza la cache DNS locale per nscd

Per visualizzare la cache locale generata da nscd, è necessario leggere il contenuto del database degli host nscd utilizzando il comando strings.

Nelle distribuzioni basate su Debian e Ubuntu, questo file si trova in /var/cache/nscd/hosts. Eseguire il seguente comando per visualizzare il file:

stringhe sudo /var/cache/nscd/hosts | uniq

Per visualizzare le statistiche generali sulla cache DNS nscd, utilizzare il file -G bandiera:

sudo nscd -g

Visualizza la cache DNS generata da dnsmasq

dnsmasq memorizza la cache DNS in memoria, quindi non è facile ottenere i record esatti. Ma puoi inviare un segnale kill a dnsmasq e registrarne l'output per ottenere il numero di query DNS elaborate.

Per fare ciò, prima assicurati che dnsmasq sia attivo e funzionante utilizzando il comando systemctl:

sudo systemctl status dnsmasq

Se lo stato mostra Attivo, eseguire il seguente comando per terminare il servizio:

sudo pkill -USR1 dnsmasq

Usando il comando journalctl, estrai i log dnsmasq e salvali in un file di testo:

sudo journalctl -u dnsmasq > ~/cache.txt

Infine, visualizza il contenuto del file utilizzando un'utilità di visualizzazione dei file come gatto o meno:

gatto ~/cache.txt

Come svuotare la cache DNS su Linux

Svuotare la cache DNS significa rimuovere i record DNS memorizzati nella cache dal tuo computer. Questo lo costringe a inviare una richiesta al server DNS per recuperare le nuove voci DNS.

Ecco come puoi svuotare la cache DNS su Linux:

Usando systemd-risolto

Puoi utilizzare il comando resolvectl per svuotare la cache DNS archiviata da systemd-resolved:

sudo resolvectl flush-cache

Se stai usando Ubuntu 17.04 o 18.04, usa il comando systemd-resolved per svuotare la cache:

sudo systemd-resolved --flush-caches

Svuota la cache DNS di nscd su Linux

Il modo più conveniente per rimuovere la cache DNS per nscd è semplicemente riavviare il servizio. Puoi farlo eseguendo:

sudo /etc/init.d/nscd restart

Se non funziona, controlla innanzitutto se la cache locale memorizzata sul tuo PC è persistente. Puoi usare il -G flag per verificarlo:

sudo nscd -g

Se questo è il caso, usa il -io flag con il comando nscd per cancellare i record (io sta per invalidare):

sudo nscd -i hosts

Rimuovere la cache DNS dnsmasq

Svuotare la cache DNS generata da dnsmasq è semplice. Poiché la cache è archiviata in memoria, il riavvio del servizio elimina tutte le voci memorizzate.

Per riavviare dnsmasq, esegui il seguente comando systemctl:

sudo systemctl riavvia dnsmasq

Oppure, emetti il ​​seguente comando:

riavvio del servizio dnsmasq

Immettere la password dell'amministratore se richiesta. dnsmasq verrà ora riavviato e tutte le voci DNS esistenti verranno rimosse dalla cache.

Dopo aver svuotato la cache DNS, è meglio visualizzare le voci della cache locale e verificare se i dati sono stati rimossi correttamente. Puoi usare dig, uno dei molti comandi Linux per la risoluzione dei problemi di retee controllare il valore Query time nell'output. Se è superiore a 0 msec, la cache è stata cancellata correttamente (0 msec significa che il record del dominio è ancora nella cache).

scavare google.com

Svuota la cache DNS di Google Chrome

Anche il browser Web che utilizzi di frequente memorizza nella cache i record DNS. Quando inserisci un URL, il sistema cerca una voce nella cache del browser locale. Se non viene trovato, controlla i record nella cache del sistema locale. È fondamentale cancellare la cache DNS del browser Web poiché ha una precedenza maggiore rispetto alla cache a livello di sistema.

Per dimostrazione, svuotiamo la cache DNS in Google Chrome. Ci sono modi per farlo anche su altri browser, quindi è meglio che tu cerchi su Google come farlo per il browser che usi.

Per iniziare, digita "chrome://net-internals/#dns" nella barra degli URL e premi accedere:

Clic Svuota la cache dell'host per cancellare le voci DNS memorizzate in Google Chrome.

Linux è il miglior sistema operativo per imparare il networking

Linux potrebbe sembrare complicato all'inizio, ma se investi un po' di tempo nell'apprendere come funziona, ti renderai presto conto che è fantastico e forse anche migliore di Windows o macOS.

La maggior parte dei server online esegue Linux, ed è uno dei motivi per cui Linux è l'ideale se vuoi imparare il networking o desideri sapere come funzionano i computer, in generale.