HOSTNAME E INDIRIZZI IP

retiSe voglio visitare Google non scriverò nel browser 216.58.205.78 ma semplicemente google.com. Questo può avvenire perché è stata fatta una associazione (binding) tra l’IP di Google ed il nome google.com.

Lookup

TRADUZIONE LOCALE

È possibile inserire associazioni IP: Nome manualmente all’interno dei file hosts.txt (Windows) e /etc/hosts (Linux e MacOS).

IL DNS

In informatica e telecomunicazioni il sistema dei nomi di dominio (in inglese: Domain Name System, DNS), è un sistema utilizzato per assegnare nomi ai nodi della rete (in inglese: host). Questi nomi sono utilizzabili, mediante una traduzione, di solito chiamata “risoluzione”, al posto degli indirizzi IP originali. Il servizio è realizzato tramite un database distribuito, costituito dai server DNS. Il DNS ha una struttura gerarchica ad albero rovesciato ed è diviso in domini (com, org, it, ecc.). Ad ogni dominio o nodo corrisponde un nameserver, che conserva un database con le informazioni di alcuni domini di cui è responsabile e si rivolge ai nodi successivi quando deve trovare informazioni che appartengono ad altri domini. Ogni nome di dominio termina con un “.” (punto). Ad esempio l’indirizzo wikipedia.org termina con il punto. La stringa che segue il punto finale è chiamata “dominio radice” (DNS root zone). I server responsabili del dominio radice sono i cosiddetti root nameservers. Essi possiedono l’elenco dei server autoritativi di tutti i domini di primo livello (TLD) riconosciuti e lo forniscono in risposta a ciascuna richiesta. I root nameserver sono 13 in tutto il mondo, di cui 10 negli Stati Uniti, due in Europa (Inghilterra e Svezia) e uno in Giappone. Il nome DNS denota anche il protocollo che regola il funzionamento del servizio, i programmi che lo implementano, i server su cui questi vengono elaborati, l’insieme di questi server che cooperano per fornire il servizio più intelligente. I nomi DNS, o “nomi di dominio” o “indirizzi mnemonici”, sono una delle caratteristiche più visibili di Internet. L’operazione di conversione da nome a indirizzo IP è detta “risoluzione DNS; la conversione da indirizzo IP a nome è detta “risoluzione inversa“. In pratica, il DNS è un registro universale cioè un database distribuito, con una struttura gerarchica, che archivia i nomi mnemonici di dominio e la loro associazione ai relativi indirizzi IP specifici.

MOTIVAZIONI ED UTILIZZI

La possibilità di attribuire un nome testuale facile da memorizzare a un server (ad esempio un sito world wide web) migliora di molto l’uso del servizio, in quanto gli esseri umani trovano più facile ricordare nomi testuali (mentre gli host e i router sono raggiungibili utilizzando gli indirizzi IP numerici). Per questo, il DNS è fondamentale per l’ampia diffusione di internet anche tra utenti non tecnici, ed è una delle sue caratteristiche più visibili. È possibile attribuire più nomi allo stesso indirizzo IP (o viceversa) per rappresentare diversi servizi o funzioni forniti da uno stesso host (o più host che erogano lo stesso servizio). Questa “flessibilità” risulta utile in molti casi:

  • Nel caso in cui si debba sostituire il server che ospita un servizio, o si debba modificare il suo indirizzo IP, è sufficiente modificare il record DNS, senza dover intervenire sui client.
  • Utilizzando nomi diversi per riferirsi ai diversi servizi erogati da uno stesso host (registrati quindi con lo stesso indirizzo IP), è possibile spostare una parte dei servizi su un altro host (con diverso indirizzo IP, già predisposto a fornire i servizi in oggetto). Modificando quindi sul server DNS i record dei nomi associati ai servizi da spostare e registrando il nuovo IP al posto di quello vecchio, si otterrà lo spostamento automatico delle nuove richieste di tutti i client su questo nuovo host, senza interruzione dei servizi.
  • Un utilizzo molto popolare di questa possibilità è il cosiddetto virtual hosting, basato sui nomi, una tecnica per cui un web server dotato di una singola interfaccia di rete e di singolo indirizzo IP può ospitare più siti web, usando l’indirizzo alfanumerico trasmesso nell’header HTTP per identificare il sito per cui viene fatta la richiesta. Facendo corrispondere a un nome più indirizzi IP, il carico dei client che richiedono quel nome viene distribuito sui diversi server associati agli IP registrati, ottenendo un aumento delle prestazioni complessive del servizio e una tolleranza ai guasti (ma è necessario assicurarsi che i diversi server siano sempre allineati, ovvero offrano esattamente lo stesso servizio ai client). La risoluzione inversa è utile per identificare l’identità di un host, o per leggere il risultato di un traceroute. Il DNS viene usato da numerose tecnologie in modo poco visibile agli utenti, per organizzare le informazioni necessarie al funzionamento del servizio.

