Dynamic Host Configuration Protocol (DHCP) |
Sabato 15 Dicembre 2012 15:44 |
In telecomunicazioni e informatica il Dynamic Host Configuration Protocol (DHCP) (protocollo di configurazione IP dinamica) è un protocollo di rete di livello applicativo che permette ai dispositivi o terminali di una certa rete locale di ricevere dinamicamente ad ogni richiesta di accesso ad una rete IP (quale ad esempio Internet) la configurazione IP necessaria per stabilire una connessione ed operare su una rete più ampia basata su Internet Protocol cioè interoperare con tutte le altre sottoreti scambiandosi dati, purché anch'esse integrate allo stesso modo con il protocollo IP.
Generalità
In una rete basata sul protocollo IP, ogni calcolatore ha bisogno di un indirizzo IP, scelto in modo tale che appartenga all'insieme di indirizzi possibili assegnati all'intera sottorete (cioè al Net_ID) a cui è collegato e che sia univoco, cioè non ci siano altri calcolatori che stiano già utilizzando quell'indirizzo.
Il compito di assegnare manualmente gli indirizzi IP ai calcolatori comporta infatti un rilevante onere per gli amministratori di rete, soprattutto in reti di grandi dimensioni o in caso di numerosi computer che si connettono a rotazione solo a ore o giorni determinati. Inoltre gli indirizzi IPv4 (attualmente usati nella quasi totalità delle reti al mondo) con l'aumentare dei computer connessi a Internet hanno cominciato a scarseggiare, diminuendo la disponibilità di IP fissi per eventuali configurazioni statiche.
DHCP supporta questo compito automaticamente ed in maniera dinamica cioè solo quando richiesto dall'host. Viene utilizzato soprattutto in reti locali, in particolare su Ethernet. In altri contesti, funzioni simili sono svolte all'interno di PPP. Una volta ricevuta la configurazione di rete la stazione o computer della rete locale diventa a tutti gli effetti un host (ospite) della rete Internet e può intraprendere sessioni di navigazione Web e tutti gli altri servizi offerti dalla Rete stessa.
Parametri gestiti da DHCP
Il protocollo DHCP viene usato anche per assegnare al computer diversi parametri necessari per il suo corretto funzionamento sulla rete a cui è collegato. Tra i più comuni, oltre all'assegnazione dinamica dell'indirizzo IP, si possono citare:
Nel protocollo c'è comunque il supporto per assegnare tramite DHCP molti altri parametri, definiti nell'RFC 2132.
Componenti del protocollo
Il Client DHCP è un calcolatore che ha bisogno di ottenere un indirizzo IP valido per la sottorete a cui è collegato, e anche il programma che si occupa di richiedere l'indirizzo IP e configurarlo.
Il Server DHCP è il calcolatore che assegna gli indirizzi IP, e anche il processo che svolge questa funzione. Talvolta questa funzione è incorporata in un router.
Il DHCP relay è il calcolatore (o più spesso una funzione implementata in un router) che si occupa di inoltrare le richieste DHCP ad un server, qualora questo non sia sulla stessa sottorete. Questo componente è necessario solo se un server DHCP deve servire molteplici sottoreti. Deve esistere almeno un DHCP relay per ciascuna sottorete servita. Ogni relay deve essere esplicitamente configurato per inoltrare le richieste a uno o più server.
Richiesta e attribuzione dell'indirizzo
DHCP utilizza il protocollo UDP, le porte registrate sono la 67 per il server e la 68 per il client.
Quando un calcolatore vuole ottenere un indirizzo tramite DHCP, attiva il processo DHCP client. In questo momento, il calcolatore non ha un indirizzo IP valido, quindi non può usare tutte le funzionalità della rete.
La procedura descritta dal protocollo consta di diversi handshake tra client e server ovvero scambio di pacchetti ovviamente tutti incapsulati in frame di livello datalink come ad esempio Ethernet:
Se nel dominio di broadcast ci sono anche uno o più DHCP relay, questi inoltrano il pacchetto al loro server di riferimento, che può rispondere al client sempre attraverso il relay. Il relay agent comunica al server il proprio indirizzo IP sulla sottorete da cui ha ricevuto il pacchetto di DHCPDISCOVER, permettendo al server di capire da quale sottorete è arrivata la richiesta, e quindi offrire un indirizzo per la sottorete giusta. Un server DHCP che debba servire diverse sottoreti IP deve essere configurato per conoscere i parametri di ciascuna (indirizzo della rete, maschera di sottorete, indirizzo di broadcast, indirizzo del gateway).
Scadenza e rinnovo degli indirizzi
A questo punto, il client è autorizzato ad usare l'indirizzo ricevuto per un tempo limitato, detto tempo di lease. Prima della scadenza, dovrà tentare di rinnovarlo inviando un nuovo pacchetto DHCPREQUEST al server, che gli risponderà con un DHCPACK se vuole prolungare l'assegnazione dell'indirizzo. Questi sono normali pacchetti IP unicast scambiati tra due calcolatori che hanno indirizzi validi. Se il client non riesce a rinnovare l'indirizzo, tornerà allo stato iniziale cercando di farsene attribuire un altro.
Identificazione ed autenticazione dei client
Il client si identifica verso il server attraverso un campo client-id dei pacchetti DHCP. Questo campo ha normalmente come valore il mac address della scheda di rete per cui si richiede l'indirizzo, ma può anche essere configurato manualmente. Questa è l'unica forma di autenticazione disponibile per DHCP, ed è piuttosto debole, in quanto utilizza un dato che viene inviato in broadcast sulla rete locale, e quindi può essere facilmente sniffato da qualunque altro calcolatore connesso alla stessa rete. Per controllare l'accesso ad una rete esistono metodi più solidi, che però richiedono un supporto da parte degli switch a cui sono collegati gli utenti, come IEEE 802.1x.
Un server dovrebbe cercare di assegnare allo stesso client sempre lo stesso indirizzo IP su ciascuna sottorete, ma non ci sono garanzie che questo sia possibile, a meno che un indirizzo non sia associato esclusivamente ad un client.
Il server può utilizzare il campo client-id per decidere quale indirizzo assegnare al client, o quali altri parametri passargli, o anche di non rispondere per nulla alla richiesta del client.
Identificazione del server, sicurezza
Il server si identifica verso il client con il proprio indirizzo IP. Un client potrebbe quindi decidere di accettare indirizzi solo da un server già noto.
Qualunque calcolatore collegato ad una sottorete potrebbe fare da server DHCP per i calcolatori di quella sottorete, o da relay verso un server DHCP arbitrario. È quindi possibile che un calcolatore configurato male o deliberatamente per fini illeciti offra abusivamente indirizzi IP, creando malfunzionamenti alla rete e/o gravi problemi di sicurezza.
Un calcolatore che abbia ricevuto l'indirizzo IP da un server DHCP mal configurato non sarà in grado di utilizzare la rete.
Se invece il server DHCP abusivo è configurato per scopi illeciti, le conseguenze possono essere anche peggiori: esso infatti può offrire indirizzi che sa essere inutilizzati, oppure su una sottorete IP diversa da quella ufficiale, evitando così di generare conflitti con il server ufficiale, ed indicare sé stesso come default gateway. Dovrà poi ridirigere le connessioni effettuate dai client verso il gateway ufficiale utilizzando IP masquerading. A questo punto, potrà intercettare e sniffare tutto il traffico generato dai client, che potrebbero non accorgersi facilmente della differenza.
Per prevenire questi rischi, alcuni switch offrono una funzionalità detta "DHCP snooping", per cui analizzano tutti i pacchetti DHCP che li attraversano, fermando quelli che non sono originati da server autorizzati.
Visualizzare la configurazione IP
I sistemi Windows offrono un comando da digitare direttamente su shell, detto ipconfig , che permette di conoscere la configurazione IP del proprio computer. I comandi sono:
oppure
L'uscita di quest'ultimo comando fornisce configurazione IP per ogni interfaccia di rete.
Collegamenti esterni
|