Scheda generale di una query DNS

DNS (Domain Name System): come funziona

Il DNS (Domain Name System) è un insieme di tecnologie (protocolli, infrastrutture fisiche, software), per la risoluzione di nomi di dominio in indirizzi IP.
È realizzato tramite un database gerarchico, distribuito su diversi Name Servers (NS)

Con il DNS è possibile assegnare uno o più nomi, ad uno o più indirizzi IP.

Cos’è un dominio?

Un nome di dominio identifica una risorsa (o più), ed è rappresentato da una stringa composta da parti separate da un punto.
La parte più significativa è la prima partendo da destra, ed è chiamata TLD (Top Level Domain).
Il numero di suddivisioni della stringa, definisce il livello del dominio; ad esempio:

5th.4th.3rd.2ns.1st

DominioLivello
miosito.com2
it.miosito.com3
mail.google.com3
admin.it.miosito.com4

Resource Record Sets (Zone)

Ritroviamo la struttura a livelli dei domini, nella gerarchia del DNS.
Un RRSet (Resource Record Set o Zona) è un sottoalbero del DNS amministrato separatamente.

Zone del DNSIl NS che amministra un RRSet è detto autoritativo.
Essendo, quindi, ogni sottoalbero un RRSet, ogni singolo dominio possiede un NS autoritativo.

Tipi di NS

Essenzialmente esistono due tipi di NS:

  • Primario: gestisce il database (aggiunta ed eliminazione dei record);
  • Secondario: copia del primo (replicazione).

Che, a loro volta, possono anche ricoprire tre ruoli:

  • Caching: copia temporanea di alcuni Resource Record;
  • Forwarding: interroga ricorsivamente altri NS;
  • Stealth: autoritativo, ma invisibile per le query.

Resource Records

All’interrogazione del client, il NS può rispondere con uno o più tipi di record, a seconda della risorsa richiesta.
I principali tipi di RR (Resource Records) sono i seguenti, i cui valori si riferiscono al dominio interessato alla query:

Tipo RRValore contenuto
AIPv4 associato al dominio
AAAAIPv6 associato al dominio
MX
(Mail eXchange)
Server SMTP
CNAMEAlias canonico
TXTTesto
PTRPuntatore (per reverse lookup)
HINFOInfo HW/SW webserver
NSIPv4 altro NS (utilizzato anche per delegazione query)
SOA
(State Of Authority)
IPv4 NS autoritativo per il dominio

Formato di un Resource Record

RR (dominio, TTL, classe, tipo, valore)

  • Dominio: dominio richiesto;
  • TTL: Time To Live, ovvero il tempo (in secondi) entro cui il record è valido;
  • Classe: è sempre IN, ovvero Internet;
  • Tipo: tipo di RR;
  • Valore: valore contenuto nel RR.

È possibile visualizzare i risultati di una query DNS con il comando nslookup.
Qui è riportato un esempio di nslookup in Windows, per il dominio wikipedia.org:

Tipo RRValore contenuto
A91.198.174.192
AAAA2620:0:862:ed1a::1
NSns1.wikimedia.org
ns2.wikimedia.org
SOAns0.wikimedia.org
MXpriority: 10, polonium.wikimedia.org
priority: 50, lead.wikimedia.org
TXTgoogle-site-verification=AMHkgs-4ViEvIJf5znZle-BSE2EPNFqM1nDJGRyn2qk

La sintassi di nslookup in Windows è: nslookup -querytype=<tipo> dominio.

Risoluzione dei nomi

Genericamente, la risoluzione DNS si compone di queste fasi:

  1. Il client interroga il DNS, chiedendo l’indirizzo per un dominio;
  2. Il DNS restituisce il record;
  3. Il client si connette all’indirizzo contenuto nel record.

Più dettagliatamente, sono presenti più passaggi prima di ottenere l’indirizzo IP, ed esistono due tipi di query DNS.

Risoluzione Iterativa

DNS: Risoluzione Iterativa

  1. Il client chiede al Local NS l’indirizzo del dominio;
  2. Il Local NS interroga il Root NS, per l’indirizzo del NS autoritativo per il TLD del dominio;
  3. Il Local NS interroga il TLD NS, per l’indirizzo del NS autoritativo per il dominio richiesto;
  4. Il Local NS interroga il NS autoritativo per il dominio, per l’indirizzo della risorsa richiesta;
  5. Il Local NS restituisce l’indirizzo al client, che raggiunge la destinazione.

Il poche parole, è il Local NS che si occupa di interrogare iterativamente, tutti i NS che saranno coinvolti.
Dopo ogni singola interrogazione, sempre il Local NS interroga il NS successivo, fino all’autoritativo.

Risoluzione Ricorsiva

DNS: Risoluzione Ricorsiva

  1. Il client chiede al Local NS l’indirizzo del dominio;
  2. Il Local NS delega la richiesta al Root NS;
  3. Il Root NS delega la richiesta al TLD NS;
  4. Il TLD NS interroga il NS autoritativo per il dominio;
  5. Il NS autoritativo rimanda il record al TLD NS. Il record viene passato tra tutti i NS coinvolti, fino al Local NS;
  6. Il Local NS restiruisce l’indirizzo al client, che raggiunge la destinazione.

I NS sono interrogati ricorsivamente. Ogni NS coinvolto, interroga il successivo, che interrogerà quello successivo ancora.

 

 Tra client e Local NS

Cos’è il Local NS

Il Local NS (o anche Default NS) è il nameserver che è assegnato di default dall’ISP del client.
È possibile cambiarlo impostando manualmente l’indirizzo dei nameserver desiderati, o attraverso le impostazioni della scheda di rete, o dal gateway.

Google Public DNS (8.8.8.8, 8.8.4.4), ad esempio, è un Local NS che esegue query in maniera iterativa.

Risolutore DNS del client

Il Local NS restituisce comunque un record al client, il cui valore viene estrapolato attraverso il risolutore DNS del client.
Il risolutore DNS locale, infatti, può essere configurato (generalmente è così di default) per porre i record ricevuti in cache, per ottimizzare le future connessioni agli stessi host.

Oltre alla propria cache DNS, il client possiede anche una propria mappatura tra nomi di dominio e indirizzi IP – il file degli hosts – che può essere facilmente modificato dagli utenti.

Riassumento, quindi, il client prima controlla il file degli hosts, poi la propria cache e, infine (se non trova il dominio) interroga il Local NS.

Per qualsiasi domanda, chiarimento, o semplice curiosità, c’è lo spazio dei commenti proprio qui sotto 🙂

Davide

Fondatore at FortyZone
Si diploma nel 2015 in Informatica. Continua il viaggio studiando Informatica alla Sapienza. Durante gli anni coltiva e amplia interessi e passioni, tra cui musica, cinema, sviluppo web, SEO, digital marketing e blogging. Ah, suona il basso.