NOMI DI DOMINIO

Un nome di dominio è costituito da una serie di stringhe separate da punti, ad esempio it.wikipedia.org. e sono organizzati a livelli. A differenza degli indirizzi IP, dove la parte più importante del numero è la prima cifra partendo da sinistra, in un nome DNS la parte più importante è la prima partendo da destra. La parte più a destra è detta dominio di primo livello (o TLD, Top Level Domain), e ce ne sono centinaia che possono essere scelti, per esempio .org, .it, .com etc. Un dominio di secondo livello, a differenza del dominio di primo livello che è formato da parole “fisse” e limitate, è formato da una parola scelta a piacimento. Questa parola deve il più possibile essere legata a quello che ci identifica e a quello che vogliamo comunicare. Il dominio di secondo livello è quindi formato da due parti, per esempio wikipedia.org, e così via. Il dominio di terzo livello è il figlio del dominio di secondo livello, infatti, prendendo come esempio wikipedia.org, un dominio di terzo livello sarà: stuff.wikipedia.org. Ogni ulteriore elemento specifica quindi un’ulteriore suddivisione. Quando un dominio di secondo livello viene registrato all’assegnatario, questo è autorizzato a usare i nomi di dominio relativi ai successivi livelli, come some.other.stuff.wikipedia.org (dominio di quinto livello) e così via.

ORGANIZZAZIONE GERARCHICA DEI NOMI

TLD

Il SLD (Second Level Domain) può avere il nome della nostra attività commerciale, organizzazione, iniziativa o progetto. Ottenere un dominio di terzo livello non è veramente un problema se abbiamo acquistato un second level domain, perché è ad un livello “inferiore” della gerarchia.

TLD e SLD formano un albero:

TREE

Si compongono in nomi come “test.lab.morrolinux.it”, “mail.google.com” ecc. Anche i Top Level Domain sono a loro volta raggruppati logicamente da un nodo superiore, chiamato “root”.

NB: la risoluzione dell’indirizzo avviene dal punto più alto a quello più basso della gerarchia.

NS (NAMESERVER)

Un nameserver ha lo scopo di, dato un hostname, risolvere il relativo indirizzo IP o indicare un altro nameserver sotto la sua gerarchia che possa farlo.

Esistono diversi tipi di NS:

Root Nameserver (.)

è la radice dell’albero dei domini, conosce i TLD NameServer.

TLD Nameserver (.com, .it, .fr etc.)

ad esempio il TLD “it” conoscerà i SLD nameserver di tutti i siti italiani.

SLD Nameserver

ad esempio morrolinux.it, conoscerà tutti gli host sotto di esso.

TIPI DI RECORD

