professionale.gif (1244 byte) Professionale.jpg (10348 byte)  Dario de Judicibus (ddjudicibus@tecnet.it)

I protocolli classici: DHCP

 

Il DHCP è forse uno dei protocolli più utilizzati dagli utenti domestici, ma è anche tra quelli meno visibili a chi accede a Internet via modem. La sua utilità è tale che ormai viene utilizzato anche in quelle aziende nelle cui intranet era consolidata l’usanza di assegnare indirizzi IP fissi ai sistemi collegati

Per operare in Internet o in una intranet, un sistema deve conoscere tutta una serie di parametri e informazioni che gli permetteranno di comunicare con gli altri host connessi alla rete. Tale insieme è detto configurazione di rete, e nel caso più semplice, va memorizzato manualmente nel sistema prima della connessione dell’host (la lista dei parametri che un sistema deve avere per collegarsi a una rete basata sull’Internet Protocol è riportata in tabella 1).
Tale lista (riportata in inglese, dato che la maggior parte dei prodotti e delle implementazioni della Suite TCP/IP sono in questa lingua) è definita in una serie di RFC aggiornati periodicamente e che prendono il nome di Host Requirements (HR) RFCs.
In realtà, non tutti i sistemi hanno la necessità di possedere, al momento della connessione, tutti i parametri riportati in tabella, dal momento che alcuni di questi possono essere negoziati con il server.
Un parametro necessario è invece l’indirizzo IP.
Nell’articolo pubblicato il mese scorso in questa stessa sezione abbiamo parlato di RARP e di BOOTP, cioè i protocolli che permettono a un sistema di ottenere il proprio IP address direttamente dalla rete.
Tuttavia, l’indirizzo IP e una serie di parametri fissi possono non essere sufficienti a dare al sistema tutte le informazioni che gli HR RFCs prevedono, anche perché alcune di queste potrebbero cambiare nel tempo o non valere per tutti i sistemi.
In realtà, un sistema ha sempre la possibilità di ottenere buona parte di queste informazioni dalla rete stessa, attraverso l’uso di vari protocolli. Per esempio, la subnet mask e le informazioni sui router possono essere ottenuti attraverso il protocollo di controllo ICMP (Internet Control Message Protocol). Altre informazioni, come l’MTU (Maximum Transmission Unit), possono essere calcolate con appositi algoritmi. Tutto ciò, tuttavia, richiede uno sforzo significativo da parte del client che tra l’altro deve essere in grado di gestire fin dall’inizio tutte queste operazioni di autoconfigurazione. È evidente che la disponibilità di un protocollo che fornisce a un sistema in rete tutte queste informazioni in modo da renderlo subito operativo è la soluzione ideale, anche perché semplifica di parecchio il lavoro dell’amministratore della rete.


Il protocollo DHCP

A tale scopo è stato definito un nuovo protocollo, basato in massima parte sul BOOTP, chiamato Dynamic Host Configuration Protocol o più semplicemente DHCP, il quale, in primo luogo, consente di non dover specificare un indirizzo IP fisso nella configurazione del TCP/IP, ma che, a ogni collegamento, fornisce un indirizzo IP dinamico rilasciato poi a fine sessione.
In questo particolare caso il DHCP è fondamentale in quanto spesso il numero di indirizzi IP che ciascun provider ha a disposizione è limitato, e comunque inferiore al numero di abbonati al servizio, per cui non sarebbe fisicamente possibile assegnare in modo permanente a ciascun abbonato un indirizzo IP fisso.
Un’altra peculiarità di DHCP è garantire, qualora non ci siano necessità specifiche, che un sistema possa essere configurato in modo totalmente automatico, senza cioè che sia necessario l’intervento manuale in fase di inizializzazione. Non occorre che l’amministratore definisca una configurazione per ogni possibile singolo sistema: sarà sufficiente stabilire una serie di regole valide per tutti gli host – o per raggruppamenti diversi di sistemi – lasciando poi al protocollo il compito di mappare tali regole sui singoli client. Così come non è necessario che ci sia un server DHCP per ciascuna sottorete fisica. Dato che questo protocollo è basato sul BOOTP, esso può utilizzare agenti chiamati BOOTP Relay Agents per reindirizzare richieste e risposte attraverso sottoreti interconnesse.
D’altra parte, è possibile che, per ragioni di prestazioni o per altri motivi, si decida di avere più di un server DHCP in una stessa rete. In tal caso, il sistema deve essere in grado di gestire contemporaneamente più risposte alla sua richiesta d’inizializzazione, che gli arriveranno dai vari server DHCP.
Il DHCP deve essere anche in grado di operare in una rete dove sono presenti sistemi in cui la configurazione è fissa o viene definita manualmente, o in cui l’allocazione dell’indirizzo IP e di altri parametri di configurazione sono gestiti con altri protocolli, nonché essere capace di comportarsi come un server BOOTP quando richiesto. In teoria si potrebbe utilizzare il DHCP anche per ottenere parametri di configurazione non legati all’Internet Protocol, anche se ciò non è obbligatorio. Quello che invece il DHCP non è in grado di fare è registrare automaticamente un host al sistema di gestione dei nomi (Domain Name System) né tantomeno configurare i router.


Le regole base

