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.
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.