Ad un nome DNS possono corrispondere diversi tipi di informazioni. Per questo motivo, esistono diversi tipi di record DNS. Ogni voce del database DNS deve essere caratterizzata da un tipo. I principali tipi sono:

  • Record A – Indica la corrispondenza tra un nome ed uno (o più) indirizzi IPv4.
  • MX record – (Mail eXchange) indica a quali server debba essere inviata la posta elettronica per un certo dominio.
  • Record CNAME – Sono usati per creare un alias, ovvero per fare in modo che lo stesso host sia noto con più nomi. Uno degli utilizzi di questo tipo di record consiste nell’attribuire a un host che offre più servizi un nome per ciascun servizio. In questo modo, i servizi possono poi essere spostati su altri host senza dover riconfigurare i client, ma modificando solo il DNS.
  • Record PTR – Il DNS viene utilizzato anche per realizzare la risoluzione inversa, ovvero per far corrispondere a un indirizzo IP il corrispondente nome di dominio. Per questo si usano i record di tipo “PTR” (e una apposita zona dello spazio dei nomi in-addr.arpa).
  • Record AAAA – È come il Record A ma lavora con l’IPv6 e restituisce un indirizzo IPv6.
  • Record SRV – Identificano il server per un determinato servizio all’interno di un dominio. Possono essere considerati una generalizzazione dei record MX.
  • Record TXT – Associano campi di testo arbitrari a un dominio. Questi campi possono contenere una descrizione informativa oppure essere utilizzati per realizzare servizi.

Vi sono anche tipi di record “di servizio”, necessari al funzionamento del database distribuito:

  • Record NS – Utilizzato per indicare quali siano i server DNS autorevoli per un certo dominio, ovvero per delegarne la gestione.
  • Record SOA – (Start of Authority) usato per la gestione delle zone DNS.

Nel DNS possono essere immessi altri tipi di record, alcuni folcloristici, come “LOC”, usato (poco) per riportare le coordinate geografiche di un sito, altri aggiungono funzioni di sicurezza per evitare manomissioni. I DNS implementano uno spazio gerarchico dei nomi, per permettere che parti di uno spazio dei nomi, conosciute come “zone”, possano essere delegate da un name server ad un altro name server che si trova più in basso nella gerarchia.

SCHEMA DI RISOLUZIONE DI UN NOME

DNS Resolver

TIME TO LIVE

I record associati ad un nome di dominio possono cambiare nel tempo, permettendo ad esempio di assegnare un nuovo indirizzo IP a un server, facendo in modo che questo continui a rispondere al nome già noto agli utenti. A ciascun record DNS è associato un parametro detto time to live o TTL (tempo di vita), che indica per quanto tempo questo record può venire memorizzato in un sistema di cache DNS prima che venga considerato scaduto. Quando un server risponde a una richiesta con un record preso dalla propria cache, assegna alla risposta il time to live residuo del record. Quindi se il record originariamente ha un TTL di 12 ore, e un server risponde ad una richiesta con un dato che ha ottenuto due ore prima, nella risposta metterà un TTL di 10 ore.

ZONE, DELEGHE E REPLICHE

