Che cos’è il DNS?
Il Domain Name System (DNS) è la “guida telefonica” di Internet. Le persone accedono alle informazioni online tramite dei nomi di dominio, come ad esempio nytimes.com o espn.com. I browser Web interagiscono tramite indirizzi Internet Protocol (IP). Il DNS traduce i nomi di dominio in indirizzi IP, in modo che i browser possano caricare le risorse Internet.
Ogni dispositivo collegato a Internet è dotato di un indirizzo IP univoco, che altre macchine usano per trovarlo. I server DNS eliminano la necessità per gli esseri umani di memorizzare gli indirizzi IP, come 192.168.1.1 (in IPv4), o i più recenti e complessi indirizzi IP alfanumerici, come 2300:ab00:4068:1::c534:e6d2 (in IPv6).
Come funziona il DNS?
Il processo di risoluzione DNS prevede la conversione di un hostname (www.example.com) in un indirizzo IP compatibile con il computer (come 192.168.1.1). Si assegna un indirizzo IP a ciascun dispositivo su Internet, e tale indirizzo è necessario per trovare il dispositivo Internet appropriato, proprio come per trovare una determinata casa si utilizza un indirizzo stradale. Quando un utente desidera caricare una pagina web, deve avvenire una traduzione tra ciò che un utente digita nel proprio browser web (esempio.com) e l’indirizzo riconoscibile dalla macchina necessario per individuare la pagina esempio.com.
Per comprendere il processo alla base della risoluzione DNS, è importante conoscere i diversi componenti hardware tra cui deve passare una query DNS. Per il browser, la ricerca DNS avviene “dietro le quinte” e non richiede alcuna interazione dal computer dell’utente, a parte la richiesta iniziale.
Sono 4 i server DNS coinvolti nel caricamento di una pagina web:
- DNS recursor – Il recursor può essere pensato come un bibliotecario a cui viene chiesto di andare a trovare un libro particolare in un qualche punto di una biblioteca. Il DNS recursor è un server progettato per ricevere query dai computer client attraverso applicazioni come i browser Web. In genere, il recursor è responsabile dell’esecuzione di richieste aggiuntive al fine di soddisfare la query DNS del cliente.
- Root nameserver – Il root server è il primo passo nella traduzione (risoluzione) in indirizzi IP di hostname leggibili dall’uomo Lo si può immaginare come il catalogo di una biblioteca, in cui sono indicati i diversi scaffali contenenti i libri; in genere funge da riferimento per altre posizioni più specifiche.
- Server TLD nameserver – Il server di dominio di primo livello (TLD) può essere considerato come uno specifico scaffale di libri di una biblioteca. Questo nameserver rappresenta il passo successivo nella ricerca di un indirizzo IP specifico e ospita l’ultima porzione di un hostname (in esempio.com, il server TLD è “com”).
- Nameserver autoritativo: questo nameserver finale può essere pensato come un dizionario su uno scaffale di libri, in cui si può tradurre un nome specifico nella sua definizione. Il nameserver autoritativo è l’ultima fermata nella query del nameserver. Se il nameserver autoritativo ha accesso al record richiesto, restituirà l’indirizzo IP per il hostname richiesto al DNS recursor (il bibliotecario) che ha effettuato la richiesta iniziale.
Qual è la differenza tra un server DNS autoritativo e un resolver DNS ricorsivo?
Entrambi i concetti fanno riferimento a dei server (gruppi di server) che sono parte integrante dell’infrastruttura DNS. Ognuno di essi, tuttavia, svolge un ruolo diverso e risiede in posizioni diverse all’interno della pipeline di una query DNS. Un modo per capire la differenza è che il resolver ricorsivo si trova all’inizio della query DNS, mentre il nameserver autoritativo si trova alla fine.
Resolver DNS ricorsivo
Il resolver ricorsivo è il computer che risponde a una richiesta ricorsiva da un client, e che impiega del tempo per rintracciare il record DNS. Lo fa formulando una serie di richieste, fino a quando non raggiunge il nameserver DNS autoritativo per il record richiesto (nel caso non venga trovato alcun record, scade o mostra un messaggio di errore). Fortunatamente, per rintracciare i record necessari per rispondere a un client i resolver DNS ricorsivi non devono fare formulare richieste multiple; la memorizzazione nella cache è un processo di persistenza dei dati che permette di abbreviare il percorso delle richieste fornendo il record risorsa richiesto in precedenza nella ricerca DNS.
Server DNS autoritativo
In termini semplici, un server DNS autoritativo è un server che effettivamente detiene ed è responsabile dei record di risorse DNS. Si tratta del server che si trova nell’ultima parte della catena di ricerca DNS che risponderà con il record richiesto, consentendo in definitiva al browser che effettua la richiesta di raggiungere l’indirizzo IP necessario per accedere a un sito o ad altre risorse web. Un nameserver autoritativo può soddisfare le query dai propri dati senza la necessità di eseguirne una da un’altra fonte, in quanto è source of truth finale per alcuni record DNS.
Vale la pena ricordare che nei casi in cui la query riguarda un sottodominio come foo.example.com o albanpoga.com, dopo il nameserver autoritativo verrà aggiunto alla sequenza un ulteriore nameserver, responsabile della memorizzazione del record CNAMEdel sottodominio.
Esiste differenza fondamentale tra la moltitudine di servizi DNS e il servizio fornito da Cloudflare. Diversi resolver DNS ricorsivi, come Google DNS e OpenDNS, e provider come Comcast mantengono tutti installazioni di datacenter di resolver DNS ricorsivi. Questi resolver consentono query facili e veloci attraverso cluster ottimizzati di sistemi informatici ottimizzati per il DNS, ma sono fondamentalmente diversi dai nameserver ospitati da Cloudflare.
Cloudflare mantiene i nameserver a livello di infrastruttura che sono parte integrante del funzionamento di Internet. Un esempio chiave è la rete f-root server, di cui Cloudflare è parzialmente responsabile per l’hosting. F-root è uno dei componenti dell’infrastruttura dei nameserver DNS a livello root, responsabile di miliardi di richieste Internet al giorno. La nostra rete Anycast ci mette in una posizione unica nella gestione di grandi volumi di traffico DNS senza interruzione del servizio.
Quali sono i passaggi in una ricerca DNS?
Nella maggior parte dei casi, DNS si preoccupa della traduzione di un nome di dominio nell’indirizzo IP appropriato. Per sapere come funziona questo processo, può essere d’aiuto seguire il percorso di una ricerca DNS, dal momento in cui parte da un browser web, viaggia attraverso il processo di ricerca DNS, e poi effettua il percorso inverso. Andiamo a esaminare i singoli passaggi.
Nota: spesso le informazioni di ricerca DNS vengono memorizzate in locale nella cache del computer da cui viene effettuata la query, oppure in remoto nell’infrastruttura DNS. Solitamente, una ricerca DNS consta di otto passaggi, ma quando si memorizzano le informazioni DNS nella cache, il processo di ricerca DNS ne salta alcuni rendendo la ricerca più rapida. L’esempio seguente descrive tutti gli otto passaggi.
Gli otto passaggi di una ricerca DNS:
- Un utente digita “esempio.com” in un browser. La query si sposta su Internet, e viene recepita da un resolver DNS ricorsivo.
- Il resolver interroga quindi un root nameserver DNS.
- Il root server risponde al resolver fornendo l’indirizzo di un server DNS TLD (Top Level Domain) (come .com o .net), che memorizza le informazioni per i suoi domini. Durante la ricerca di example.com, la nostra richiesta è rivolta al TLD .com.
- Il resolver invia successivamente una richiesta al TLD .com.
- Il server TLD risponde con l’indirizzo IP del nameserver del dominio, example.com.
- Infine, il risolutore ricorsivo invia una query al nameserver del dominio.
- L’indirizzo IP per example.com viene quindi restituito al resolver dal nameserver.
- Il resolver DNS risponde al browser con l’indirizzo IP del dominio richiesto inizialmente.
- Il browser invia una richiesta HTTP all’indirizzo IP.
- Il server su quell’IP restituisce la pagina da renderizzare nel browser.
Che cos’è un resolver DNS?
Il resolver DNS è la prima tappa della ricerca DNS, ed è responsabile della gestione del client che ha effettuato la richiesta iniziale. Il resolver avvia la sequenza di query che alla fine porta alla conversione di un URL nel necessario indirizzo IP.
Nota: una tipica ricerca DNS senza cache includerà sia query ricorsive che iterative.
È importante fare la distinzione tra una query DNS ricorsiva e un resolver DNS ricorsivo. La query si riferisce alla richiesta fatta a un resolver DNS che richiede la risoluzione della query. Un resolver DNS ricorsivo è il computer che accetta una query ricorsiva ed elabora la risposta effettuando le richieste necessarie.
Quali sono i tipi di query DNS?
In una tipica ricerca DNS avvengono tre tipi di query. Utilizzando una combinazione di queste query, l’ottimizzazione del processo di risoluzione DNS può determinare una riduzione della distanza percorsa. In una situazione ideale saranno disponibili i dati dei record memorizzati nella cache, che consentono a un nameserver DNS di restituire una query non ricorsiva.
Tre tipi di query DNS:
- Query ricorsiva: in una query ricorsiva, un client DNS richiede che un server DNS (in genere un resolver DNS ricorsivo) risponda al client con il record di risorse richiesto, oppure con un messaggio di errore qualora il risolutore non riesca a reperire il record.
- Query iterativa: in questa situazione il client DNS consentirà a un server DNS di restituire la migliore risposta possibile. Se il server DNS richiesto non ha una corrispondenza per il nome della query, restituirà un riferimento a un server DNS autoritativo per un livello inferiore del namespace del dominio. Il client DNS quindi eseguirà una query all’indirizzo di riferimento. Questo processo continua con server DNS aggiuntivi lungo la catena di query fino a quando si verifica un errore o un timeout.
- Query non ricorsiva: in genere si verifica quando un client resolver DNS invia una query a un server DNS per un record a cui ha accesso perché è autoritativo per il record, o perché il record esiste all’interno della sua cache. In genere, un server DNS memorizza nella cache i record DNS per prevenire un ulteriore consumo di larghezza di banda e caricare su server upstream.
Che cos’è il caching DNS? Dove avviene il caching DNS?
Lo scopo del caching, o memorizzazione nella cache, è quello di archiviare temporaneamente i dati in un certo posto, il che comporta miglioramenti di prestazioni e affidabilità per le richieste dati. La memorizzazione nella cache DNS comporta l’archiviazione dei dati in un luogo più vicino al client richiedente, in modo che la query DNS possa essere risolta più velocemente e si evitino ulteriori query nella catena di ricerca DNS. Ciò migliora i tempi di caricamento e riduce il consumo di larghezza di banda e di risorse CPU. I dati DNS possono essere memorizzati in una pluralità di ubicazioni, ognuna delle quali memorizzerà i record DNS per un determinato intervallo di tempo, stabilito da un time-to-live (TTL).
Memorizzazione nella cache DNS del browser
I browser moderni sono progettati per memorizzare di default nella cache i record DNS per un dato lasso di tempo. Il motivo è abbastanza ovvio: quanto più vicino al browser avviene il caching DNS, meno passaggi dovranno essere eseguiti per controllare la cache e formulare le richieste corrette a un indirizzo IP. Quando viene effettuata una richiesta per un record DNS, la cache del browser è la prima ubicazione che viene controllata.
Su Chrome, puoi vedere lo stato della tua cache DNS andando su chrome://net-internals/#dns.
Memorizzazione nella cache DNS a livello di sistema operativo (OS)
Il resolver DNS a livello di sistema operativo è la seconda e ultima fermata locale prima che una query DNS lasci il computer. Il processo all’interno del sistema operativo che è progettato per gestire questa query è comunemente chiamato “stub resolver” o client DNS. Quando uno stub resolver riceve una richiesta da un’applicazione, controlla prima la propria cache per verificare la presenza di un record. In caso contrario, invia una query DNS (con un flag ricorsivo impostato) all’esterno della rete locale a un resolver DNS ricorsivo all’interno del provider di servizi Internet (ISP).
Quando il resolver ricorsivo all’interno dell’ISP riceve una query DNS, come tutti i passaggi precedenti, verificherà anche se la traduzione richiesta dall’host all’indirizzo IP sia già memorizzata nel proprio livello di persistenza locale.
Il risolutore ricorsivo ha anche funzionalità aggiuntive a seconda dei tipi di record presenti nella cache:
- Se il resolver non ha i record non ha i record A ma ha i record NS per i nameserver autoritativi, interrogherà direttamente quei nameserver, ignorando diversi passaggi nella query DNS. Questo collegamento impedisce le ricerche dai nameserver root e .com (nella nostra ricerca di example.com) e aiuta a risolvere più rapidamente la query DNS.
- Se il resolver non ha i record NS, invierà una query ai server TLD (.com nel nostro caso), saltando il root server.
- Nel caso improbabile in cui il resolver non abbia record che puntano ai server TLD, invierà quindi una query ai root server. Questo evento si verifica in genere dopo l’eliminazione di una cache DNS.