Introduzione
Su Linux, la cache DNS può essere gestita da diversi servizi: systemd-resolved, nscd, dnsmasq o BIND. In questa guida vediamo come svuotarla a seconda della distribuzione e del servizio attivo.
Come capire quale servizio è attivo
Controlla con:
systemctl status systemd-resolved systemctl status nscd systemctl status dnsmasq
Solo uno (al massimo due) sarà in esecuzione. Da lì capisci quale flush usare.
systemd-resolved (Ubuntu, Fedora, Arch, openSUSE)
Comando standard per svuotare:
sudo resolvectl flush-caches
Per verificare:
sudo resolvectl statistics
Mostra hit/miss della cache. Dopo il flush la dimensione torna a zero.
nscd (vecchie distribuzioni server)
sudo systemctl restart nscd
Oppure:
sudo nscd -i hosts
Su sistemi più vecchi con service:
sudo service nscd restart
dnsmasq
Spesso usato in router OpenWRT, Raspberry, Asus Merlin:
sudo systemctl restart dnsmasq
Oppure invia il segnale SIGHUP:
sudo killall -HUP dnsmasq
BIND9
Per svuotare la cache di BIND in esecuzione:
sudo rndc flush
Per svuotare una zona specifica:
sudo rndc flushname esempio.it
NetworkManager (modifica DNS)
Spesso il DNS è gestito da NetworkManager. Puoi resettare:
sudo systemctl restart NetworkManager
Riavvia anche le connessioni attive, quindi attenzione su sessioni SSH.
Verifica della cache
Dopo il flush controlla:
sudo resolvectl statistics dig +noall +stats miosito.it
Le query dovrebbero ritornare con tempi non zero (cache vuota).
Distribuzioni embedded
- Alpine Linux: spesso non ha cache; usa
nscdsolo se installato. - Docker container: nessuna cache di default; flush a livello host.
- Raspbian/RPi OS: dnsmasq tipicamente; riavvia il servizio.
Disabilitare la cache (debug)
Per disattivare temporaneamente systemd-resolved:
sudo systemctl stop systemd-resolved
Modificare /etc/resolv.conf manualmente o ripristinare con start.
Script all-in-one
Crea uno script che svuoti qualsiasi cache trovi:
#!/bin/bash systemctl is-active --quiet systemd-resolved && sudo resolvectl flush-caches systemctl is-active --quiet nscd && sudo systemctl restart nscd systemctl is-active --quiet dnsmasq && sudo systemctl restart dnsmasq echo "Cache DNS svuotata"
Hai bisogno di aiuto?
Se vuoi gestione DNS affidata a G Tech Group, scrivici tramite il modulo di contatto.