Salta al contenuto
Note per Studenti Livello applicazione - DNS

Livello applicazione - DNS

In questa pagina 10

A cosa serve

I protocolli TCP/IP identificano un host con il suo indirizzo IP, ma le persone preferiscono i nomi: 104.106.125.36 oppure www.amazon.com, quale dei due si ricorda meglio? Serve quindi una specie di rubrica che associ a ogni nome un indirizzo. Il DNS (Domain Name System) è il servizio del livello applicazione che fa questa traduzione (Livello di rete e indirizzamento IPIl livello di rete (network layer) porta i datagrammi da host a host attraverso i router: incapsula (framing), sceglie il percorso (routing) e sposta il pacchetto da un ingresso a un'uscita del router (forwarding); in Internet lascia ai livelli superiori controllo d'errore, di flusso e di congestione. Un indirizzo IPv4 è di 32 bit, diviso in prefisso (rete, $n$ bit) e suffisso (host, $32-n$ bit). L'indirizzamento a classi (A, B, C, D, E) è obsoleto; oggi si usa quello senza classi (CIDR): data una notazione $a.b.c.d/n$ si ricavano $N=2^{32-n}$ indirizzi, indirizzo di rete (suffisso tutto 0) e di broadcast (suffisso tutto 1), oppure con la netmask: rete $=$ indirizzo AND maschera, broadcast $=$ indirizzo OR (NOT maschera).Livello di rete e indirizzamento IP → per gli indirizzi). Non lo chiama l'utente: sono il browser, il client di posta, ping ecc. che, prima di aprire una connessione, chiedono al DNS l'indirizzo.

Una rubrica centrale con tutti i nomi del mondo non funzionerebbe: sarebbe troppo grande da tenere in una macchina sola e, se quella macchina si guastasse, tutta la rete di comunicazione crollerebbe. Il DNS è perciò un sistema distribuito: le informazioni stanno su molti computer sparsi nel mondo, e un host che ha bisogno di un'associazione contatta il computer più vicino che la possiede.

Lo spazio dei nomi gerarchico

I nomi devono essere unici, perché sono unici gli indirizzi a cui corrispondono. Per garantirlo senza un'autorità sola, lo spazio dei nomi è gerarchico: ogni nome è fatto di più parti e ogni parte aggiunge un dettaglio.

  • la prima parte può indicare la natura dell'organizzazione;
  • la seconda il nome dell'organizzazione;
  • la terza i reparti dell'organizzazione, e così via.

I nomi si trovano percorrendo una struttura ad albero rovesciato con la radice in alto. L'albero può avere al massimo 128 livelli, dal livello 0 (la radice) al livello 127.

                       .  (radice, livello 0)
          ┌────────────┼────────────┐
         it           com          org        <- domini di primo livello
          │
        unipd                                 <- organizzazione
          │
         dei                                  <- dipartimento
          │
        signet                                <- gruppo

Il nome signet.dei.unipd.it si legge da destra a sinistra: it indica la zona geografica, unipd l'organizzazione, dei il dipartimento, signet il gruppo. Ogni etichetta (la parte tra due punti) è lunga al più 63 caratteri e il nome intero al più 255.

Definizione (dominio e nome di dominio). Un nome di dominio è la sequenza di etichette dal nodo dell'albero fino alla radice, separate da punti. Un dominio è il sotto-albero che parte da quel nodo.

Esempio. signet.dei.unipd.it ha 4 etichette: il nodo signet sta al livello 4 dell'albero (it livello 1, unipd 2, dei 3) ed è dentro i domini dei.unipd.it, unipd.it e it.

Server DNS e registrar

Tenere tutta l'informazione dello spazio dei nomi su un solo computer sarebbe inefficiente e poco affidabile. La soluzione è distribuire l'informazione fra molti computer detti server DNS: a livello mondiale ci sono 13 server radice (le macchine reali sono molte di più, ma gli indirizzi pubblicati sono 13).

Come si aggiunge un nuovo dominio? Con un registrar, un'entità commerciale accreditata dall'ICANN (l'elenco è su internic.net): chi vuole miosito.it lo registra lì, e il dominio entra nel DNS.

Il DNS locale e il risolutore

Ci sono solo 13 server radice, ma ogni ISP ha un server DNS locale (local name server, detto anche default name server).

Definizione (risoluzione). La traduzione di un nome in un indirizzo si chiama risoluzione nome-indirizzo (name-address resolution). L'host che ha bisogno di tradurre è il risolutore (resolver): manda la richiesta al server DNS più vicino. Se il server ha l'informazione, risponde al risolutore; altrimenti lo rimanda ad altri server oppure chiede lui ad altri server.

Le due strade corrispondono alle due modalità di interrogazione: iterativa (il server risponde "non lo so, chiedi a quest'altro") e ricorsiva (il server si fa carico di trovare la risposta e restituisce quella finale).

Un esempio completo

Un programma sull'host some.anet.com deve trovare l'indirizzo IP dell'host engineering.mcgraw-hill.com, per mandargli un messaggio.

  1. Il risolutore manda la richiesta al DNS locale.
  2. Se questo server non conosce l'indirizzo, manda la richiesta a un server radice, il cui indirizzo il DNS locale conosce già.
  3. La radice indica il server del dominio di primo livello (qui com), e la richiesta gli viene mandata.
  4. Se anche questo non conosce l'associazione, indica il server DNS dell'azienda McGraw-Hill, e la richiesta passa a quello.
  5. Il DNS di McGraw-Hill conosce l'indirizzo di engineering.mcgraw-hill.com e lo restituisce; l'indirizzo torna indietro al DNS locale e infine all'host di partenza.

Ogni server che non conosce l'associazione manda a chi lo ha interrogato l'indirizzo del server successivo: i messaggi 2, 4 e 6 contengono tutti la stessa domanda; il messaggio 3 contiene l'indirizzo del server del dominio di primo livello, il 5 quello del DNS di McGraw-Hill, il 7 l'indirizzo della destinazione.

passo  da -> a                           contenuto
 1     host -> DNS locale                engineering.mcgraw-hill.com ?
 2     DNS locale -> radice              engineering.mcgraw-hill.com ?
 3     radice -> DNS locale              non so: chiedi al server di "com"
 4     DNS locale -> server "com"        engineering.mcgraw-hill.com ?
 5     server "com" -> DNS locale        non so: chiedi al DNS di mcgraw-hill.com
 6     DNS locale -> DNS McGraw-Hill     engineering.mcgraw-hill.com ?
 7     DNS McGraw-Hill -> DNS locale     l'indirizzo IP richiesto
 8     DNS locale -> host                l'indirizzo IP richiesto

Formula (tempo di risoluzione con cache vuota). Ogni coppia domanda-risposta costa un RTT con il suo interlocutore (il round trip time è il tempo di andata e ritorno: due ritardi di propagazione più i tempi di trasmissione e di elaborazione, Analisi delle prestazioni di reteLe prestazioni di una rete si misurano con tre famiglie di metriche: traffico (bitrate $R_0$ massimo del collegamento, throughput $S\le R_0$ dati consegnati con successo, goodput al livello applicazione), ritardo (end-to-end $d_{tot}=d_{proc}+d_{queue}+d_{trans}+d_{prop}$ con $d_{trans}=L/R$ e $d_{prop}=d/v$; jitter; RTT) e capacità del tubo (BDP $=R\cdot$ ritardo, bit che riempiono il collegamento), più l'affidabilità (PER, PDR, PLR). Il throughput di un percorso è quello del collegamento collo di bottiglia, $\min$ dei bitrate, ricordando che i collegamenti condivisi dividono la capacità.Analisi delle prestazioni di rete →; i messaggi DNS sono molto brevi, per esempio 100100 byte =800=800 bit su un collegamento a 1010 Mbit/s si trasmettono in 800/107=80 μ800/10^7=80\ \mus, trascurabili davanti ai millisecondi di propagazione, quindi RTT ≈2τp\approx2\tau_p), quindi T=RTThost-locale+RTTradice+RTTTLD+RTTautoritativoT=\text{RTT}_{\text{host-locale}}+\text{RTT}_{\text{radice}}+\text{RTT}_{\text{TLD}}+\text{RTT}_{\text{autoritativo}}. Con una frazione hh di richieste risolte dalla cache del DNS locale, Tˉ=h RTThost-locale+(1−h) T\bar T=h\,\text{RTT}_{\text{host-locale}}+(1-h)\,T.

Esempio. RTT: host-DNS locale 5 ms, DNS locale-radice 30 ms, DNS locale-server com 25 ms, DNS locale-DNS dell'azienda 40 ms. T=5+30+25+40=100T=5+30+25+40=100 ms. Se il DNS locale ha già in cache l'indirizzo del DNS dell'azienda (caso normale per un sito visitato spesso) salta radice e com e va direttamente da lui: 5+40=455+40=45 ms; se è in cache la risposta stessa: 5 ms. Con h=0,9h=0{,}9: Tˉ=0,9⋅5+0,1⋅100=14,5\bar T=0{,}9\cdot5+0{,}1\cdot100=14{,}5 ms.

Perché la media è una somma pesata: la risoluzione dura 55 ms con probabilità hh (richiesta in cache) e 100100 ms con probabilità 1−h1-h (cache vuota), e il tempo medio è il valore attesola somma dei valori possibili ciascuno moltiplicato per la sua probabilitàValore atteso → Tˉ=5 h+100 (1−h)=100−95 h\bar T=5\,h+100\,(1-h)=100-95\,h. Il grafico mostra che il guadagno è lineare in hh: ogni 1010 punti percentuali in più di cache fanno risparmiare 9,59{,}5 ms.

Grafico interattivo: Tempo medio di risoluzione DNS in funzione della frazione h di richieste risolte dalla cache del DNS locale: T medio = 5h + 100(1−h) ms. Con h = 0,9 si ottengono 14,5 ms

Variante tutta ricorsiva. Se ogni server inoltra la richiesta al successivo e le risposte tornano lungo la stessa catena, con RTT lungo la catena di 5 ms (host-locale), 30 ms (locale-radice), 20 ms (radice-TLD) e 15 ms (TLD-autoritativo) il tempo è la somma dei tratti: 5+30+20+15=705+30+20+15=70 ms. Il carico però si sposta sui server in alto nella gerarchia, che dovrebbero tenere le richieste in sospeso di tutto il mondo: per questo di norma la parte ricorsiva sta tra host e DNS locale, e il DNS locale interroga i server successivi uno alla volta.

Cache e TTL

Appena un server DNS (uno qualunque) impara un'associazione nome-indirizzo, la memorizza in cache. Due conseguenze:

  • Per avvisare il client che la risposta arriva dalla memoria cache e non da una fonte autorevole, il server marca la risposta come non autoritativa (unauthoritative). Per ottenere una risposta authoritative bisogna interrogare direttamente il server DNS dell'organizzazione che gestisce il nome.
  • Le voci in cache scadono dopo un certo tempo, per non restituire un'associazione vecchia: a ogni record si aggiunge il TTL (time to live), il tempo di validità residuo.

Proprietà (cache e TTL). Finché il TTL non è scaduto, il server risponde dalla cache senza interrogare nessuno; allo scadere cancella il dato. Un cambiamento nella zona resta quindi invisibile a chi ha la copia in cache fino alla fine del TTL.

Esempio. www.example.it ha TTL 3600 s: per un'ora tutti i client dello stesso DNS locale ricevono la risposta in un solo RTT. Se l'amministratore cambia l'indirizzo, il vecchio valore può circolare fino a 36003600 s =60=60 minuti: per questo, prima di una migrazione, si abbassa il TTL (per esempio a 300 s) con un certo anticipo.

Formato dei record

Ogni informazione del DNS è un record con cinque campi: (nome, tipo, valore, classe, TTL).

campo significato
nome il nome di dominio a cui si riferisce
tipo il tipo di nome (che cosa rappresenta il valore)
valore l'informazione associata al nome
classe il tipo di rete: IN = Internet
TTL tempo di validità residuo del record

I tipi più usati: A (indirizzo IPv4 del nome), AAAA (indirizzo IPv6), NS (nome di un server DNS autoritativo del dominio), CNAME (il nome è un alias di un altro), MX (server di posta del dominio, Posta elettronica - SMTP, POP3 e IMAPLa posta elettronica è una transazione a senso unico: non ha senso che il destinatario tenga un server sempre acceso, quindi si usano server intermedi. Servono due User Agent (UA, il programma dell'utente), due programmi client/server di spinta (MTA, protocollo SMTP: mittente-suo server e server-server) e un programma client/server di tiro (MAA, POP3 o IMAP4: server del destinatario-destinatario). SMTP usa TCP porta 25, comandi HELO, MAIL FROM, RCPT TO, DATA, QUIT e risposte a tre cifre (220 pronto, 250 ok, 354 inizia il testo, 221 chiusura, 421 non disponibile) in tre fasi: apertura, trasferimento, chiusura. POP3 (porta 110): utente e password, poi elenca e scarica i messaggi uno a uno; non organizza la posta sul server. IMAP4 aggiunge intestazioni prima del download, ricerca, download parziale, cartelle sul server. MIME permette di spedire dati non ASCII (immagini, video, lettere accentate) traducendoli in ASCII a 7 bit, per esempio in base64 (3 byte diventano 4 caratteri).Posta elettronica - SMTP, POP3 e IMAP →), PTR (nome associato a un indirizzo).

Definizione (record di risorsa). Una quintupla (nome, tipo, valore, classe, TTL) conservata dai server DNS.

Esempio. www.example.it. 3600 IN A 192.0.2.80: il nome www.example.it ha l'indirizzo IPv4 192.0.2.80, per un'ora, in classe Internet. Un record example.it. 3600 IN MX 10 mail.example.it. dice che la posta di example.it va al server mail.example.it (il numero 10 è la preferenza: vince il valore più basso).

Gli strumenti: nslookup

In UNIX e in Windows l'utility nslookup interroga il DNS e mostra l'associazione nome-indirizzo.

nslookup www.example.it
Server:   192.168.1.1        <- il DNS locale usato (indirizzo e porta 53)
Address:  192.168.1.1#53

Non-authoritative answer:    <- risposta dalla cache, non dal server autoritativo
Name:     www.example.it
Address:  192.0.2.80

La scritta Non-authoritative answer dice che il DNS locale ha risposto dalla sua cache. Per ottenere una risposta autoritativa si interroga direttamente un server autoritativo del dominio (con nslookup www.example.it ns1.example.it, dove il secondo argomento è il server da usare). In laboratorio (Katharà - emulare una reteKatharà è un emulatore di rete: ogni dispositivo (host, router, server) è un container Docker, e i container sono collegati da "domini di collisione" virtuali (reti locali). Un laboratorio è una cartella con lab.conf (topologia), un file <dispositivo>.startup per ogni macchina (comandi eseguiti all'avvio) e, se serve, una cartella per dispositivo con i file da copiare nel suo filesystem. Si avvia con lstart, si ferma con lclean; le macchine si configurano con ifconfig, si provano con ping e si osservano con tcpdump (file .pcap da aprire con Wireshark).Katharà - emulare una rete →) si può mettere un server DNS su una macchina e interrogarlo con nslookup.

DNS e NAT

Un server con indirizzo privato (10.0.0.207, nell'intranet) deve poter essere raggiunto da un client esterno (204.51.16.12) per nome (NAT e indirizzi privatiUna rete privata (intranet) usa il protocollo TCP/IP con indirizzi privati ($10.0.0.0/8$, $172.16.0.0/12$, $192.168.0.0/16$), riutilizzabili da intranet diverse ma da non instradare in Internet: i router di bordo scartano i pacchetti con indirizzi privati. Per accedere a Internet servono un proxy applicativo (uno per applicazione) o il NAT (Network Address Translation): un router che traduce indirizzi privati in indirizzi pubblici di un pool, con una tabella NAT e un'associazione dinamica per sessione. Il NAT tradizionale è outbound: Basic NAT traduce solo l'IP (uno a uno, quindi servono tanti indirizzi pubblici quante le sessioni contemporanee), NAPT traduce anche la porta ([IP privato, porta] $\to$ [IP pubblico, porta del NAT]) e permette a molte sessioni di condividere un solo IP pubblico. Il Twice NAT permette sessioni anche dall'esterno, con un DNS interno e associazioni statiche.NAT e indirizzi privati →). La sequenza della slide:

  1. Il client manda la richiesta DNS per myserver.com.
  2. Il DNS dell'intranet conosce myserver.com come 10.0.0.207.
  3. Il NAT converte l'indirizzo con la sua tabella: 10.0.0.207 →\to 194.54.21.6 (indirizzo pubblico).
  4. La risposta DNS al client contiene l'indirizzo pubblico 194.54.21.6, che il client userà per tutte le comunicazioni successive; il NAT tradizionale rende così raggiungibile il server dell'intranet.

Senza questa conversione il client riceverebbe 10.0.0.207, un indirizzo che non è instradabile in Internet.

Attacchi al DNS

Il DNS è un bersaglio perché una risposta falsa manda l'utente su un sito sbagliato (Introduzione alla sicurezza delle retiUna minaccia è un evento o una sequenza di azioni che può violare uno o più obiettivi di sicurezza; la sua realizzazione è un attacco. Obiettivi: riservatezza, integrità, disponibilità, responsabilità (accountability), privacy. Minacce: intercettazione, analisi del traffico, falsificazione, mascheramento, ripudio, profilazione, fingerprinting, disturbo (jamming). Servizi (segretezza, protezione dell'integrità, autenticazione del messaggio e dell'entità, non ripudio, anonimizzazione, gestione delle chiavi, controllo degli accessi) e meccanismi (cifratura, firma digitale, rilevamento delle intrusioni, MAC, randomizzazione, accordo sulla chiave). Un protocollo di sicurezza di livello N protegge la PDU di livello N e superiori, non quelle sotto. Attacchi fisici, software e di rete; sniffing e spoofing alla base di DoS (esempio: Smurf con ICMP) e MITM (avvelenamento della cache ARP o DNS, ICMP redirect). Altri: sinkhole, wormhole, ping of death, DDoS con botnet.Introduzione alla sicurezza delle reti → per i concetti generali). Le slide elencano quattro tipi di attacco:

  1. Macchine compromesse: un attaccante può accedere alla cache DNS di un host e modificarla direttamente, controllando tutto il processo di risoluzione.
  2. Macchina dell'utente: l'attaccante può mandare a una richiesta DNS una risposta falsificata (spoofed).
  3. Avvelenamento della cache del DNS locale (local DNS cache poisoning): durante le interrogazioni ricorsive o iterative l'attaccante manda risposte false al DNS locale, che le mette in cache; chi usa quel DNS viene mandato a un sito falso per tutta la durata del TTL.

Quanto è facile indovinare la risposta? L'attaccante non vede la domanda del DNS locale, quindi la sua risposta falsa deve riportare lo stesso identificatore di transazione (campo da 1616 bit del messaggio DNS: 216=65 5362^{16}=65\,536 valori) e arrivare prima di quella vera. Ogni risposta falsa ha probabilità p=2−16≈1,5⋅10−5p=2^{-16}\approx1{,}5\cdot10^{-5} di avere l'identificatore giusto; con nn risposte false indipendenti la probabilità che almeno una indovini è il complementare di "tutte sbagliate" (Indipendenza di eventiA e B sono indipendenti se P(A ∩ B) = P(A) P(B), cioè se sapere che uno si è verificato non cambia la probabilità dell'altro; l'indipendenza passa ai complementari, non va confusa con l'incompatibilità, e per più eventi va richiesta su ogni sottofamiglia.Indipendenza di eventi →, Prove ripetute e modello binomialen prove indipendenti, ciascuna con probabilità di successo p: una sequenza con k successi ha probabilità p^k (1−p)^(n−k), e la probabilità di esattamente k successi è (n su k) p^k (1−p)^(n−k) (modello binomiale); il primo successo alla prova k ha probabilità (1−p)^(k−1) p.Prove ripetute e modello binomiale →): P(successo)=1−(1−2−16)n≈n65 536(n≪65 536).P(\text{successo})=1-\left(1-2^{-16}\right)^{n}\approx\frac n{65\,536}\quad(n\ll65\,536). Con n=1000n=1000 risposte false si ha circa 1,5%1{,}5\%, con n=10 000n=10\,000 circa 14%14\% e con n=65 536n=65\,536 circa 63%63\% (il numero di tentativi fino al primo successo è geometricoil numero di prove fino al primo successo, con media 1/pDistribuzione geometrica → con media 65 53665\,536). Per questo i resolver moderni scelgono a caso anche la porta sorgente UDP: si aggiungono circa 1616 bit da indovinare, la probabilità per tentativo scende a circa 2−322^{-32} e servono nell'ordine di 10910^9 risposte false per un successo del 20%20\%. 4. Server DNS malevoli: quando l'utente visita un sito ospitato su un server DNS malevolo, questo può fornire informazioni fraudolente nei campi facoltativi della risposta.

Errori comuni

  • Dire che il DNS "traduce solo nomi in IP": ha anche MX, NS, PTR, CNAME.
  • Confondere il DNS locale (cache, fa le domande per conto dell'host) con un server autoritativo (conosce il dominio).
  • Pensare che un cambiamento di record sia visibile subito: resta in cache fino alla fine del TTL.
  • Dimenticare che l'indirizzo del DNS locale deve essere già noto all'host (viene dal DHCP).
  • Contare un solo RTT per la risoluzione completa: sono quattro (host-locale, radice, TLD, autoritativo) a cache vuota.

Versione ripasso

Scopo. Il DNS traduce i nomi in indirizzi IP. È distribuito (una rubrica unica sarebbe troppo grande e un punto di guasto unico) e gerarchico: albero rovesciato con la radice in alto, al più 128128 livelli.

  • Il nome si legge da destra a sinistra: signet.dei.unipd.it è il gruppo signet (livello 44), dentro dei, unipd e it.
  • Etichette fino a 6363 caratteri, nome intero fino a 255255.
  • Un dominio è il sotto-albero che parte da un nodo; il nome di dominio è la sequenza di etichette dal nodo alla radice.
  • Ci sono 1313 indirizzi di server radice. Un nuovo dominio si registra presso un registrar accreditato ICANN.

DNS locale e risolutore.

La catena di risoluzione (cache vuota; host some.anet.com cerca engineering.mcgraw-hill.com):

  1. host →\to DNS locale: la domanda;
  2. DNS locale →\to radice: la stessa domanda; la radice risponde "chiedi al server di com";
  3. DNS locale →\to server com: risponde "chiedi al DNS di mcgraw-hill.com";
  4. DNS locale →\to DNS di McGraw-Hill: risponde con l'indirizzo IP;
  5. l'indirizzo torna al DNS locale e poi all'host.
  • Tempo a cache vuota: T=RTThost-locale+RTTradice+RTTTLD+RTTautoritativoT=\mathrm{RTT}_{\text{host-locale}}+\mathrm{RTT}_{\text{radice}}+\mathrm{RTT}_{\text{TLD}}+\mathrm{RTT}_{\text{autoritativo}}.
    • Esempio: 5+30+25+40=1005+30+25+40=100 ms. Se il DNS locale ha già il server dell'azienda in cache: 5+40=455+40=45 ms. Se ha già la risposta: 55 ms.
  • Con cache parziale: con frazione hh di richieste risolte dalla cache del DNS locale, Tˉ=h RTThost-locale+(1−h) T\bar T=h\,\mathrm{RTT}_{\text{host-locale}}+(1-h)\,T.
    • Esempio: h=0,9h=0{,}9: Tˉ=0,9⋅5+0,1⋅100=14,5\bar T=0{,}9\cdot5+0{,}1\cdot100=14{,}5 ms.
  • Tutta ricorsiva: 5+30+20+15=705+30+20+15=70 ms, ma sposta il carico sui server alti nella gerarchia.

Cache e TTL.

  • Ogni server che impara un'associazione la memorizza. La risposta dalla cache è non autoritativa (unauthoritative): la risposta autoritativa viene solo dal server dell'organizzazione che gestisce il nome.
  • Ogni record ha un TTL (time to live). Allo scadere il dato viene cancellato, e fino ad allora un cambiamento resta invisibile a chi ha la copia.
    • Esempio: www.example.it con TTL 36003600 s: un cambio di indirizzo circola per 6060 minuti. Prima di una migrazione si abbassa il TTL (per esempio a 300300 s) con anticipo.

Record. Ogni informazione è una quintupla (nome, tipo, valore, classe, TTL). La classe IN è Internet.

  • A: indirizzo IPv4. AAAA: indirizzo IPv6. NS: server autoritativo del dominio. CNAME: alias di un altro nome. MX: server di posta, dove vince la preferenza più bassa. PTR: da indirizzo a nome.
    • Esempio: www.example.it. 3600 IN A 192.0.2.80; example.it. 3600 IN MX 10 mail.example.it.

nslookup. Mostra il server usato e la scritta Non-authoritative answer quando la risposta viene dalla cache. Con un secondo argomento interroga direttamente un server, per avere la risposta autoritativa.

DNS e NAT. Il server myserver.com ha indirizzo privato 10.0.0.207 nell'intranet. Il DNS dell'intranet risponde al client esterno con 194.54.21.6, l'indirizzo pubblico che il NAT ha associato al server (NAT e indirizzi privatiUna rete privata (intranet) usa il protocollo TCP/IP con indirizzi privati ($10.0.0.0/8$, $172.16.0.0/12$, $192.168.0.0/16$), riutilizzabili da intranet diverse ma da non instradare in Internet: i router di bordo scartano i pacchetti con indirizzi privati. Per accedere a Internet servono un proxy applicativo (uno per applicazione) o il NAT (Network Address Translation): un router che traduce indirizzi privati in indirizzi pubblici di un pool, con una tabella NAT e un'associazione dinamica per sessione. Il NAT tradizionale è outbound: Basic NAT traduce solo l'IP (uno a uno, quindi servono tanti indirizzi pubblici quante le sessioni contemporanee), NAPT traduce anche la porta ([IP privato, porta] $\to$ [IP pubblico, porta del NAT]) e permette a molte sessioni di condividere un solo IP pubblico. Il Twice NAT permette sessioni anche dall'esterno, con un DNS interno e associazioni statiche.NAT e indirizzi privati →). Senza questa conversione il client riceverebbe un indirizzo non instradabile.

Attacchi.

  1. Macchina compromessa: la cache dell'host viene modificata.
  2. Macchina dell'utente: una risposta falsificata (spoofed) arriva all'host.
  3. Avvelenamento della cache del DNS locale: risposte false vengono memorizzate, e per tutto il TTL gli utenti vanno su un sito falso.
  4. Server DNS malevolo: inserisce dati falsi nei campi facoltativi della risposta.

Errori tipici:

  • dire che il DNS fa solo nome →\to IP (esistono MX, NS, PTR, CNAME);
  • confondere il DNS locale, che fa da cache e proxy, con un server autoritativo;
  • aspettarsi che una modifica sia visibile subito: resta in cache fino al TTL;
  • contare un solo RTT: a cache vuota sono quattro;
  • dimenticare che l'indirizzo del DNS locale arriva dal DHCP.

Lezioni in cui compare

Teoria collegata