DHCP, DNS e Routing
Introduzione
Una rete può essere gestita manualmente se di ridotte dimensioni, quando diventa
complessa la rete necessita di strumenti per una gestione automatica e da remoto
delle risorse.
due attività dell’amministratore di rete:
- host configuration: configurazione del dispositivo prima di essere messo in
rete
- host management: gestione e controllo dei dispositivi
principale protocollo utilizzato: DHCP
DHCP
necessario introdurre modalità dinamica di assegnazione degli indirizzi IP che
consente un’allocazione veloce degli indirizzi.
→ In ambito IETF fu definito il protocollo DHCP(Dynamic Host Configuration Protocol)
Protocollo che permette l’assegnazione dinamica degli indirizzi ip
Tramite DHCP un dispositivo riceve altri parametri oltre all’IP:
- subnet mask
- default gateway
- DNS Server predefinito
- DNS Server alternativo
(Tutti i Sistemi operativi Windows Client installano automaticamente il servizio DHCP
Client come parte TCP/IP)
Il protocollo DHCP richiede la disponibilità di un DHCP Server nella rete, senza di
esso un computer configurato per usare DHCP non può ottenere un indirizzo IP e
comunicare in rete.
Nel caso in cui un host non trovi un DHCP server, Windows offre la funzionalità
Automatic Private IP Addressing (APIPA) per fornire all’host in modo automatico un IP
e una subnet mask. → l’assegnazione avviene senza bisogno di registrazioni o di
verifiche con un’authority.
(un host con APIPA può comunicare solo con host che utilizzano l’APIPA)
DHCP utilizza l’indirizzo fisico per identificare l’host (MAC).
Il DHCP server alle richieste risponderà alle richieste client scegliendo tra 3 diversi
tipi di configurazione:
- Configurazione manuale: è possibile assegnare un indirizzo IP specifico ad un
host inserendolo manualmente nel DHCP Server (usato per macchine che
necessitano di un indirizzo permanente).
- Configurazione automatica: Il DHCP assegna in modo automatico un indirizzo
IP permanente a ogni Host che si collega alla rete
- Configurazione dinamica: il DHCP assegna un IP ad un host per un tempo
limitato (tempo di lease), il quale una volta scaduto il client può richiedere il
rinnovo o richiedere l’assegnazione di un nuovo indirizzo.
Vantaggi configurazione dinamica:
- Automatizzazione: l’assegnazione avviene in modo automatico
- Gestione centralizzata: l’amministratore esegue tutte le operazioni lavorando
solo su DHCP server
- Condivisione e riutilizzo IP: gli host non sono sempre connessi tutti allo stesso
tempo (una rete non può sopportare host superiori al numero di IP disponibili),
quando uno non è connesso il suo IP torna nel pool a disposizione di altri
client
- Assenza di conflitti: impossibile l’assegnazione di IP duplicati
- Portabilità: qualunque client può richiedere un indirizzo.
(L’unica criticità è il fatto che prevede che un host riceva un IP nuovo ogni volta
effettui un accesso a una rete diversa.)
Un DHCP può essere configurato per servire più subnet, per due scopi:
- fault tolerance: è opportuno inserire un secondo DHCP come backup per
mantenere sempre attivo il servizio.
- bilanciamento del carico lavoro: così da diminuire i tempi di risposta del
server.
Lo standard DHCP non specifica una modalità di colloquio tra i server per evitare che
si generino conflitti nell’assegnazione degli indirizzi
Quando un DHCP è responsabile dell’indirizzamento su una subnet diversa è
necessario introdurre un relay agent, ossia una macchina che non è né un server né
un client, ma si occupa della comunicazione tra client e server attraverso più reti
Formato del messaggio DHCP
Di due tipi: request e reply
protocollo di trasporto: UDP
Suddiviso in:
- op: specifica se il messaggio è request o reply
- htype: indica il tipo di hardware utilizzato nella rete locale
- hlen: indica la lunghezza dell’indirizzo fisico contenuto nel messaggio
- hops: usato nei dhcp per controllare l’inoltro dei messaggi DHCP
- transaction ID: numero casuale che permette di associare la risposta alla
richiesta
- seconds: numero di secondi da quando il client ha iniziato l’acquisizione o il
rinnovo
- flags: nello standard è stato definito un solo bit di flag; se è a 1 significa che il
client desidera ricevere con l’ip di broadcast
- client ip address: contiene l’IP del client solo se il pacchetto è Bound, Renew o
Rebind
- your ip address: contiene l’IP assegnato
- server ip address: contiene l’IP del server
- router ip address: contiene IP router con funzioni DHCP relay
- Client hardware Address: è l’indirizzo fisico del client, usato per la sua
identificazione
- server host name: il server che invia un messaggio DHCP reply non può
inserire il suo nome in questo campo
- Boot file name: specifica il nome completo del file
- Options: contiene molti parametri necessari:
3 campi:
- il primo contiene il codice
- il secondo ottetto la lunghezza del successivo campo valore
per specificare il tipo di messaggio si codifica la successiva opzione in 3 ottetti come
segue:
1 discover
2 offer
3 request
4 decline
5 ack
6 nack
7 release
8 renew
4 fasi del DHCP per l’assegnazione dell’IP
Sequenza di richiesta ip (DORA):
- Discover: l’host per prima cosa deve trovare un server DHCP al quale inviare
la richiesta → messaggio in broadcast
- Offer: i dhcp che ricevono questo messaggio di discover rispondono con un
messaggio DHCP offer → in broadcast
- Request: il client sceglie uno dei messaggi ricevuti e invia al server un
messaggio con i relativi parametri ricevuti (gli altri server rimetteranno a
disposizione l’IP nel proprio pool)
- Acknowledgement: il server risponde con un messaggio confermando i
parametri di configurazione
Stati del DHCP Client
( vedi libro p. 324 )
assegnazione con durata indicata nel lease; una volta terminata verrà effettuata una
nuova richiesta di riconferma
→ la durata del lease serve per evitare che un IP sia trattenuto solo da un dispositivo,
quindi quando questo non è in uso può essere riutilizzato.
informazioni all’interno di un DHCP:
- proprio IP
𝑛𝑢𝑚𝑒𝑟𝑜 𝑑𝑖 𝑏𝑖𝑡 𝑝𝑒𝑟 𝑙𝑎 𝑝𝑎𝑟𝑡𝑒 𝑑𝑖 ℎ𝑜𝑠𝑡
- range indirizzi a disposizione da assegnare (2 − 2)
Gli apparati che possono fare da dhcp server possono essere:
- router
- server
DHCP Relay
ip-helper-address: ?
comandi cisco per dhcp relay:
R1# conf t
R1(config)# ip dhcp pool LAN
R1(dhcp-config)# network (indirizzo della rete) (subnet mask della rete)
R1(dhcp-config)# default-router (indirizzo gateway)
R1(dhcp-config)# dns-server (indirizzo gateway)
DNS (Domain Name System)
L’applicazione del DNS permette agli utenti della rete di usare dei nomi per
identificare un computer con funzioni di server al posto del suo indirizzo ip
Il DNS utilizza il protocollo di trasporto UDP e la porta 53 per soddisfare le
richieste di risoluzione provenienti dagli host.
Formato da 3 componenti principali:
- Domain Name Space: specifica la struttura ad albero dei nomi di
dominio
Diviso in 3 tipi di domini:
- domini radice: domini di primo livello (TLD → Top Level Domain)
- domini intermedi: domini che hanno a loro volta dei sottodomini
- domini foglia: sono domini privi di sottodomini e contengono solo
host
- Name Server: processo applicativo con il ruolo di server che contiene
informazioni su alcune parti del Name Space chiamate zone (costituisce
una authority per tali zone).
Un Name Server contiene anche i puntatori ad altri Name Server che
possono essere usati per ricavare informazioni su altre zone; la zona dei
TLD è detta root zone e i Name Server che ne rispondono sono i root
Name Server (conoscono anche gli indirizzi degli authoritative Name
Server)
- Resolver: è un programma con il ruolo di client che ottiene informazioni
sul Name Server
Per comporre un nome completo di un dominio si percorre il cammino dalla
foglia (che rappresenta un host) alla radice (che rappresenta un punto)
(maggiori info p.329)
Valgono le seguenti regole:
- i nomi delle singole componenti del cammino completo non devono
superare i 63 caratteri (punti inclusi)(preferibili nomi facili da ricordare)
- un cammino completo non deve superare i 255 caratteri (meglio limitare
il numero di livelli usati e scegliere nomi brevi)
- i nomi sono case-sensitive (è indifferente scrivere .it oppure .IT poiché
entrambi identificano lo stesso dominio)
- ogni dominio controlla i suoi sottodomini (se si vuole creare un nuovo
sottodominio è necessario il permesso del dominio padre mentre non si
deve chiedere il permesso ai livelli superiori dell’albero)
Formato dei pacchetti DNS
Il formato permette a un client di porre più richieste (query) in un singolo
messaggio (DNS request)
Ogni query consiste nel nome di dominio del quale il client cerca l’indirizzo IP
e il tipo di oggetto desiderato, il server risponde restituendo un messaggio
simile (DNS reply) che contiene le risposte alla query (Se non può soddisfare
tutte le query il server indica nel messaggio di risposta altri server che il client
può contattare per ottenere le risposte)
identificativo Q Opcode A T R R Zero Rcode
R A C D A
QDcount ANcount
NScount ARcount
Query Section
Answer RR
Authority RR
additional information RR
identificativo: permette di far corrispondere le reply alle request
flag: campo a 16 bit suddiviso in
- QR: indica se il messaggio è una query o una risposta
- Opcode: indica il tipo di request (0 = query standard; 1 = query inversa;
2 = richiesta di stato del server; da 3 a 15 non utilizzati)
- AA: se vale 1 indica una risposta authoritative del server
- TC: se vale 1 indica che la reply eccedeva i 512 byte e il messaggio è
stato troncato
- RD:se vale 1 indica che si desidera una ricerca ricorsiva, altrimenti la
ricerca sarà iterativa
- RA: Ricorsione disponibile (Available)
- Zero: deve essere zero (per usi futuri)
- RCod: codice di ritorno (0 = nessun errore; 1 = errore nella costruzione
della query; 2 = errore interno nel server dei nomi; 3 = ricevuto da un
server di autorità, il nome specificato non esiste nel dominio; 4 = il
server dei nomi non implementa quel tipo di nomi; 5 = il server si rifiuta
di eseguire l’operazione per motivi di impostazioni; da 6 a 15 riservati
per usi futuri)
query section: in questa sezione di solito si trova la domanda
le tre successive sezioni sono costruite nello stesso modo
I Resource Record (RR)
Ogno dominio (o ogni zona) mantiene le informazioni in strutture dette
Resource Record (descrittore di risorsa)
L’uso più frequente di queste strutture è per ottenere un indirizzo IP: dato il
nome di un host (il DNS trova il RR che mantiene l’associazione tra quel nome
e l’indirizzo IP)
Name Type Class TTL RDLength RData
Name: nome del dominio a cui il record appartiene
Type: identifica il tipo di informazione contenuta nel campo RData
Class: indica se le informazioni del record fanno riferimento ad internet o ad
altro
TTL: indica la stabilità del record, più il valore è alto più il record è stabile e
sarà memorizzato nella cache del DNS
RDLength: specifica la lunghezza in ottetti del campo RData
RData: è il valore restituito dal DNS, può contenere un numero, una stringa
ASCII o un nome di dominio, dipende da quanto scritto nel campo Type
Funzionamento DNS
L’albero gerarchico del DNS è implementato mediante una base di dati
distribuita in cui sono memorizzati i RR, se fosse tutto in un unico server
questo sarebbe così in sovraccarico per tutte le richieste da soddisfare da non
essere in pratica utilizzabile, inoltre se si guasterebbe si fermerebbe l’intera
rete internet
La soluzione è stata di suddividere lo spazio dei nomi del DNS in zone
disgiunte, ognuna con un Name Server principale (DNS primario) e dei Name
Server secondari (DNS secondario che attingono al principale per avere le
informazioni).
I client che accedono ai Name Server sono i resolver; quando un’applicazione
necessita di informazioni dal DNS usa questa libreria per effettuare le
interrogazioni (query).
Se il Resource Record è authoritative per la zona richiesta il DNS risponderà
direttamente in quanto dispone dell’informazione mentre in caso contrario
effettuerà una ricerca all’interno dello spazio dei nomi per trovare i dati
richiesti
→ risoluzione dei nomi
due tipi di query:
iterative: richiedono a un server DNS la miglior risposta che già conosce
ricorsive: chiedono al server DNS di rispondere alla query in modo completo
Di regola i resolver effettuano richieste ricorsive; i Name Server invece
solitamente effettuano query iterative
(spiegazione passo-passo pp.334-335)
Risoluzione inversa
Esiste la possibilità di poter ottenere un nome da un indirizzo IP
Avviene una richiesta con partenza IP e arrivo nome (tramite il dominio
[Link])
Problematiche di sicurezza
Il DNS possiede varie problematiche di sicurezza:
- non è autenticato: l’informazione richiesta potrebbe arrivare non dal
DNS Server corretto ma da un’altra macchina
- è molto lento: è possibile che qualcuno intercetti la richiesta destinata a
un DNS server e risponda al suo posto
- il protocollo non offre meccanismi per proteggere l’integrità delle
informazioni distribuite
Di solito più il valore TTL è alto, più il dato è sicuro
DNS cache poisoning: attacco che comporta la modifica dei dati della sua
cache, inserendovi un valore di TTL molto alto → associazione di un nome ad
un server malevolo
Per rimediare è stato creato un gruppo di lavoro che ha definito un’estensione
al DNS denominata DNSSEC; essa garantisce all’utente che il sito web che sta
visitando è quello originale e non una copia creata per scopi fraudolenti.
A tale scopo si utilizzano delle chiavi crittografiche per aumentare i dati nel
DNS a partire dal root; le chiavi sono gestite da ICANN
Routing (Instradamento)
Viene effettuato per mezzo del router, egli sulla base di alcune informazioni
può avviare il processo di forwarding
Il router possiede al suo interno una routing table dove inserisce tutte le rotte
che lo percorrono, egli deve costruirla affinché possa memorizzare i dati
indispensabili per individuare il percorso migliore per raggiungere le reti
remote.
Routing table: lista di tutte le reti che il router può raggiungere insieme alle
informazioni sulle modalità di instradamento
Default router: utilizzato quando il router non possiede una route per inviare
un pacchetto alla destinazione desiderate (è il gateway of last resort)
Due tipi di routing:
- Statico → le sue rotte sono configurate manualmente
(dall’amministratore) → usato per piccole reti
- Dinamico → le rotte vengono apprese dinamicamente tramite un
protocollo di routing
Routing Statico
Non richiede scambio di informazioni per aggiornare i percorsi o individuarne
di nuovi (no sforzo computazionale), però richiede la configurazione da parte
dell’amministratore per modificare le entry, sia per guasti, sia per inserire
nuove route (oneroso)
Tipologie di rotte statiche:
- Reti direttamente connesse [C]
- Host direttamente connessi [L]
- Reti statiche configurate manualmente [S]
- Rotte di Default (gateway of last resort)
- Rotte di backup (floating static routing) → In sostanza, si tratta di rotte
statiche che vengono aggiunte al routing di un dispositivo di rete, ma
con una priorità (o una metrica) inferiore rispetto alle rotte dinamiche o
a quelle statiche primarie già in uso.
Struttura routing Table:
Type Ip address subnet outgoing next hop Administra
subnet mask tive
distance /
metric
1) Per indirizzare un pacchetto fa and con subnet mask e vede se risultato
uguale a IP subnet (controlla tutte le rotte salvate)
2) Poi invia il pacchetto alla rete con subnet mask più lunga
3) Se non trova corrispondenza riceverà “destinazione non raggiungibile”
4) Next Hop non necessario per le reti direttamente connesse
5) Next Hop deve essere visibile per il router che invia il pacchetto
Tutto quello che non trova lo manda al gateway of last resort (subnet [Link],
mask [Link]) → il next hop connesso a questo IP sarà il next hop dell’ISP
Outgoing → rete direttamente connessa
Next Hop → rete indirettamente connessa
Administrative distance
L'administrative distance (AD) è un concetto utilizzato nel routing per
determinare l'affidabilità delle fonti di informazioni sulle rotte. In sostanza, è un
valore numerico che i router utilizzano per valutare quanto "affidabile" sia un
percorso verso una rete. Ogni protocollo di routing ha un valore di AD
predefinito, e il router utilizza questa informazione per decidere quale rotta
utilizzare quando ci sono più percorsi disponibili per raggiungere la stessa
destinazione.
I valori di AD più bassi indicano una maggiore affidabilità. Ecco alcuni esempi
di valori di AD per alcuni protocolli di routing comunemente utilizzati:
- Rotte connesse direttamente: AD = 0
- Rotte statiche: AD = 1
- EIGRP (Enhanced Interior Gateway Routing Protocol): AD = 20
- OSPF (Open Shortest Path First): AD = 110
- RIP (Routing Information Protocol): AD = 120
- Rotte esterne BGP (Border Gateway Protocol): AD = 20
- Rotte interne BGP: AD = 200
Routing dinamico
Permette ai router di scambiarsi le informazioni necessarie a determinare i
possibili percorsi per raggiungere destinazioni remote mediante protocolli,
inoltre permette l’adattamento automatico ai cambiamenti della topologia di
rete
(minor controllo da parte dell’amministratore)
Problema: Routing Table Lookup Problem → dover decidere molto in fretta
dove instradare i pacchetti per evitare rallentamenti
Soluzione: si sono studiate strutture dati per memorizzare la tabella di routing
in maniera compatta ed efficiente (uso di sistemi paralleli)
Autonomous system → Insieme di reti gestite da un’unica organizzazione
Ogni azienda ha il proprio AS e lo gestirà come vuole
Esistono punti di incontro degli autonomous system
Tipologie di protocolli di routing:
- IGP → Interior Gateway Protocol: OSPF (Open Shortest Path First), RIP
- EGP → Exterior Gateway Protocol: BGP, IGRP
I router devono supportare il protocollo
Scopo: Devono creare/aggiornare la routing table scegliendo il percorso più
vicino/migliore → compiuto mediante pacchetti speciali chiamati routing
update
(alcuni router usano il numero di router come metrica, altri invece usano la
velocità delle interfacce)
I protocolli di routing devono essere:
- ottimali → in grado di fornire il percorso migliore o più veloce
individuando percorsi alternativi
- imparziali → devono utilizzare tutte le linee disponibili per distribuire il
traffico
- flessibili → deve garantire la capacità di adattarsi ai cambiamenti della
topologia
- convergenza veloce → i cambiamenti devono essere fatti i l più
velocemente possibile
- robusti → deve essere in grado di funzionare anche nel caso di
configurazioni errate e guasti
- semplici → deve essere semplice ed efficiente
Due algoritmi per costruire il cammino minimo:
- Distance Vector
- Link - State
(calcolo del percorso migliore o a costo minimo)
Algoritmo di bellman-Ford
Rientra negli algoritmi distance vector
Il collegamento ha una distanza inferiore in base al costo
Si sceglie il costo inferiore
Ogni nodo conosce la propria distanza
I nodi equivalgono ai router, gli archi alle connessioni che hanno
Funzionamento:
1) Conoscere i propri vicini tramite pacchetti echo (Neighbor discovery)
→ su quali è attivo lo stesso protocollo di routing (devono parlare la
stessa lingua)
si costruisce la situazione iniziale (solo quelli direttamente connessi)
2) Inoltra il suo vettore delle distanze e riceve e riceve quello degli altri
- per le destinazioni nuove popola la tabella
- per le altre somma il costo (se la somma (distanza indicata +
distanza dal router del dato) è maggiore al valore attuale non
sostituisco)
Fase di convergenza
Ogni tanto continuano ad inviare il proprio vettore di distanze
Si ferma quando non avvengono più aggiornamenti
Vettore delle distanze:
Nodo Distanza Next-Hop
Problemi:
- routing loop → quando il pacchetto è inoltrato su un percorso circolare
senza mai giungere a destinazione (risolto con il time to live TTL)
- count to infinity → quando il costo viene progressivamente
incrementato (di solito quando una destinazione non è più
raggiungibile; in questo caso il percorso viene scartato visti i costi
crescenti)
Soluzioni:
- Split Horizon → serve a prevenire il loop tra due nodi adiacenti (un
router che riceve informazioni relative a una certa destinazione da un
router adiacente non può spedire indietro informazioni su quella stessa
destinazione)
- poison reverse → simile allo split horizon; in questo caso spedisce
ugualmente informazioni ad una certa route in cui erano state inviate ma
attribuisce loro una metrica infinita
- route poisoning → blocca tutte le route che aumentano di costo (anche
se potrebbe essere un temporaneo aumento per congestione
(SVANTAGGIO))
- hold down → serve a limitare il count infinity; tutte le volte che un link è
rimosso dalla routing table il router non accetta aggiornamenti relativi al
link stesso
- triggered updates → consente di inviare update non più a intervalli
regolari ma non appena si verifica un cambiamento nella rete