Una “zona” DNS è una parte dello spazio dei nomi, costituita da un dominio e i suoi sottodomini che non sono a loro volta delegati, che è sotto una stessa gestione amministrativa e quindi è gestita da uno o più server. La gestione di una zona è “delegata” dalla zona superiore tramite dei record di tipo NS. Ad esempio, nella zona .org ci sarà una delega per la zona wikipedia.org ai server DNS che la gestiscono. Per ragioni di ridondanza, ciascuna zona è “replicata” su più server, e di conseguenza la delega è costituita da più record NS, che indicano che ciascuno dei server indicati contiene le informazioni per quella zona (ovvero è “autoritativo” per la zona). All’interno di una zona possono essere delegate delle zone di livello inferiore, ad esempio in wikipedia.org potrebbero esistere deleghe per devel.wikipedia.org o per accounting.admin.wikipedia.org. Ogni dominio, quindi, possiede un server DNS autoritativo. I diversi server che sono delegati per una zona dovrebbero contenere le stesse informazioni, in modo che uno qualsiasi di questi possa rispondere ad una query per un record della zona. Lo schema di replica tipicamente prevede che ci sia un server master (primario), che è quello sul quale vengono aggiornate le informazioni, e uno o più server slave (secondari), che copiano le informazioni dal master quando necessario. Per tener traccia delle diverse “versioni” di una zona che possono esserci in circolazione, e in particolare per permettere a un secondario di decidere se deve trasferire la zona dal primario, ogni zona ha un numero di serie, che deve essere aumentato ogni volta che vengono fatte modifiche sul primario. Per ottenere il numero di serie di una zona presente su un server, si effettua una interrogazione di tipo SOA. Il secondario confronta il proprio numero di serie con quello del primario, e se quello del primario è superiore trasferisce la zona. L’operazione di copia di tutti i record di una zona dal master a uno slave è detta zone transfer, e può essere completo (tutto il contenuto della zona viene copiato) o incrementale (vengono copiati solo i record modificati rispetto alla versione già presente). Alcune implementazioni di DNS permettono di modificare le zone da qualsiasi server autorevole, propagando le modifiche sugli altri server. La radice (root) dell’albero dei nomi DNS è la zona. (punto), che è gestita da un insieme di server chiamati appunto root servers.

COME SI AGGIORNA IL SISTEMA DNS

Root Nameserver

Ogni Root NS riceve ogni settimana una copia aggiornata del file della “root zone” da Verisign, contenente eventuali nuovi nomi di TLD che sono stati registrati.

TLD e SLD Nameserver

Ogni nuovo NS deve registrarsi presso i NS della zona superiore per “esistere ufficialmente”.

AUTHORITATIVE NS

Per gestire un dominio è necessario un nameserver autoritativo per quel dominio.

  • È registrato presso il dominio gerarchicamente superiore;
  • Conosce tutti gli indirizzi IP degli hostname di quel dominio.

master file

Il nameserver autoritativo è detto master e viene configurato dall’amministratore di rete con il “master file” che contiene le associazioni tra nomi e indirizzi IP. La specifica DNS prevede che ci sia almeno un server autoritativo secondario (slave) che mantiene aggiornata una copia del master file per garantire il servizio in caso di guasti. Gli aggiornamenti alle associazioni IP: nome vengono effettuati nel master file del master NS, e periodicamente i server slave controlleranno se ci sono aggiornamenti da scaricare.

ZONE DNS

Il Name Server primario (master) non deve necessariamente conoscere tutti gli indirizzi IP del dominio, perché può delegare la gestione di una parte dello spazio dei nomi (cioè una zona) ad un altro server.

Zone

In questo caso Zona e Dominio non coincidono, perché abbiamo creato due zone. Così facendo dovremo quindi avere due NS primari, uno responsabile per ogni zona.

Zone

ITERAZIONE E RICORSIONE

In generale, per ottenere la risoluzione di un nome è necessario partire dalla radice, interrogare uno dei root server nel dominio di primo livello, ottenere il server che lo gestisce, interrogarlo nel dominio di secondo livello, fino a raggiungere il server autorevole per il nome desiderato. Questa tecnica è detta “iterazione“. La ricorsione invece delega ai server stessi le varie interrogazioni: si fa una richiesta al root server, il quale la inoltra esso stesso al TLD server, il quale la inoltra al server autoritativo e così via fino a raggiungere il server desiderato. La risposta DNS procede in senso inverso fino a giungere al client che aveva fatto la richiesta.

Ricorsione

CACHING

