Server DNS


Appunti della lezione in presenza del 06/12/22.

Sistema di naming dinamico e flessibile, che vuole rendere più semplice l'accesso a internet per gli utenti. E' un sistema distribuito geograficamente.

L'idea alla base del protocollo DNS è quella di trasformare gli indirizzi IP in nomi comprensibili. Serve quindi un sistema che possa tradurre i nomi in indirizzi. Questi nomi prendono il nome di hostname, che sono essenzialmente una serie di "label" (lunghe al più 63 caratteri) separate da punti. Inizalmente gli hostname potevano contenere soltanto caratteri alfanumerici, poi lo standard è stato esteso nel tempo. Un hostname può essere lungo al più 255 caratteri.

Un hostname è detto canonico se ci permette di identificare univocamente un host all'interno di internet. Si legge da destra verso sinistra per capire la localizzazione dell'host che ci interessa.

Oltre all'usabilità, gli hostname forniscono anche altri vantaggi:

  • il server può essere spostato su un altro host;

  • il server può usare più di un host per erogare un servizio;

Infatti un singolo hostname può corrispondere a diversi indirizzi IP! E' quindi utile per gestire il carico delle richieste, in contesti distribuiti geograficamente. Ovviamente si usano meccanismi di caching per non effettuare la risoluzione dell'indirizzo troppe volte.

Due meccanismi fondamentali:

  • Lookup: traduzione hostname \(\rightarrow\) indirizzo IP;

  • Reverse Lookup: traduzione indirizzo IP \(\rightarrow\) hostname;

  • Name server / DNS server : macchina che viene contatta per effettuare una risoluzione diretta / inversa. Non tutti i nameserver si occupano di tutti i nomi: esistono dei meccanismi di delega gerarchica, che vediamo in seguito.

Al giorno d'oggi si possono contattare i server DNS tramite molti protocolli sicuri oltre ad UDP. Ad esempio, viene usato UDP (protocollo "veloce") per effettuare le query DNS di lookup, mentre viene usato TCP (protocollo "affidabile") per gli aggiornamenti dei record dei name server. Esistono diverse regole sintattiche di naming, è importante ricordarsi che i server DNS ragionano in logica case insensitive.

Il commercio di nomi può avere costi molto elevati, e certe aziende traggono profitto dal registrare migliaia di nomi di attività potenzialmente di successo, che poi verranno ricattate per "comprare" il dominio corrispondente al loro brand.

  • Cybersquatting \(\rightarrow\) registrare un dominio che assomiglia o contiene il brand di un'azienda e provare a rivenderlo. Ora esistono molte policy per regolamentare queste operazioni fraudolente.

  • Punycode \(\rightarrow\) simboli che "assomigliano" a lettere o simboli comunemente usati, sono praticamente indistinguibili ad occhio nudo. Registrare siti con nomi contenenti punycode significa poter potenzialmente indurre gli utenti finali a errori/typo che potrebero portare a frodi informatiche.

  • gTLD, (generic) legati allo scopo del sito. (.com .edu .org ...);

  • ccTLD, (country code) (.uk .it . fr ...)

  • iTLD, (infrastructure) si tratta di domini speciali che servono per gestire informazioni tecniche sui sistemi DNS, ad esempio per le traduzioni inverse. (.arpa);

Dal 2013 è possibile usare qualsiasi tipo di parola in qualsiasi lingua come TLD, incluse quelle non latine. Sul sito della IANA si possono controllare quali sono i TLD attualmente attivi:

Gli SLD tipicamente corrispondono al vero brand dell'organizzazione/azienda.

Come si può intuire, si forma una organizzazione gerarchica dei domini, come quella in figura:

Esiste quindi un "root level" nascosto, da cui si diramano le richieste di risoluzione degli hostname.

Il compito dei name server è quello di tradurre gli URL dei siti web mettendoli in relazione con gli indirizzi IP corrispondenti.

