Quando si apre un sito Web, ci si sta in realtà collegando al server che lo ospita. Il server, così come qualsiasi altro dispositivo collegato a Internet, è identificato da un indirizzo IP, ossia un codice che lo identifica in modo univoco. Per farsi un'idea di cosa sia un indirizzo IP, si può controllare “qual è il mio IP” per vedere l'IP associato al dispositivo che si sta utilizzando.
Gli indirizzi IP sono però difficili da ricordare, quindi a ognuno di essi può essere associato un nome di dominio, cioè l'URL che comunemente viene inserito nella barra degli indirizzi del browser. L'associazione tra domini e indirizzi IP avviene tramite DNS, un servizio apposito che permette di risolvere i nomi di dominio.
In origine, quando Internet era utilizzato da pochissime persone al mondo, non erano molti i siti a cui si poteva accedere: memorizzare il loro indirizzo IP era quindi un'operazione possibile. Con il passare del tempo, però, si rese necessario trovare un altro sistema più efficace: si cominciò quindi a utilizzare un file di testo apposito, chiamato hosts.txt, che conteneva le associazioni tra nomi di dominio e indirizzi IP e che era mantenuto in maniera centralizzata. Tutti coloro che navigavano su Internet avevano accesso allo stesso file.
Anche questa soluzione è però diventata presto impraticabile: nel 1983, quindi, venne creato un sistema decentralizzato chiamato DNS che prevedeva l'uso di un file hosts.txt locale, che andava quindi aggiornato manualmente dall'utente. L'uso di un file locale è diventato presto obsoleto, ma la gestione decentralizzata della risoluzione dei domini rimane ancora oggi, tanto che il sistema utilizzato è sostanzialmente ancora lo stesso.
Oggi sarebbe impensabile utilizzare un solo file di testo contenente tutte le associazioni tra indirizzi IP e domini, considerando che esistono centinaia di milioni di domini. In sostituzione al singolo file si utilizza infatti un sistema di cartelle ordinate gerarchicamente e ospitate su vari server DNS collegati tra loro, in grado quindi di aggiornarsi a vicenda e di garantire sempre la corretta risoluzione dei domini anche qualora uno di questi server non dovesse funzionare.
Ogni volta che un utente inserisce un URL nella barra degli indirizzi di un browser, questo invia una richiesta al server DNS predefinito per verificare quale indirizzo IP è associato all'URL in questione. Una volta ricevuta la risposta, si collega quindi all'IP corretto e visualizza così il sito corrispondente. Può capitare che un particolare server DNS non contenga l'associazione necessaria: la richiesta viene quindi inviata a un altro server, fino a quando non si ottiene la risposta corretta. In questi casi si può parlare di richieste ricorsive o di richieste iterative.
Nella ricursione, il server DNS interpellato non è in grado di rispondere alla richiesta, quindi si occupa in prima persona di cercare una risposta in altri server DNS a cui è collegato. Una volta ottenuta l'associazione dominio-IP richiesta, il server DNS originario invia la risposta all'utente.
Nell'iterazione, il server DNS interpellato non è in grado di rispondere alla richiesta e quindi invia all'utente una risposta negativa e l'indirizzo di un altro server DNS a cui inviare la richiesta. Viene così interpellato un nuovo server DNS, il quale a sua volta dovrà verificare di poter rispondere alla richiesta. In questo caso la risposta finale con l'associazione corretta arriva quindi non più dal server originariamente interpellato ma dall'unico in grado di rispondere.
Questo sistema è molto efficiente e permette di ottenere sempre una risposta, indipendentemente dal server DNS interpellato. Ovviamente i tempi di risposta possono variare molto a seconda di quanto tempo è necessario per risolvere la richiesta.
La velocità di risposta può essere aumentata grazie a un sistema di caching in locale. Ogni volta che si visita un sito Web, infatti, l'associazione dominio-IP viene memorizzata in un file locale, chiamato sempre hosts.txt. Questo file viene sempre controllato prima di procedere con una richiesta a un server DNS remoto: se il nome di dominio digitato nella barra del browser è presente, la richiesta non viene inviata e il browser utilizza l'associazione contenuta nel file locale, rendendo l'operazione molto più veloce. Questo ovviamente può creare dei problemi nel caso in cui, nel frattempo, l'associazione dominio-IP sia cambiata.
Finora si è parlato genericamente di server DNS, ma quali sono di preciso? Numerose aziende gestiscono server DNS, quindi la scelta è molto ampia. Generalmente, però, i server DNS più usati sono quelli gestiti dal proprio fornitore di servizi Internet. Infatti, quando si attiva una nuova connessione e si configura il router, solitamente si utilizzano le impostazioni predefinite fornite dal proprio operatore telefonico. Ciò ha sicuramente il vantaggio di garantire l'uso di un server “privilegiato”, quindi generalmente più veloce da raggiungere, ma potrebbero nascere problemi di altro tipo.
Ad esempio, può capitare che determinati siti vengano bloccati dal governo. In quel caso, il metodo più utilizzato per attivare questi blocchi è proprio quello di intervenire sui server DNS, obbligando i gestori a eliminare le associazioni dominio-IP per specifici siti. Utilizzando quel server DNS, quindi, diventa impossibile raggiungere i siti bloccati, perché il loro indirizzo non può più essere risolto correttamente.
Per evitare problemi di questo tipo, è possibile cambiare DNS e usare server DNS gestiti da altre aziende, in particolare estere, in modo da non essere soggetti a blocchi o restrizioni. Tra i DNS più utilizzati ci sono quelli di Google, di CloudFlare e di OpenDNS.
Per una navigazione sicura, si consiglia di utilizzare sempre una VPN, in modo che il traffico dati sia crittografato e il proprio indirizzo IP sia mascherato. Usare una VPN potrebbe però non proteggere da un DNS leak. Se si continuano a utilizzare i server DNS del proprio fornitore di servizi Internet, infatti, questi è in grado di visualizzare tutte le richieste di risoluzione inviate al sistema DNS, e quindi la propria attività online non è protetta.
Per verificare se si è soggetti a questo tipo di problema, basta fare un rapido DNS leak test. Grazie a questa semplice operazione è possibile controllare se il proprio indirizzo IP è effettivamente protetto o se ci sono delle vulnerabilità che rendono l'IP pubblico o comunque visibile al fornitore di servizi Internet.
Quando ci si affida a una VPN per la propria sicurezza è quindi fondamentale utilizzare i server DNS forniti dalla VPN stessa, in modo che il fornitore di servizi Internet non possa vedere l'attività svolta e che quindi tutti i dati inviati e ricevuti siano perfettamente al sicuro. Basta scaricare una VPN gratis per proteggere le proprie informazioni personali e navigare in tutta sicurezza.