Ogni volta che scriviamo l’indirizzo di un sito Web nel browser preferito, o si fa clic su un link, si sviluppano una serie di azioni che consistono nella risoluzione del nome di dominio. In altre parole, il browser deve stabilire in modo univoco qual è l’indirizzo IP associato a un indirizzo mnemonico (come www.google.it). Solo in questo modo la richiesta dell’utente può raggiungere il server Web corretto, ossia il sistema che eroga quello specifico sito. L’operazione di flush DNS in Windows permette di cancellare il contenuto della cache DNS locale, conservata a livello di sistema operativo. Ma andiamo per gradi e cerchiamo di capire a cosa serve e quando è utile eseguire il comando.
La risoluzione dei nomi di dominio e Windows
In apertura abbiamo citato l’esempio del browser Web. In realtà le attività di risoluzione dei nomi di dominio avvengono in modo trasparente a partire da qualunque applicazione, e dallo stesso sistema operativo.
Non solo il browser Web dialoga con server remoti: altre applicazioni in esecuzione sul sistema scambiano dati sulla rete Internet e lo stesso sistema operativo “parla” ad esempio con l’infrastruttura di Windows Update, per la ricezione degli aggiornamenti, con i sistemi che si occupano di telemetria e molto altro ancora.
Digitate cmd
nella casella di ricerca di Windows, quindi scrivete netstat -o
e premete Invio: vedrete che sono in corso diverse connessioni, e non solo sulle porte 443 (HTTPS) e 80 (HTTP), tipicamente utilizzate da browser e server Web. L’ultimo numero (PID) corrisponde al processo e quindi allo specifico programma che ha avviato la comunicazione: l’elenco completo dei processi in esecuzione in Windows è ottenibile utilizzando il comando tasklist
oppure il Task Manager.
Inizio della risoluzione DNS
Quando un’applicazione (come un browser) o il sistema devono risolvere un nome di dominio (ad esempio google.com o www.google.it) in un indirizzo IP (ad esempio 8.8.8.8
oppure 2001:4860:4860::8888
), una serie di passaggi permettono di ottenere l’indirizzo corretto.
In molti casi, il browser ha una propria cache DNS, separata da quella del sistema operativo. Ad esempio, in Google Chrome, se un dominio è stato risolto di recente, il browser cercherà prima nella sua cache interna. Nella modalità incognito, la cache DNS del browser è limitata ed è svuotata alla fine della sessione. Se il dominio è presente nella sua cache, il browser lo utilizza senza fare ulteriori richieste DNS.
Potete digitare, ad esempio, chrome://net-internals/#dns
per accedere alla cache interna di Chrome.
Controllo della cache DNS locale del sistema operativo e file HOSTS
Se la cache del browser non contiene il record DNS richiesto, Windows controlla la sua cache DNS locale, che è gestita dal resolver DNS del sistema operativo. Quando un dominio è risolto, il risultato (IP) è memorizzato in questa cache per un certo periodo di tempo (determinato dal valore TTL, Time-to-live, del record DNS).
È possibile accedere al contenuto della cache locale di Windows usando il comando seguente, da impartire da una finestra del prompt:
ipconfig /displaydns
Se il dominio è presente nella cache locale, la risoluzione è immediata e non è necessaria alcuna richiesta remota.
Qualora la corrispondenza tra nome di dominio e indirizzo IP corrispondente non fosse presente né nella cache del browser né in quella di Windows, il sistema operativo verifica il file HOSTS locale, che si trova nel percorso %systemroot%\system32\drivers\etc\hosts
. Questo file permette di associare manualmente indirizzi IP a specifici nomi di dominio. Se una voce corrispondente al dominio fosse contenuta nel file HOSTS, Windows risolve direttamente l’indirizzo IP senza interrogare i server DNS remoti.
Risoluzione DNS remota e ricorsiva
Se il nome di dominio non fosse presente nella cache del sistema né nel file HOSTS, Windows invia una richiesta a un server DNS remoto. Il sistema interrogato è quello specificato manualmente sul sistema locale, nelle proprietà dell’interfaccia di rete, oppure indicato a livello di router (ottenuto via DHCP).
Il server DNS riceve la richiesta e, se non ha il record in cache, inizia un processo di risoluzione ricorsiva. Questo processo coinvolge interrogazioni successive che culminano infine con una query destinata ai server DNS autoritativi ovvero ai sistemi che hanno titolo per fornire la risposta definitiva sull’indirizzo IP associato a un indirizzo mnemonico (come google.it o blog.google).
Una volta che il sistema operativo o il browser ricevono l’indirizzo IP corretto, lo memorizzano nella cache (locale o del browser) per ridurre i tempi di risposta in caso di richieste future.
Quando eseguire il comando flush DNS in Windows
Come abbiamo anticipato in precedenza il flush DNS in Windows è un’operazione che consente di cancellare la cache DNS locale del sistema operativo Microsoft.
Può capitare che la cache possa conservare dati obsoleti o errati, causando problemi di navigazione o connessioni a server non in grado di erogare i servizi richiesti.
L’operazione di flush DNS in Windows è quindi utile in diverse occasioni:
- Problemi di accesso a un sito Web: il sito potrebbe aver cambiato indirizzo IP, ma la cache contiene ancora il vecchio.
- Cambio di server DNS: per forzare l’utilizzo dei nuovi server DNS.
- Rimozione di dati corrotti: per risolvere errori legati a una cache danneggiata.
- Privacy: per eliminare le tracce locali delle richieste DNS effettuate e quindi, in ultima analisi, dei siti Web visitati.
Si supponga infatti di aver cancellato la cronologia del browser: la sua rimozione non ha alcun effetto sul contenuto della cache DNS locale. Impartendo il comando ipconfig /displaydns
, è quindi ancora possibile ottenere indicazioni su buona parte dei server remoti via via raggiunti.
Come eseguire un flush DNS su Windows
Per avviare il flush DNS in Windows e cancellare l’intera cache locale utilizzata per la risoluzione dei nomi di dominio, basta digitare cmd
nella casella di ricerca del sistema operativo quindi scegliere Esegui come amministratore.
A questo punto, nella schermata a sfondo nero del prompt dei comandi, è sufficiente introdurre l’istruzione seguente:
ipconfig /flushdns
Dopo aver eseguito il comando, Windows risponde con il messaggio “Configurazione IP di Windows, Cache del resolver DNS svuotata“. Ripetendo il comando ipconfig /displaydns
, vedrete che la cache DNS sarà molto più limitata, spesso ridotta quasi soltanto agli indirizzi mnemonici eventualmente contenuti nel file HOSTS.
Credit immagine in apertura: iStock.com – Supatman