Alcuni server si prestano ad effettuare query ricorsive per conto di alcuni client. Una volta che hanno ottenuto una risposta, memorizzano in una cache tutte le informazioni che hanno imparato, fino alla loro scadenza. Alcune implementazioni del servizio DNS permettono di realizzare i cosiddetti servers caching only, ovvero privi di database proprio, ma utili per reindirizzare ad un server autorevole le query di risoluzione. Tale caratteristica è utile soprattutto quando la risoluzione deve essere effettuata attraverso collegamenti lenti (con velocità inferiore a 500 kbps) o firewall.

PACCHETTI DEL DNS

Pacchetti DNS

(*) Errata corrige: rcode non zcode nel pacchetto.

DNS è un servizio di livello Applicativo. Un pacchetto DNS è quindi incapsulato in un pacchetto di livello Trasporto (UDP), che a sua volta sarà incapsulato in un pacchetto di livello Networking (IP) e via dicendo. Per impostazione predefinita, le richieste/risposte DNS avvengono su protocollo UDP, quindi il pacchetto di livello Trasporto sarà un pacchetto UDP. Un pacchetto DNS può rappresentare una richiesta (query) o una risposta (answer) dal server.

I campi più importanti:

  • Query ID: permette al server di associare una richiesta/risposta da un certo client.
  • QR (Query/Response): è a 0 se si tratta di una richiesta, 1 se si tratta di una risposta.
  • AA (Authoritative Answer): è a 1 dal server se la risposta è autoritativa, 0 altrimenti.
  • TC (Truncated): impostato a 1 dal server se la riposta non rientra nel limite di 512 byte di un singolo pacchetto UDP.
  • RD (Recursion Desired): impostato a 1 se il client vorrebbe una richiesta ricorsiva.
  • RA (Recursion Available): Il server comunica se supporta (1) o no (0) richieste ricorsive.
  • rcode: è il codice di risposta del server, e indica successo o fallimento.
  • Question count, Answer count, ecc. sono contatori (vedremo dopo nell’esempio).

Esempio:

Pacchetto di richiesta DNS per il record A blog.morrolinux.it:

qr = 0 (si tratta di una richiesta);

Opcode = 0 (si tratta di una normale query)

rd = 1 (è desiderata la ricorsione);

Question count = 1 (una sola domanda)

Request

Pacchetto di risposta DNS ricevuta:

qr = 1 (risposta).

AA = 0 (non autoritativa).

ra = 0 (ricorsione non disponibile).

rc = ok

⇒ Question count = 1 (viene ripetuta la domanda nel pacchetto di risposta).

⇒ Answer count = 0 (la risposta data non è relativa alla domanda).

⇒ Authority count = 2 (sono restituiti due record di authority).

⇒ e 2 record addizionali (Additional record count):

Più precisamente, il server DNS in questione ci ha restituito il Name Server autoritativo per il dominio “morrolinux.it” e il suo secondario. Questi due name server sono ns1.morrolinux.it e ns2.morrolinux.it, ma non possiamo sapere che IP abbiano per contattarli!

⇒ Nei due record addizionali ci vengono forniti i relativi indirizzi IP per ns1 e ns2.

⇒ Possiamo andare avanti, mandando una richiesta DNS questa volta a ns1 o ns2, e ricevendo la risposta definitiva.

Response

UTILIZZO

Per utilizzare il servizio, è necessario configurare su ciascun client uno o più server DNS di riferimento. Questi sono predisposti a effettuare query ricorsive e che effettuano servizi di caching. Quando un sistema ha la necessità di comunicare con un altro sistema, chiede al server DNS di riferimento di effettuare il processo detto di “risoluzione” del nome in un indirizzo IP. Il server effettua una ricerca all’interno del suo database per ottenere l’indirizzo IP corrispondente al sistema ricercato. Se il server interrogato possiede l’informazione richiesta, il processo di ricerca termina con l’invio dell’indirizzo IP al richiedente. Se la ricerca ha esito negativo il server effettua una richiesta “ricorsiva”.

ROOT NAMESERVER

