Dynamic Host Configuration Protocol: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
fix
 
(293 versioni intermedie di oltre 100 utenti non mostrate)
Riga 1:
'''Dynamic Host Configuration Protocol''' (in [[acronimo]] '''DHCP''', in italiano "protocollo di configurazione IP dinamica"), in [[telecomunicazioni]] e [[informatica]], indica un protocollo applicativo (ausiliario) che permette ai dispositivi o terminali di una certa [[rete locale]] di ricevere automaticamente ad ogni richiesta di accesso, da una rete IP (quale una [[Local area network|LAN]]), la configurazione [[indirizzo IP|IP]] necessaria per stabilire una [[connessione (informatica)|connessione]] e operare su una rete più ampia basata su [[Internet Protocol]].
Il '''DHCP''', [[acronimo]] dall'[[Lingua inglese|inglese]] '''''D'''ynamic '''H'''ost '''C'''onfiguration '''P'''rotocol'' (''protocollo di configurazione dinamica degli indirizzi'') è il [[protocollo]] usato per assegnare gli indirizzi [[IP]] ai calcolatori di una [[reti di calcolatori|rete]]. DHCP sostituisce - ed è compatibile verso il basso con - l'ormai quasi obsoleto [[BOOTP]].
 
Il protocollo è implementato come servizio di rete ovvero come tipologia di [[server]]: ad esempio nei sistemi [[Unix]] e [[Unix-like]] è implementato nel [[demone (informatica)|demone]] dhcpd, in quelli basati su [[Active Directory]] di [[Microsoft]] e/o [[Windows Server]] dal servizio server dhcp.
In una rete basata sul protocollo [[IP]], ogni calcolatore ha bisogno di un [[Indirizzo IP]], scelto in modo tale che appartenga alla [[sottorete]] a cui è collegato e che sia univoco, ovvero che non ci siano altri calcolatori che stiano già usando quell'indirizzo.
 