Ad ogni livello della gerarchia dei domini corrisponde una classe di name server:

  • Root name server; Fino al 2004 esistevano 13 Root name server. In generale si segue il principio della ridondanza, in modo da creare un sistema resiliente (in caso di guasto, la traduzione degli hostname deve funzionare ugualmente).

  • TLD name server, che devono registrarsi presso i root name server.

  • SLD name server: se ad esempio Unimore volesse gestire dei sottodomini come "www.ing.unimore.it", allora avrebbe bisogno di installare un SLD!

  • Local name server: server gestiti dagli ISP e dalle organizzazioni locali, corrispondono alle foglie dell'albero.

  • Authoritative name server: name server che ha il compito di fornire corrispondenza tra tutti gli hostname del dominio ed i rispettivi indirizzi IP. E' necessario per tutte le organizzazioni che gestiscono un "nome a dominio".

  • Esempio: name server gestito da Unimore responsabile degli hostname unimore.it Tuttavia il singolo name-server principale di unimore potrebbe non essere direttamente responsabile di tutti gli hostname che terminano con "unimore.it", ma potrebbe "delegare" altri name-server. Ad esempio, potrebbe delegare la risoluzione degli hostname "...dim.unimo.it" al nodo indicato in rosso.

  • Zona: insieme di domini di cui è direttamente responsabile un name-server.

I dati relativi ad una zona sono memorizzati all'interno di un master file presente sul server primario. Esistono anche dei server secondari che scaricano dati relativi alla propria zona dal server primario. Come al solito si crea ridondanza per avere una maggiore resilienza (almeno due server autoritativi per una zona devono essere failure-indipendent). La frequenza di aggiornamento dei dati nei server secondari è tipicamente decisa dall'amministratore di rete.

  • Zone transfer: scambio di dati relativi alla zona di interesse tra il server primario e i secondari.

I Server DNS sono essenzialmente dei database che contengono records. Ne esistono diversi tipi:

  • A : canonical host name \(\rightarrow\) indirizzo IP. Potrebbero essere presenti più record per un singolo hostname.

  • NS: record che descrive il name server autoritativo per una determinata zona.

  • SOA: zona \(\rightarrow\) parametri relativi;

  • MX: record relativo ad un server che gestisce le email per un determinato dominio.

  • CNAME: canonical name --> alias. In pratica, un host può avere diversi hostname, di cui solo uno canonico.

  • PTR: Pointer to another node.

  • TXT: campo relativo alle deleghe. E' un record del tipo: protocollo --> server che gestisce quel protocollo.

  • AAAA: identico ad un record A, ma relativo ad IPv6.

  • Query ricorsiva: il local name server gestisce tutte le ulteriori query necessarie per ottenere l'indirizzo IP richiesto dal client.

  • Query iterativa: la risposta ricevuta dal client non è direttamente l'indirizzo IP del server richiesto, ma contiene informazioni utili per la risoluzione completa del nome.

  • Domain name authority: entità che gestisce i servizi di root (ICAAN)

  • Registration Authority: entità che fornisce servizi di registrazione per un TLD (Top Level Domain).

  • Registar: società intermedia autorizzata;

Si usa whois per ottenere informazioni su un particolare dominio. Prende anche indirizzi IP come argomento, per ottenere i metadati relativi.

whois unimore.it
whois 155.185.1.1

Si usa dig se si vogliono gestire richieste DNS a basso livello.c Vengono ritornati l'indirizzo IP e il nome canonico del server.

>>> dig www.unimore.it

;; ANSWER SECTION:
www.unimore.it.		86400	IN	CNAME	www-2-122.gwa.unimo.it.
www-2-122.gwa.unimo.it.	7199	IN	A	155.185.2.122

Per specificare un local name server diverso, si usa questo comando:

dig @8.8.8.8 www.unimore.it

Per chiedere a chi è delegata la gestione della posta, usare:

dig MX unimore.it