Nell’ambito della rete Internet, un root nameserver è un server DNS che risponde alle richieste di risoluzione dei nomi riguardanti il namespace del dominio principale (detto root, radice). Il suo compito è quello di reindirizzare le richieste relative a ciascun dominio di primo livello (top-level domain, TLD) ai nameserver propri di quel TLD.

Meccanismo di risoluzione nel namespace root

Quando un computer richiede al sistema DNS la risoluzione di un nome di dominio, ovvero la conversione di un nome simbolico nel corrispondente indirizzo IP, viene analizzato il nome di dominio da destra verso sinistra, chiedendo a ciascun nameserver di fornire informazioni soltanto sull’elemento che si trova a sinistra dell’ultimo punto. Occorre quindi precisare che tutti i nomi di dominio esistenti su Internet in realtà terminano con un. (punto): a rigore, dunque, Wikipedia appartiene al dominio “wikipedia.org.” (prova) Il punto finale è implicito; i moderni software di gestione del DNS non richiedono che venga specificato espressamente per risolvere il nome di dominio. La stringa vuota che segue il punto finale è chiamata “dominio radice” (DNS root zone); tutti i domini di primo livello, sia quelli individuali dei singoli paesi (.us, .uk, .it ecc.) che i suffissi non geografici (.com, .org, .net ecc.), appartengono a questo dominio. I root nameserver sono i server responsabili (in inglese “authoritative servers”, ossia server autorevoli, dotati di autorità) per quanto riguarda il dominio “.”; possiedono infatti l’elenco dei server responsabili per ognuno dei domini di primo livello riconosciuti, e lo forniscono in risposta a ciascuna richiesta. Ciascun dominio di primo livello (ad es. .org) possiede a sua volta un gruppo di server definiti autorevoli, che a loro volta delegano una parte di autorità ai nameserver responsabili di ciascun dominio di secondo livello (ad es. wikipedia.org). Questi ultimi rispondono alle interrogazioni sugli indirizzi IP relative ai sottodomini o ai singoli host (ad es. www.wikipedia.org). Anche se i nomi di dominio sono spesso a tre livelli, nulla vieta di avere host corrispondenti a nomi di secondo livello (wikipedia.org) o a livelli più elevati (www.italia.gov.it): la richiesta avviene comunque sempre allo stesso modo, interrogando ricorsivamente i vari nameserver. Inoltre dal 4 febbraio 2008 è iniziato l’inserimento dei primi indirizzi IPv6 nel sistema di risoluzione dei nomi.

UTILITA’ E CARICO DEI ROOT NAMESERVER

Al momento tutte le query al sistema DNS su Internet richiedono l’esistenza dei root nameserver, per cui essi costituiscono un elemento critico dell’infrastruttura. Da essi dipende non solo l’accessibilità dei siti web ma anche, attraverso i record MX, l’instradamento della posta elettronica. L’importanza del funzionamento dei nameserver è tale da essere stati oggetto di attacchi di tipo denial of service da parte di alcuni virus. Per tali motivi e per alleggerirne il carico di lavoro ne esistono diversi, situati in vari luoghi e sotto l’autorità di varie organizzazioni: tale distribuzione è però stata oggetto di polemiche per la centralità che ancora rivestono gli Stati Uniti d’America, e in particolare le istituzioni governative del Paese, nella gestione di una infrastruttura critica per l’intera Internet mondiale. Nella pratica, la maggior parte delle informazioni fornite dai root nameserver non cambia molto spesso, e viene memorizzata in varie cache da una gerarchia di server DNS, cui si rivolgono i singoli computer prima di interrogare i nameserver principali; anzi, quando viene fatta una richiesta di informazioni la risposta contiene anche l’informazione su per quanto tempo essa può essere ritenuta valida, proprio per rendere le richieste di risoluzione DNS ai root nameserver relativamente rare. Purtroppo, su Internet esistono una certa quantità di sistemi non correttamente configurati, che generano la maggior parte del traffico verso i root nameserver. Ad esempio, accade che arrivino ai nameserver principali delle richieste di risoluzione di nomi con indirizzo di provenienza impostato a 0.0.0.0 (corrispondente a dovunque e in qualsiasi posto), e capita che semplici computer desktop mal configurati tentino di aggiornare i dati contenuti nei nameserver principali. Per un elenco di casi curiosi in proposito, si veda l’articolo Bogus Queries nei collegamenti esterni di questa voce.