== Generalità ==
Il compito di assegnare manualmente gli indirizzi IP ai calcolatori comporta 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 ad ore o giorni determinati. Inoltre gli indirizzi [[IPv4]] (attualmente usati nella quasi totalità delle reti al mondo) con l'aumentare dei computer connessi ad [[Internet]] hanno cominciato a scarseggiare, diminuendo la disponibilità di IP fissi.
=== Descrizione e caratteristiche del DHCP ===
Esso consente l'[[interoperabilità]] con tutte le altre sotto-reti scambiandosi dati, purché anch'esse integrate allo stesso modo con il protocollo IP. Infatti in una rete basata sul protocollo [[Internet Protocol|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 [[sistemista|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]] disponibili (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''.
=== Parametri gestiti da DHCP ===
 
DHCP supporta questo compito automaticamente e in maniera dinamica, cioè solo quando richiesto dall'host. Viene utilizzato soprattutto in [[rete locale|reti locali]], in particolare su [[Ethernet]]. In altri contesti, funzioni simili sono svolte all'interno di [[Point-to-Point Protocol|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. Infatti, un servizio DHCP è svolto anche da un semplice [[router]] di casa.
Il protocollo DHCP può essere usato anche per assegnare al computer diversi parametri necessari per il suo corretto funzionamento sulla rete a cui è collegato. Tra i più comuni si possono citare:
 
=== Componenti ===
* Maschera di [[sottorete]]
Il [[client]] DHCP è un calcolatore che ha bisogno di ottenere un indirizzo IP valido per la sottorete a cui è collegato, è anche il programma che si occupa di richiedere l'indirizzo IP e configurarlo.
* Default Gateway
 
Il [[server]] DHCP è il calcolatore che assegna gli indirizzi IP, è anche il processo che svolge questa funzione. Talvolta questa funzione è incorporata in un [[router]].
* Indirizzi dei server [[DNS]]
 
* Nome di dominio [[DNS]] di default
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.
 
=== Parametri gestiti ===
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:
* Maschera di [[sottorete]]
* Default [[gateway (informatica)|gateway]]
* Indirizzi dei server [[Domain Name System|DNS]]
* Nome di dominio [[Domain Name System|DNS]] di default
* Indirizzi dei server [[WINS]]
* Indirizzi dei server [[Network Time Protocol|NTP]]
* Indirizzo di un server [[tftp]] e nome di un file da caricare per calcolatori che caricano dalla rete l'immagine del [[sistema operativo]], ad esempio tramite l'[[Preboot Execution Environment|ambiente di esecuzione pre-''boot'']].
* Parametri di configurazione del proxy [[WPAD]]
 
Nel protocollo c'è comunque il supporto per assegnare tramite DHCP molti altri parametri, definiti nell'RFC 2132.
* Indirizzo di un server [[tftp]] e nome di un file da caricare per calcolatori che caricano dalla rete l'immagine del [[sistema operativo]].
 
== Inoltro e comunicazione dati ==
Nel protocollo c'è comunque il supporto per assegnare tramite DHCP molti altri paramentri, e anche per definire localmente nuovi paramentri, ma questa possibilità non viene ampiamente usata.
Nelle piccole reti, in cui viene gestita una sola subnet IP, i client DHCP comunicano direttamente con i server DHCP. Tuttavia, i server DHCP possono anche fornire indirizzi IP per più sottoreti. In questo caso, un client DHCP che non ha ancora acquisito un indirizzo IP non può comunicare direttamente con il server DHCP utilizzando il routing IP, perché non ha un indirizzo IP con router, non conosce l'indirizzo IP di un router e non conosce l'indirizzo IP del server DHCP.
 
Per consentire ai client DHCP su sottoreti non direttamente servite dai server DHCP di comunicare con i server DHCP, è possibile installare agenti di inoltro DHCP su queste sottoreti. Il client DHCP trasmette sul collegamento locale; il relay agent riceve la trasmissione e la trasmette a uno o più server DHCP utilizzando l'[[unicast]]. Il relay agent memorizza il proprio indirizzo IP nel campo GIADDR del pacchetto DHCP. Il server DHCP utilizza GIADDR per determinare la sottorete su cui il relay agent ha ricevuto la trasmissione e assegna un indirizzo IP su quella sottorete. Quando il server DHCP risponde al client, invia la risposta all'indirizzo GIADDR, usando ancora l'unicast. Il relay agent quindi ritrasmette la risposta sulla rete locale.
== componenti del protocollo ==
 
In questa situazione, la comunicazione tra il relay agent e il server DHCP, utilizza in genere la porta 67 UDP di origine e di destinazione.
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.
 
== Modalità di assegnazione indirizzi IP ==
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]].
A seconda dell'implementazione, il server DHCP può avere tre metodi di allocazione degli indirizzi IP:
 
=== Allocazione dinamica ===
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.
È l'allocazione automatica di indirizzi temporanei.
 
L'allocazione dinamica per un periodo dato viene chiamata 'affitto' (lease). Il client la può estendere tramite ulteriore richiesta o può rilasciare l'indirizzo affittato in qualsiasi momento se non serve più. In caso di scarsità di indirizzi, il server DHCP riutilizza indirizzi affittati col tempo scaduto
==Richiesta e attribuzione dell'indirizzo==
 
=== Allocazione automatica ===
DHCP utilizza il [[protocollo di rete|protocollo]] [[User Datagram Protocol|UDP]], le porte registrate sono la 67 per il server e la 68 per il client.
Il server DHCP assegna automaticamente un indirizzo IP a un client richiedente nell'intervallo definito dall'amministratore. Questo è come nell'allocazione dinamica, ma il server DHCP mantiene una tabella delle assegnazioni degli indirizzi IP passati, in modo che possa assegnare preferenzialmente a un client lo stesso indirizzo IP precedente.
 
=== Allocazione manuale (comunemente chiamata allocazione statica) ===
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.
Il server DHCP emette un indirizzo IP privato dipendente dal'[[indirizzo MAC]] (''MAC address'') di ciascun client, basato su una mappatura predefinita da parte dell'amministratore. Questa funzione è denominata in vari modi : come assegnazione ''DHCP statica'' nel [[DD-WRT]], ''indirizzo fisso'' dalla documentazione dhcpd, ''prenotazione indirizzo'' da [[Netgear]], ''prenotazione DHCP'' o ''DHCP statico'' da parte di [[Cisco Systems|Cisco]] e [[Linksys]] e ''prenotazione indirizzo IP'' o ''binding indirizzo MAC/IP'' da vari altri produttori di router. Se non viene rilevata alcuna corrispondenza per l'[[indirizzo MAC]] del client, il server può facoltativamente non ricorrere all'assegnazione dinamica o automatica.
 
DHCP viene utilizzato per [[IPv4|Internet Protocol versione 4]] (IPv4), nonché per l'[[IPv6]]. Sebbene entrambe le versioni abbiano lo stesso scopo, i dettagli del protocollo per IPv4 e IPv6 differiscono sufficientemente da poter essere considerati due protocolli separati.<ref>{{cita libro |autore=Ralph Droms |autore2=Ted Lemon |anno=2003 |titolo=The DHCP Handbook |url=https://archive.org/details/dhcphandbook00drom |editore=Sams Publishing |p=[https://archive.org/details/dhcphandbook00drom/page/436 436] |ISBN=978-0672323270|lingua=en}}</ref> Per l'operazione [[IPv6]], i dispositivi possono utilizzare in alternativa l'autoconfigurazione dell'indirizzo stateless. Gli host IPv6 possono anche utilizzare l'indirizzamento locale del collegamento per ottenere operazioni limitate al collegamento di rete locale.
Esso invia quindi un pacchetto chiamato DHCPDISCOVER in [[broadcast]] sulla sottorete, con indirizzo IP sorgente messo convenzionalmente a 0.0.0.0, e destinazione 255.255.255.255. Tutti i server DHCP attivi sulla sottorete ricevono direttamente questo pacchetto, e possono rispondere (o meno) con un pacchetto di DHCPOFFER, in cui propongono un indirizzo IP al client. Questo pacchetto è indirizzato direttamente all'indirizzo di livello [[livello datalink]] del client (che non ha ancora un indirizzo IP), per cui può essere inviato solo da un server che si trovi sulla stessa sottorete.
 
== Richiesta e attribuzione dell'indirizzo ==
Se sulla sottorete ci sono anche uno o più DHCP relay, questi inoltrano il pacchetto al loro server di riferimento, che può rispondere allo stesso modo attraverso il relay. Il relay agent informa il server della sottorete da cui ha ricevuto il pacchetto di DHCPDISCOVER, permettendo al server di offrire un indirizzo per la sottorete giusta.
[[File:DHCP session.svg|thumb|right|upright=1.2|Un'immagine che mostra una sessione tipica DHCP; ogni messaggio potrebbe essere sia [[Broadcasting (informatica)|broadcast]] che [[unicast]], a seconda delle capacità del client DHCP<ref>[https://tools.ietf.org/html/rfc2131#section-4.1 RFC 2131, Section 4.1 Constructing and sending DHCP messages]</ref>]]
 
DHCP utilizza il [[protocollo di rete|protocollo]] [[User Datagram Protocol|UDP]], le porte registrate sono la 67 per il server e la 68 per il client.
Il client aspetta un certo tempo di ricevere una o più offerte, dopodiché ne seleziona una, ed invia un pacchetto di DHCPREQUEST al server che ha scelto. Questo gli conferma l'assegnazione dell'indirizzo con un pacchetto di DHCPACK.
 
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.
=== Scadenza e rinnovo degli indirizzi ===
 
La procedura descritta dal protocollo consta di diversi [[handshake]] tra client e server, ovvero scambio di pacchetti, ovviamente tutti [[imbustamento|incapsulati]] in [[data frame|frame]] di [[livello datalink]], come [[Ethernet]]:
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 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.
* In primis, il client invia un pacchetto chiamato DHCPDISCOVER in [[Broadcasting (informatica)|broadcast]], con indirizzo IP sorgente messo convenzionalmente a 0.0.0.0, e destinazione 255.255.255.255 ([[indirizzo di broadcast]]).
* Il pacchetto è ricevuto da tutti gli host presenti nello stesso [[dominio di broadcast]], e quindi da eventuali server DHCP presenti, i quali possono rispondere (o meno) con un pacchetto di DHCPOFFER in cui propongono un indirizzo IP e gli altri parametri di configurazione al client. Questo pacchetto di ritorno è indirizzato all'indirizzo di [[livello datalink]] del client (al suo MAC address - non ha ancora un indirizzo IP) ovvero in [[unicast]].
 
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).
=== Identificazione ed autenticazione dei client ===
 
* Il client aspetta per un certo tempo di ricevere una o più offerte, dopodiché ne seleziona una, e invia un pacchetto di DHCPREQUEST (o DHCPACCEPT) in broadcast, indicando all'interno del pacchetto, con il campo "server identifier", quale server ha selezionato. Anche questo pacchetto raggiunge tutti i server DHCP presenti sulla rete (direttamente o tramite un relay).
Il client si identifica verso il server attraverso un campo client-id dei pacchetti DHCP. Questo campo ha normalmente come valore il [[indirizzo MAC|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 sottorete, e quindi può essere facilmente [[sniffing|sniffato]] da qualunque altro calcolatore connesso alla sottorete. 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]].
 
* Il server che è stato selezionato conferma l'assegnazione dell'indirizzo con un pacchetto di DHCPACK (nuovamente indirizzato in unicast all'indirizzo di livello datalink del client, possibilmente attraverso un relay); gli altri server vengono automaticamente informati che la loro offerta non è stata scelta dal client, e che sulla sottorete è presente un altro server DHCP.
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.
 
=== Scadenza e rinnovo degli indirizzi ===
A questo punto, il client è autorizzato a 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 e autenticazione dei client ===
Il client si identifica verso il server attraverso un campo client-id dei pacchetti DHCP. Questo campo ha normalmente come valore l'[[indirizzo MAC]] 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 trovato da qualunque altro calcolatore connesso alla stessa rete. Per controllare l'accesso a 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 a 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.
 
La sicurezza, in termini di accesso ad una [[Rete di computer|rete]], non è assicurata da indirizzi IP statici ma dall'implementazione di policy di [[autenticazione]] sia lato [[Domain controller|dominio]] che, eventualmente, [[firewall]]: l'utilizzo di indirizzi dinamici non ha alcun riflesso sulla sicurezza essendo un servizio base che facilita enormemente l'aggiunta di risorse client non dovendo ricorrere ogni volta a configurazione specialistica fosse pure solo l'inserimento dei parametri di connessione fisica alla rete. Come detto la connessione logica deve essere gestita attraverso le autorizzazioni di autenticazione.
=== Identificazione del server, sicurezza ===
 
A parte i client nel senso di utenti vi sono invece servizi e risorse che tipicamente devono essere indirizzati staticamente: stampanti, router, server, sistemi di registrazione o sorveglianza, ecc.
 
=== Identificazione del server ===
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 ada 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 maliziosamentedeliberatamente 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, e 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 [[sniffing|sniffare]] tutto il traffico generato dai client, che potrebbero non accorgersi facilmente della differenza.
Se invece il server DHCP abusivo è configurato in modo malizioso, 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 se 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 [[sniffing|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.
 
== Visualizzazione della configurazione IP ==
I sistemi Windows offrono un comando da digitare direttamente da [[Shell (informatica)|shell]], detto ''ipconfig (Interface configuration),'' che permette di conoscere la configurazione IP del proprio computer. Il comando ''ipconfig'' permette di avere numerose informazioni sulla configurazione e sullo stato dell'interfaccia di rete. Il comando:
* ipconfig /all
permette di visualizzare tutte le interfacce di rete presenti su un computer, e fornisce informazioni più dettagliate rispetto al precedente comando.
 
I sistemi [[Unix]] e [[Unix-like]] come LINUX offrono il comando [[ifconfig]] da digitare da [[Shell (informatica)|shell]] che permette di conoscere la configurazione IP del proprio computer.
 
== Aspetti dibattuti ==
=== Affidabilità delle comunicazioni ===
Il DHCP garantisce l'affidabilità in diversi modi: rinnovo periodico, rebinding<ref name="Nome BOOTPS">Droms, Ralph (March 1997).[rfc:2131 DHCP Options and BOOTP Vendor Extensions.] [[Internet Engineering Task Force|IETF.]] RFC 2131. Retrieved September 9, 2014.</ref> e failover. Ai client DHCP vengono assegnati leasing che durano per un certo periodo di tempo. I client iniziano a provare di rinnovare il leasing una volta che la metà dell'intervallo di lease è scaduto.<ref name="Nome BOOTPS"/> Lo fanno inviando un messaggio DHCPREQUEST in unicast al server DHCP che ha concesso il leasing originale. Se il server è inattivo o irraggiungibile,<ref name="Nome BOOTPS"/> non risponderà al DHCPREQUEST. Tuttavia, in questo caso il client ripete il DHCPREQUEST di volta in volta, quindi se il server DHCP viene ripristinato o diventa nuovamente raggiungibile, il client DHCP riuscirà a contattarlo e rinnovare il contratto di locazione.
 
Se il server DHCP è irraggiungibile per un lungo periodo di tempo,<ref name="Nome BOOTPS"/> il client DHCP tenterà di rinnovare l'IP trasmettendo il suo DHCPREQUEST in broadcast piuttosto che in unicast. Una volta trasmesso, il messaggio DHCPREQUEST raggiungerà tutti i server DHCP disponibili: se qualche altro server DHCP è in grado di rinnovare il leasing, lo farà in questo momento.
 
Affinché il rebinding funzioni, quando il client contatta con successo un server DHCP di backup, quel server deve disporre di informazioni accurate sull'associazione del client. Mantenere informazioni vincolanti precise tra due server è un problema complicato; se entrambi i server sono in grado di aggiornare lo stesso database di lease, deve esistere un meccanismo per evitare conflitti tra gli aggiornamenti sui server indipendenti. Una proposta per l'implementazione di server DHCP [[Tolleranza ai guasti|fault-tolerant]] è stata inviata alla Internet Engineering Task Force, ma mai formalizzata.<ref>Droms, Ralph; Kinnear, Kim; Stapp, Mark; Volz, Bernie; Gonczi, Steve; Rabil, Greg; Dooley, Michael; Kapur, Arun (March 2003).[https://tools.ietf.org/html/draft-ietf-dhc-failover-12 DHCP Failover Protocol.] [[Internet Engineering Task Force|IETF.]] I-D draft-ietf-dhc-failover-12. Retrieved May 09, 2010.</ref>
 
Se il rebinding fallisce, il lease alla fine scadrà. Quando il lease scade, il client deve smettere di utilizzare l'inidirizzo IP a esso concesso nel suo leasing.<ref name="Nome BOOTPS"/> A quel punto riavvierà il processo DHCP dall'inizio trasmettendo un messaggio DHCPDISCOVER. Dal momento che il leasing è scaduto, accetterà qualsiasi indirizzo IP offerto. Una volta che ha un nuovo indirizzo (presumibilmente da un server DHCP diverso) sarà di nuovo in grado di utilizzare la rete. Tuttavia, poiché il suo indirizzo IP è cambiato, tutte le connessioni in corso verranno interrotte.
 
== Sicurezza informatica ==
Il DHCP base non include alcun meccanismo per l'autenticazione.<ref name="Nome AUTENTICAZIONE">Michael Patrick (January 2001).[https://tools.ietf.org/html/rfc3046#section-7 "RFC 3046-DHCP Relay Agent Information Option".] Network Working Group.</ref> Per questo motivo, è vulnerabile a vari attacchi. Questi attacchi si dividono in tre categorie principali:
*I server DHCP non autorizzati forniscono informazioni false ai client.<ref name="Nome RFC2131">Ralph Droms (March 1997).[https://tools.ietf.org/html/rfc2131#section-7 "RFC 2131-Dynamic Host Configuration Protocol".] Network Working Group.</ref>
*I Client non autorizzati che hanno accesso alle risorse.<ref name="Nome RFC2131" />
*Gli attacchi di esaurimento delle risorse da client DHCP dannosi.<ref name="Nome RFC2131" />
Poiché il client non ha modo di convalidare l'identità di un server DHCP, i server DHCP non autorizzati (comunemente chiamati "rogue DHCP") possono operare in rete, fornendo informazioni non corrette ai client DHCP.<ref name="Nome Embedded">Timothy Stapko (2011).[https://books.google.it/books?id=Mly55VntuYMC&pg=PA39&redir_esc=y#v=onepage&q&f=false Pratical Embedded Security:Building Secure Rescource-Constrained Systems]. Newnes. p.39. ISBN 978-0-08-055131-9.</ref> Ciò può servire sia come attacco denial-of-service che impedisce al client di accedere alla connettività di rete,<ref>Derrick Rountree (2013).[https://books.google.it/books?id=NFzou_d4MGUC&pg=SA2-PA13&redir_esc=y#v=onepage&q&f=false Windows 2012 Server Network Security: Securing Your Windows Network Systems and Infrastructure]. Newnes. p.22 ISBN 978-1-59749-965-1.</ref> che come [[attacco man in the middle|attacco man-in-the-middle]].<ref> Timothy Rooney (2010).[https://books.google.it/books?id=QgRDxkuI1MkC&pg=PA180&redir_esc=y#v=onepage&q&f=false Introduction to IP Address Management]. John Wiley & Sons. p. 180. ISBN 9781118073810</ref>Poiché il server DHCP fornisce il client DHCP con indirizzi IP del server, come l'indirizzo IP di uno o più server DNS,<ref name="Nome RFC2131" /> un attaccante può convincere un client DHCP a eseguire le proprie ricerche DNS tramite il proprio server DNS e può inoltre fornire le proprie risposte alle query DNS dal client.<ref name='Nome TDSS'>Sergey Golovanov (Kaspersky Labs) (June 2011).[https://securelist.com/tdss-loader-now-got-legs/30844/ "TDSS loader now got"legs""].</ref><ref>Akash K Sunny (October 2015).[https://greyhatsspeak.blogspot.it/2015/11/dhcp-protocol-and-its-vulnerabilities.html "DHCP protocol and its vulnerabilities"].</ref> Ciò a sua volta consente all'attaccante di reindirizzare il traffico di rete attraverso se stesso, consentendogli di intercettare le connessioni tra il client e i server di rete che contatta, oppure semplicemente sostituire i server di rete con i propri.<ref name="Nome TDSS" />
 
Poiché il server DHCP non ha un meccanismo protetto per l'autenticazione del client, i client possono ottenere accesso non autorizzato agli indirizzi IP presentando credenziali, come gli identificatori client, che appartengono ad altri client DHCP.<ref name="Nome Embedded" />Ciò consente inoltre ai client DHCP di esaurire l'archivio di indirizzi IP del server DHCP presentando nuove credenziali ogni volta che esso richiede un indirizzo, il client può consumare tutti gli indirizzi IP disponibili su un determinato collegamento di rete, impedendo che altri client DHCP ottengano il servizio.<ref name="Nome Embedded" /> DHCP fornisce alcuni meccanismi per mitigare questi problemi. L'estensione del protocollo Relay Agent Information Option (RFC 3046, solitamente indicato nell'industria attraverso il numero effettivo come Option 82<ref> Francisco J. Hens; José M. Caballero (2008).[https://books.google.it/books?id=aS1ZngveBIkC&pg=PA239&redir_esc=y#v=onepage&q&f=false Triple Play: Building the converged network for IP,VoIP and IPTV] John Wiley & Sons. p. 239.ISBN 978-0-470-75439-9</ref><ref> David H. Ramirez (2008).[https://books.google.it/books?id=70tr_hSDULwC&pg=PA55&redir_esc=y#v=onepage&q&f=false IPTV Security: Protecting High-Value Digital Contents]. John Wiley & Sons. p. 55.ISBN 978-0-470-72719-5</ref>) consente agli operatori di rete di allegare i tag ai messaggi DHCP in quanto questi messaggi arrivano sulla rete di fiducia dell'operatore di rete. Questo tag viene quindi utilizzato come token di autorizzazione per controllare l'accesso del client alle risorse di rete. Dato che il client non ha accesso alla rete del relay agent, la mancanza di autenticazione non impedisce all'operatore del server DHCP a fare affidamento sul token di autenticazione.<ref name="Nome AUTENTICAZIONE" /> Un'altra estensione, Authentication for DHCP Messages (RFC 3118), fornisce un meccanismo per l'autenticazione dei messaggi DHCP. Sfortunatamente RFC 3118 non ha visto (a partire dal 2002) un’adozione diffusa a causa dei problemi di gestione delle chiavi per un gran numero di client DHCP.<ref>Ted Lemon (April 2002).[https://www.ietf.org/mail-archive/web/dhcwg/current/msg00876.html "Implementation of RFC3118"]</ref>
 
Un libro del 2007 sulle tecnologie DSL ha rilevato che "sono state individuate numerose vulnerabilità di sicurezza contro le misure di sicurezza proposte da RFC 3118. Questo fatto, combinato con l'introduzione di [[IEEE 802.1x|802.1x]], ha rallentato la distribuzione e il tasso di DHCP autenticati e non è mai stato ampiamente diffuso ".<ref>Philip Golden; Hervé Dedieu; Krista S. Jacobsen (2007).[https://books.google.it/books?id=Jjkd74jY47oC&pg=PA484&redir_esc=y#v=onepage&q&f=false Implementation and Applications of DSL Technology] Taylor & Francis. p. 484.ISBN 978-1-4200-1307-8</ref> Un libro del 2010 rileva che "ci sono state pochissime implementazioni di autenticazione DHCP. I problemi di gestione delle chiavi e dei ritardi di elaborazione sono stati ritenuti un prezzo troppo alto da pagare per benefici percepiti".<ref>Timothy Rooney (2010).[https://books.google.it/books?id=QgRDxkuI1MkC&pg=PA181&redir_esc=y#v=onepage&q&f=false Introduction to IP Address Management] John Wiley & Sons. pp. 181–182.ISBN 978-1-118-07380-3</ref>
Delle proposte architettoniche più recenti (2008) implicano l'autenticazione delle richieste DHCP usando 802.1x o [[Protocol for Carrying Authentication for Network Access|PANA]] (i quali trasportano l'[[Extensible Authentication Protocol|EAP]]).<ref>Rebecca Copeland (2008).[https://books.google.it/books?id=ruWv8RGkBGgC&pg=PA142&redir_esc=y#v=onepage&q&f=false Converging NGN Wireline and Mobile 3G Networks with IMS] Taylor & Francis. pp. 142–143.ISBN 978-1-4200-1378-8</ref> Una proposta di IETF è stata fatta per includere EAP in DHCP stesso, il cosiddetto EAPoDHCP;<ref>Ramjee Prasad; Albena Mihovska (2009).[https://books.google.it/books?id=w9bEwBwd33MC&pg=PA339&redir_esc=y#v=onepage&q&f=false New Horizons in Mobile and Wireless Communications:Networks, services, and applications.] 2. Artech House. p. 339. ISBN 978-1-60783-970-5</ref> questo non sembra aver superato il livello di IETF, l’ultimo del quale risale al 2010.<ref>[https://web.archive.org/web/20150403091552/http://tools.ietf.org/search/draft-pruss-dhcp-auth-dsl-07 "Archived copy"] Archived from[https://tools.ietf.org/search/draft-pruss-dhcp-auth-dsl-07 the original] on 2015-04-03. Retrieved 2013-12-12.</ref>
 
== Note ==
<references />
 
== Bibliografia ==
;Documenti standard IETF
* RFC 2131 - Dynamic Host Configuration Protocol
* RFC 1534 - Interoperation Between DHCP and BOOTP
* RFC 2132 - DHCP Options and BOOTP Vendor Extensions
* RFC 3046 - DHCP Relay Agent Information Option
* RFC 3118 - Authentication for DHCP Messages
 
== Voci correlate ==
<!-- *[[dhcpd]] - Internet Software Consortium DHCP Server
*[[dhclient]] - Dynamic Host Configuration Protocol Client -->
* [[Bootstrap Protocol]] ([[Bootstrap Protocol|BOOTP]])
* [[DHCP snooping]]
* [[Network address translation]]
 
==Voci correlateAltri progetti ==
{{interprogetto|preposizione=sul}}
*[[dhcpd]] - Internet Software Consortium DHCP Server
*[[dhclient]] - Dynamic Host Configuration Protocol Client
*[[BOOTP]]
 
== Collegamenti esterni ==
* {{FOLDOC}}
*RFC 2131 - Dynamic Host Configuration Protocol
* [https://web.archive.org/web/20050102090919/http://www.isc.org/sw/dhcp/ Sito] del server DHCP prodotto dall'Internet Systems Consortium
*RFC 1534 - Interoperation Between DHCP and BOOTP
*RFC 2132 - DHCP Options and BOOTP Vendor Extensions
*[http://www.isc.org/sw/dhcp sito] del server DHCP prodotto dall'Internet Software Consortium
 
{{IPstack}}
[[Categoria:Protocolli di rete]]
{{Controllo di autorità}}
[[Categoria:Acronimi]]
{{Portale|Telematica|informatica}}
 
[[Categoria:Standard Internet]]
[[cs:DHCP]]
[[Categoria:Protocolli livello applicazione]]
[[da:DHCP]]
[[de:Dynamic Host Configuration Protocol]]
[[el:DHCP]]
[[en:Dynamic Host Configuration Protocol]]
[[es:DHCP]]
[[et:Dünaamiline hostikonfiguratsiooni protokoll]]
[[fi:DHCP]]
[[fr:Dynamic Host Configuration Protocol]]
[[he:Dynamic Host Configuration Protocol]]
[[hu:DHCP]]
[[id:DHCP]]
[[ja:Dynamic Host Configuration Protocol]]
[[nl:Dynamic Host Configuration Protocol]]
[[no:DHCP]]
[[pl:DHCP]]
[[pt:DHCP]]
[[ru:DHCP]]
[[sl:DHCP]]
[[sv:DHCP]]
[[th:Dynamic Host Configuration Protocol]]
[[tr:DHCP]]
[[zh:DHCP]]