Fra i «compiti» di DHCP, di primaria importanza sono: la verifica che un particolare indirizzo IP non sia utilizzato da più di un sistema contemporaneamente; il controllo che il server assegni al sistema sempre gli stessi parametri, a ogni collegamento, compreso l’indirizzo IP e, infine, l’accertamento che tale configurazione non cambi nel caso il server di rete o lo stesso server DHCP «cadano».
Questo schema garantisce al client una buona stabilità di configurazione, minimizzando i problemi che potrebbero derivare dal cambiamento dinamico della configurazione durante una sessione. Pensate, per esempio, al caso in cui, durante il trasferimento di un file di grosse dimensioni via FTP, il server di rete, a un certo punto vada in crash. Al momento del ripristino del collegamento, la prima cosa che tenterà di fare il programma FTP sarà il resume della connessione, in modo da ricominciare il trasferimento dal punto in cui era stato interrotto. Questa procedura andrà a buon fine solo se il client, nella seconda connessione, avrà lo stesso indirizzo IP che gli era stato assegnato nella prima. In caso contrario, il resume non funzionerà.
Il DHCP garantisce inoltre che i nuovi sistemi collegati per la prima volta abbiano comunque subito una configurazione automatica senza richiedere l’intervento dell’amministratore di rete, permettendo tuttavia la gestione della definizione di configurazioni permanenti per particolari sistemi, come, per esempio, per i server di posta elettronica o per i server applicativi.
Il DHCP è formato in realtà da due componenti: il primo è un protocollo che si occupa di fornire i parametri di configurazione a fronte di specifiche richieste da parte dei client; il secondo è un meccanismo di allocazione degli indirizzi di rete. Questo protocollo si basa su uno schema client/server, dove il server è il sistema che fornisce le informazioni richieste. Dato che tuttavia tali informazioni sono spesso anche delle specifiche di ogni possibile implementazione dello stack TCP/IP, e dato che alla rete possono essere connessi sistemi anche molto differenti fra loro, un sistema non si può improvvisare server DHCP senza opportuni accorgimenti. Per esempio, il server potrebbe essere specializzato per fornire un certo numero di parametri solo a macchine di un certo tipo, oppure dedicato a una certa sottorete.
L’utilizzo di più server DHCP nella stessa rete, e in contemporanea, va studiato con cura, in modo da evitare che lo stesso indirizzo sia assegnato a più client da parte di server diversi.


Diverse tipologie di attribuzione degli indirizzi

Il DHCP può utilizzare tre differenti meccanismi di allocazione degli indirizzi IP. Il primo è chiamato allocazione automatica e prevede l’assegnazione permanente di un indirizzo IP a un determinato client. Il secondo si chiama allocazione dinamica, e prevede l’attribuzione temporanea di un indirizzo IP a un determinato sistema. In questo caso l’indirizzo IP viene rilasciato quando il sistema che lo ha ricevuto si scollega o comunque ha una scadenza ben precisa. Dei tre, quest’ultimo è l’unico meccanismo che permette il riutilizzo degli indirizzi di rete.
Il terzo e ultimo meccanismo è detto allocazione manuale, e consiste semplicemente nel far conoscere a un determinato sistema l’indirizzo IP che comunque l’amministratore della rete ha assegnato in modo manuale a tale sistema.
Tutti e tre i sistemi possono essere utilizzati contemporaneamente nella stessa rete e grazie all’utilizzo degli agenti BOOTP, un server DHCP può servire macchine collegate a più sottoreti fisiche.
Ogni server DHCP mantiene una tabella che contiene un’entrata per ogni client configurato. Ad ogni client viene assegnato un identificativo unico. Questo può per esempio essere formato dall’indirizzo IP della sottorete più l’indirizzo fisico di rete, differenziato per tipo di scheda di rete. Altri schemi sono comunque possibili.
Per quanto riguarda l’indirizzo IP, se assegnato in modo dinamico, questo può essere scelto con vari criteri. Per esempio, può essere attribuito per primo l’indirizzo meno utilizzato. In ogni caso un server DHCP tende a ridare a un client sempre lo stesso indirizzo fintanto che possibile. Prima di assegnare un indirizzo, il server si assicura che esso sia effettivamente libero facendo un controllo via ICMP. Allo stesso modo, il client che lo riceve, lo verifica via ARP prima di utilizzarlo. Un esempio d’interazione client/server è riportata in tabella 2.


Il messaggio DHCP

Il formato del messaggio DHCP è praticamente lo stesso del BOOTP, ed è riportato in tabella 3. Rispetto al BOOTP ci sono però alcune differenze. La prima è che il campo dedicato alle estensioni proprietarie si chiama adesso campo delle opzioni e, diversamente dal BOOTP, può avere una lunghezza variabile. La seconda è che una delle opzioni permette di assegnare a un client un identificativo unico che può essere distinto dall’indirizzo fisico di rete del client stesso.
Un’ultima considerazione. Il DHCP si poggia direttamente sull’UDP, per cui non possiede alcun livello di affidabilità e soprattutto di sicurezza. È cioè abbastanza semplice introdurre in rete sia dei falsi server DHCP, sia dei client che si presentano al server come legittimati a ricevere le informazioni e invece non lo sono. Gli amministratori di rete dovranno prestare attenzione, poiché esiste sempre la possibilità che hacker esperti possano creare dall’interno brecce nella rete utilizzando queste tecniche.
Una descrizione completa del protocollo DHCP può essere trovata nel RFC 2131. Altri RFC forniscono ulteriori informazioni e dettagli su aspetti specifici del protocollo e sulle sue relazioni con altri protocolli, come l’RFC 1533, che riporta tutte le opzioni DHCP.


Internet News è un mensile della Casa Editrice Tecniche Nuove S.p.A.
© 1995/99. Tutti i diritti sono riservati.
Internet News non risponde di eventuali errori e omissioni.
Commenti a: inews@tecnet.it