DNS, abbreviazione di Domain Name System protocollo, viene utilizzato sui sistemi Linux per recuperare gli indirizzi IP associati ai nomi.
Ad esempio, quando esegui una richiesta ping, è molto probabile che tu stia utilizzando il protocollo DNS per recuperare l'IP del server.
Nella maggior parte dei casi, le richieste DNS che esegui vengono archiviati in una cache locale del tuo sistema operativo.
Tuttavia, in alcuni casi, potresti voler svuotare la cache DNS del tuo server .
Potrebbe essere perché hai modificato l'IP di un server sulla tua rete e desideri che le modifiche si riflettano immediatamente.
In questo tutorial imparerai come puoi svuotare facilmente la cache DNS su Linux , indipendentemente dal fatto che tu stia utilizzando systemd o dnsmasq.
Prerequisiti
Per poter svuotare la cache DNS, devi sapere come funziona la risoluzione DNS sul tuo sistema Linux .
A seconda della tua distribuzione, potresti trovarti di fronte a diversi servizi Linux che fungono da risolutore DNS .
Prima di iniziare, è molto importante per te sapere come avverrà effettivamente la risoluzione DNS sul tuo sistema operativo.
Se stai leggendo questo articolo, stai cercando di svuotare la cache del tuo resolver DNS locale . Ma come puoi vedere, ci sono molte cache diverse dalla tua applicazione locale fino ai server DNS Internet effettivi.
In questo tutorial, ci concentreremo sulla casella gialla che indica il risolutore di stub locale implementato su ogni sistema Linux.
Trovare il tuo resolver DNS locale
Sulla maggior parte dei sistemi Linux, il risolutore DNS è "systemd-resolved" o dnsmasq. Per sapere se hai a che fare con l'uno o l'altro, puoi eseguire il seguente comando
$ sudo lsof -i :53 -S
Nota :quindi perché stiamo eseguendo questo comando? Poiché il DNS viene eseguito sulla porta 53, stiamo cercando i comandi associati al servizio in esecuzione sulla porta 53, che è il tuo resolver DNS locale o "stub".
Come puoi vedere, su una recente distribuzione Ubuntu 20.04, il servizio in ascolto sulla porta 53 è risolto con systemd. Tuttavia, se dovessi eseguire questo comando su Ubuntu 14.04, otterresti un output diverso.
In questo caso, il DNS locale utilizzato in dnsmasq e nei comandi è ovviamente diverso.
Conoscendo queste informazioni, puoi andare al capitolo che ti interessa. Se dovessi avere un output diverso sul tuo server, assicurati di lasciare un commento per farci aggiornare questo articolo.
Svuota DNS utilizzando systemd-resolved
Il modo più semplice per svuotare il DNS su Linux, se stai usando systemd-resolved, è usare il comando "systemd-resolve" seguito da "–flush-caches".
In alternativa, puoi utilizzare il comando "resolvectl" seguito dall'opzione "flush-caches".
$ sudo systemd-resolve --flush-caches
$ sudo resolvectl flush-caches
Per verificare che la tua cache DNS DNS sia stata effettivamente svuotata, puoi utilizzare le "–statistiche " opzione che evidenzierà la "Dimensione attuale della cache" nella sezione "Cache".
$ sudo systemd-resolve --statistics
Congratulazioni, hai svuotato con successo la tua cache DNS su Linux!
Svuota la cache DNS utilizzando i segnali
Un altro modo per svuotare la cache DNS può essere ottenuto inviando un segnale "USR2" al servizio "risolto dal sistema" che gli indicherà di svuotare la sua cache DNS.
$ sudo killall -USR2 systemd-resolved
Per verificare che la cache DNS sia stata effettivamente svuotata, puoi inviare un "USR1 ” segnale al servizio systemd-resolved. In questo modo, scaricherà il suo stato attuale nel diario di sistema.
$ sudo killall -USR1 systemd-resolved
$ sudo journalctl -r -u systemd-resolved
Fantastico, la tua cache DNS è stata svuotata correttamente utilizzando i segnali!
Svuota DNS utilizzando dnsmasq
Il modo più semplice per svuotare il tuo resolver DNS, quando usi dnsmasq, è inviare un segnale "SIGHUP" al processo "dnsmasq" con il comando "killall".
$ sudo killall -HUP dnsmasq
Analogamente a systemd-resolved, puoi inviare un "USR1 ” al processo in modo che stampi le sue statistiche nel file di registro “syslog”. Utilizzando un semplice comando "tail", siamo in grado di verificare che la cache DNS sia stata effettivamente svuotata.
E se esegui dnsmasq come servizio?
Dnsmasq esegue un servizio
In alcuni casi, puoi eseguire "dnsmasq" come servizio sul tuo server. Per verificare se questo è il caso o meno, puoi eseguire il comando “systemctl” o quello “service” se sei su un sistema SysVinit.
$ sudo systemctl is-active dnsmasq
# On SysVinit systems
$ sudo service dnsmasq status
Se noti che dnsmasq è in esecuzione come servizio, puoi riavviarlo utilizzando il solito "systemctl ” o “servizio ” comandi.
$ sudo systemctl restart dnsmasq
# On SysVinit systems
$ sudo service dnsmasq restart
Dopo aver eseguito questi comandi, assicurati sempre che i tuoi servizi siano stati riavviati correttamente.
$ sudo systemctl status dnsmasq
# On SysVinit systems
$ sudo service dnsmasq status
Conclusione
In questo tutorial, hai imparato come svuotare rapidamente e facilmente la tua cache DNS su Linux.
Utilizzando questo articolo, puoi facilmente svuotare la cache per i resolver locali systemd e dnsmasq. Tuttavia, dovresti sapere che esiste un altro DNS comune, chiamato bind , che viene omesso di proposito in questo articolo.
Un altro articolo sulla configurazione di un server cache DNS locale utilizzando BIND dovrebbe arrivare nel prossimo futuro.
Se sei interessato alle query DNS e al modo in cui vengono eseguite, puoi utilizzare questo articolo molto utile di "zwischenzugs" chiamato " Anatomia di una query DNS “ . L'articolo è particolarmente utile se vuoi eseguire il debug di query DNS e ti chiedi come vengono eseguite.
Anche se sei interessato a Amministrazione di sistema Linux , abbiamo una sezione completa a riguardo sul sito Web, quindi assicurati di controllarla.