Come svuotare la cache DNS su Windows, macOS e Linux
Per svuotare il DNS, esegui ipconfig /flushdns su Windows, sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder su macOS, oppure resolvectl flush-caches su Linux con systemd-resolved. Il comando esatto dipende dal tuo sistema operativo e, su Linux, da quale resolver esegue.
Cos’è la cache DNS e perché svuotarla aiuta
Ogni volta che un dispositivo risolve un nome host in un indirizzo IP, salva la risposta per un certo tempo invece di richiederla di nuovo alla richiesta successiva. Quella risposta salvata vive nella cache DNS del sistema operativo, ed è separata dalla cache DNS che il tuo browser mantiene sopra di essa. La cache è ciò che rende veloce la navigazione: senza di essa, ogni richiesta verso ogni risorsa di una pagina innescherebbe una ricerca nuova.
La cache diventa un problema nel momento in cui un record cambia. Se un sito si è spostato su un nuovo indirizzo IP, ha cambiato provider di hosting, o ha aggiornato un CNAME, la tua macchina può continuare a rispondere con il vecchio valore finché la voce in cache non scade. I resolver mettono in cache anche le risposte negative, cioè "questo nome non esiste", per un periodo impostato dal record SOA del dominio, quindi un nome che ha appena iniziato a funzionare può ancora fallire localmente per diversi minuti. Svuotare la cache costringe la ricerca successiva a uscire fresca invece di riusare ciò che era stato memorizzato.
Come svuotare il DNS su Windows
- Apri il Prompt dei comandi. I passaggi ufficiali di risoluzione dei problemi di Microsoft usano un prompt con privilegi elevati (clic destro, Esegui come amministratore) per i comandi DNS, quindi parti da lì se la versione normale si comporta in modo strano.
- Esegui
ipconfig /flushdns. Secondo la documentazione di Microsoft Learn per il comando, questo "svuota e reimposta il contenuto della cache del resolver client DNS", scartando sia le voci negative sia tutto ciò che è stato messo in cache dinamicamente. - Conferma che ha funzionato con
ipconfig /displaydns, che elenca tutto ciò che è attualmente nella cache del resolver. Subito dopo uno svuotamento questo dovrebbe restituire un elenco quasi vuoto; naviga verso un paio di siti ed eseguilo di nuovo per vedere le nuove voci ripopolarsi.
Se un indirizzo obsoleto continua a ricomparire, potrebbero essere stati messi in cache anche i server DNS assegnati dal DHCP insieme al lease. Rilasciare e rinnovare l’adattatore recupera entrambi:
ipconfig /release
ipconfig /renew
Come svuotare il DNS su macOS
Il comando dipende da quanto è vecchia la versione di macOS della macchina, e usare quello sbagliato su un Mac moderno non fa silenziosamente nulla.
- Yosemite 10.10.4 e ogni versione successiva (questo copre tutte le versioni di macOS attualmente supportate, incluse Sequoia, Sonoma, Ventura, Monterey e Big Sur):
sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder. Il primo comando svuota la cache del Directory Service; il secondo invia a mDNSResponder un segnale HUP così che si riavvii e scarti ciò che stava mantenendo. - Solo Yosemite da 10.10 a 10.10.3 usava uno strumento diverso:
sudo discoveryutil mdnsflushcache. - Mavericks, Mountain Lion e Lion: bastava
sudo killall -HUP mDNSResponderda solo. - Snow Leopard (da 10.6 a 10.6.8):
sudo dscacheutil -flushcacheda solo, senza passaggio killall.
A meno che tu non abbia un Mac abbastanza vecchio da precedere l’aggiornamento Yosemite del 2014, usa il primo comando. Entrambe le parti richiedono la password del tuo account, e il comando non produce output in caso di successo.
Come svuotare il DNS su Linux
Linux non ha un’unica cache DNS da svuotare, perché le distribuzioni offrono stack di resolver diversi. Controlla quale è attivo prima di scegliere un comando.
Esegui prima resolvectl status. Se restituisce impostazioni DNS per interfaccia, la macchina sta eseguendo systemd-resolved, che è il predefinito su Ubuntu, Fedora e la maggior parte delle altre distribuzioni moderne attuali. Se il comando non viene trovato, controlla invece gli altri due servizi comuni: systemctl status nscd oppure systemctl status dnsmasq (o, se systemd non è in uso, cerca il processo con ps aux | grep -E 'nscd|dnsmasq').
- systemd-resolved (systemd 239 e successivi):
resolvectl flush-caches. Il manuale di systemd lo descrive come lo svuotamento di "tutte le cache dei record di risorsa DNS che il servizio mantiene localmente". Puoi verificare che abbia funzionato conresolvectl statistics, che riporta la dimensione attuale della cache. - systemd-resolved su systemd più vecchio (prima della rinominazione alla versione 239):
sudo systemd-resolve --flush-caches. Alcune distribuzioni attuali mantengono ancora questo come alias di compatibilità anche dopo aver aggiuntoresolvectl, quindi vale la pena provarlo seresolvectlmanca masystemd-resolveno. - nscd:
sudo systemctl restart nscdriavvia l’intero servizio e ne svuota la cache insieme al riavvio. Per invalidare solo la cache degli host senza un riavvio,sudo nscd -i hostsfunziona sulle distribuzioni che offrono quel flag. - dnsmasq: inviargli un segnale HUP svuota la cache senza far cadere il servizio, secondo la sua stessa pagina man:
sudo killall -HUP dnsmasq. Anche un semplicesudo systemctl restart dnsmasqfunziona e in più ricarica la sua configurazione.
Come svuotare la cache DNS del browser
Chrome mantiene una propria cache DNS, separata da quella del sistema operativo, quindi svuotare solo la cache del sistema operativo spesso non basta per vedere una modifica avere effetto. Apri chrome://net-internals/#dns e clicca su Clear host cache. I browser basati su Chromium (Edge, Brave, Opera e altri) espongono la stessa pagina allo stesso indirizzo.
Questo potrebbe comunque non essere l’intera soluzione. Chrome mantiene anche un pool di connessioni già aperte verso il vecchio indirizzo IP e può riusarne una invece di crearne una nuova, anche dopo che la cache DNS è vuota. Apri chrome://net-internals/#sockets e usa Flush socket pools per chiudere anche quelle. Se un sito continua a caricare la vecchia versione dopo entrambi i passaggi, prova una finestra privata, dato che parte senza alcuna connessione in cache.
Perché il vecchio indirizzo appare ancora dopo lo svuotamento
Se hai svuotato ogni cache sulla macchina e il browser mostra ancora il vecchio server, il ritardo di solito non è più locale. Un router domestico di solito esegue una propria piccola cache DNS per ogni dispositivo sulla rete, e riavviarlo svuota quel livello. Oltre al router, anche il resolver del tuo provider internet mantiene una propria cache, e non hai un modo diretto per svuotarla; si svuota da sola una volta che il TTL della sua voce in cache è scaduto.
Il TTL, il valore time-to-live su un record DNS, è il vero limite alla velocità con cui una modifica può diffondersi. Ogni resolver tra te e il nameserver autoritativo ha il permesso di mantenere una risposta per esattamente quei secondi prima di essere tenuto a richiederla di nuovo. Un record con un TTL di un’ora può legittimamente restituire ancora il vecchio indirizzo ad alcuni visitatori per quasi un’ora dopo che è cambiato, indipendentemente da cosa svuoti sulla tua macchina. Vedi come funziona la propagazione DNS per cosa controlla quella tempistica e come verificare se un record ha finito di aggiornarsi ovunque.
Domande frequenti
Devo riavviare il computer dopo aver svuotato il DNS?
No. Ogni comando sopra ha effetto immediato e svuota solo la cache in memoria; un riavvio non fa parte del processo su Windows, macOS o Linux.
Perché svuotare il DNS non ha risolto il problema?
Tre cose di solito trattengono ancora la vecchia risposta: la cache del browser stesso (svuotala separatamente su chrome://net-internals/#dns), il router che serve la tua rete, oppure il TTL del record che semplicemente non è ancora scaduto altrove su internet. Se una ricerca continua a fallire o va in timeout del tutto invece di restituire una risposta obsoleta, questo indica un server DNS che non risponde piuttosto che un problema di cache.
Come svuoto il DNS sul mio telefono?
Né iOS né Android espongono un comando manuale di svuotamento DNS. Attivare e disattivare la modalità aereo, oppure passare dal Wi-Fi ai dati cellulari e tornare indietro, costringe il dispositivo a scartare il proprio stato DNS in cache e a risolvere di nuovo alla richiesta successiva.
Svuotare il DNS risolve i caricamenti di pagina lenti?
Raramente da solo. Una cache locale corrotta o troppo grande può aggiungere un piccolo ritardo, ma le ricerche costantemente lente sono più spesso causate dal resolver stesso. Vedi perché le ricerche DNS sono lente per le cause più probabili e come verificarle.
Qual è la differenza tra svuotare il DNS e svuotare la cache del browser?
La cache del browser memorizza il contenuto delle pagine: HTML, CSS, immagini e script. La cache DNS memorizza solo la corrispondenza tra nome host e IP usata per trovare il server in primo luogo. Svuotarne una non svuota l’altra, e una pagina obsoleta può essere causata da entrambe.
Come confermo che lo svuotamento ha funzionato?
Su Windows, esegui ipconfig /displaydns subito dopo lo svuotamento; dovrebbe tornare quasi vuoto. Su Linux con systemd-resolved, resolvectl statistics riporta la dimensione attuale della cache. macOS non ha un comando di ispezione equivalente, quindi la verifica pratica è cercare di nuovo il dominio con dig example.com oppure eseguire un controllo dall’esterno della tua rete con uno strumento come una query DNS che interroga da più postazioni contemporaneamente, il che esclude anche se la risposta obsoleta è locale a te oppure proviene dai nameserver stessi del dominio.