ELENCO DEI ROOT NAMESERVER

Al marzo 2007 esistevano 13 nomi di root nameserver, di forma lettera.root-servers.net, dove lettera può assumere i valori da A ad M. Alcuni di essi, già esistenti da tempo, avevano un altro nome prima che venisse stabilita la convenzione di nomenclatura attualmente vigente. Al momento non è possibile aggiungere altri nomi di server, a causa di un problema di ottimizzazione del protocollo: un pacchetto UDP deve poter contenere tutti i nomi dei server e con un quattordicesimo nome si supererebbe la dimensione massima del pacchetto.

Root NS

IL COMANDO NSLOOKUP

comando nslookup

APPROFONDIMENTO AI

Il DNS (Domain Name System) è un sistema che permette di risolvere i nomi di dominio (come www.example.com) in indirizzi IP (ad esempio, 192.0.2.1), necessari affinché i dispositivi possano comunicare tra loro su reti come Internet. Di seguito viene spiegato il funzionamento del DNS a livello di applicazione, con una descrizione dettagliata dei vari passaggi e componenti coinvolti.

1. Cos’è il DNS?

Il DNS è un protocollo che opera a livello di applicazione (livello 7 del modello OSI) e serve per la traduzione dei nomi di dominio leggibili dall’uomo in indirizzi IP utilizzabili dalle macchine. Gli utenti, infatti, preferiscono ricordare e digitare nomi di dominio (come google.com) piuttosto che lunghi e complessi indirizzi IP (come 142.250.181.206).

2. Componenti principali del DNS

Client DNS (Resolver): Quando un utente o un’applicazione richiede l’accesso a un dominio, il client DNS (chiamato anche “resolver”) avvia la richiesta per trovare l’indirizzo IP associato a quel dominio.

Server DNS: È il computer che contiene informazioni sui nomi di dominio e relativi indirizzi IP. Ci sono diversi tipi di server DNS:

Server DNS locale (resolver): Spesso configurato dal proprio ISP (Internet Service Provider), è il primo server contattato dal client DNS.

Server DNS autoritativo: Il server che ha la responsabilità finale di fornire la risposta corretta per un determinato dominio. Include i root server, i TLD server e i server autoritativi per i domini specifici.

3. Funzionamento passo per passo di una query DNS

1. Inserimento del nome di dominio: Quando un utente inserisce un URL in un browser (es: www.example.com), il browser contatta il sistema operativo per ottenere l’indirizzo IP associato a quel dominio.

2. Query al Resolver DNS locale: Il sistema operativo invia una query DNS al server DNS locale (detto anche resolver). Questo server potrebbe trovarsi nel router, o essere un server dell’ISP o un server DNS pubblico (come quelli di Google o Cloudflare).

3. Cache del Resolver: Il resolver verifica se ha già la risposta nella propria cache (una memoria temporanea che contiene risultati DNS recenti). Se l’indirizzo IP richiesto è già nella cache, la risposta viene immediatamente restituita al client.

4. Richiesta ai Root DNS: Se la risposta non è nella cache, il resolver inizia il processo di risoluzione. Prima invia una query a uno dei 13 root DNS server. I root server non conoscono l’indirizzo esatto del dominio, ma forniscono l’indirizzo del server TLD (Top-Level Domain) appropriato (es: per example.com, il TLD è .com).

