Svuotare cache DNS Linux

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

Hai trovato utile quest'articolo?