5. Query al Server TLD: Il resolver invia quindi una query al server TLD che gestisce il dominio di primo livello (ad esempio, il server DNS che gestisce tutti i domini .com).

6. Query al Server DNS Autoritativo: Il server TLD risponde indicando il server DNS autoritativo per il dominio richiesto (example.com), che contiene le informazioni definitive sull’indirizzo IP associato.

7. Risposta Finale: Il resolver invia quindi una query al server autoritativo, che risponde con l’indirizzo IP associato al dominio richiesto. Questa informazione viene poi inviata al client (ad esempio, il browser), che può finalmente stabilire una connessione con il server all’indirizzo IP corretto.

8. Memorizzazione nella Cache: Prima di restituire la risposta al client, il resolver DNS locale memorizza l’indirizzo IP nella cache per un certo periodo (TTL – Time To Live), così da poter rispondere più velocemente in caso di richieste future per lo stesso dominio.

4. Tipi di Record DNS

Quando viene effettuata una query DNS, la risposta contiene specifici tipi di informazioni, chiamate record DNS. Alcuni dei principali record sono:

A (Address Record): Mappa un nome di dominio a un indirizzo IPv4.

AAAA: Mappa un nome di dominio a un indirizzo IPv6.

CNAME (Canonical Name Record): Reindirizza da un nome di dominio a un altro nome di dominio.

MX (Mail Exchange Record): Specifica i server di posta elettronica per quel dominio.

TXT (Text Record): Contiene informazioni testuali (usato, ad esempio, per autenticazione come SPF e DKIM).

5. DNS e Sicurezza: DNSSEC

Il protocollo DNS, nato negli anni ’80, non è stato progettato con la sicurezza in mente. Le query DNS non sono cifrate e possono essere vulnerabili a vari attacchi, come il DNS spoofing o cache poisoning. Per migliorare la sicurezza, è stato sviluppato DNSSEC (Domain Name System Security Extensions), che aggiunge firme crittografiche ai record DNS per garantire che le risposte provengano da una fonte autentica.

6. Richieste DNS Ricorsive vs Iterative

Richiesta ricorsiva: In questo tipo di richiesta, il resolver DNS effettua tutte le query necessarie per risolvere un nome di dominio e restituisce la risposta finale al client. L’utente richiede una sola risposta finale e non si preoccupa del processo.

Richiesta iterativa: Il resolver restituisce al client l’indirizzo di un altro server DNS che potrebbe avere la risposta, e il client stesso continua a inviare query successive fino a ottenere la risposta finale.

7. Cache del DNS

Per migliorare le prestazioni e ridurre il carico sui server DNS, i risultati DNS vengono memorizzati in cache sia a livello del resolver locale che nei vari server DNS intermedi. Ogni record DNS ha un valore di TTL (Time to Live) che specifica per quanto tempo una risposta può essere considerata valida prima di dover essere aggiornata.

8. DNS su HTTPS (DoH) e DNS su TLS (DoT)

In risposta ai problemi di privacy legati alle query DNS non cifrate, sono stati introdotti nuovi protocolli per proteggere le richieste DNS:

DoH (DNS over HTTPS): Invia le query DNS cifrate utilizzando il protocollo HTTPS.

DoT (DNS over TLS): Utilizza il protocollo TLS per cifrare le richieste DNS.

Questi protocolli migliorano la privacy e la sicurezza, poiché impediscono a terze parti di intercettare le query DNS e monitorare i siti visitati.

9. Conclusione

Il DNS è un sistema fondamentale per il funzionamento di Internet, poiché permette di risolvere i nomi di dominio in indirizzi IP, facilitando la navigazione e la comunicazione tra i dispositivi. Il processo, sebbene complesso, è ottimizzato per garantire velocità ed efficienza grazie all’uso di cache e alla struttura gerarchica dei server DNS.

LINK AI POST PRECEDENTI

RETI DI CALCOLATORI

APPROFONDIMENTO