Home

"I'm brave but I'm chicken shit"

TCP/IP in pillole: DHCP

DHCP (Dynamic Host Configuration Protocol) è un sistema per assegnare automaticamente un indirizzo IP agli host di una rete. E’ definito nelle RFC1533, RFC1534 e RFC1541. L’ultima implementazione è del 1997, tramite RFC2131.
Si tratta di un metodo molto comodo per assegnare e gestire un pool di indirizzi, anche per reti molto piccole. Il protocollo è molto stabile e maturo e non presenta difficoltà nella configurazione e nell’amministrazione.
Il punto chiave è il server DHCP, che serve le richieste ai client e si assicura che non esistano indirizzi doppi. Solitamente questo ruolo viene ricoperto dal server di rete, dal router o dal firewall.
Oltre all’indirizzo IP e relativa subnet mask, possono essere opzionalmente serviti anche molti altri parametri; i più comuni sono: indirizzo del gateway, DNS, nome del dominio, eventuali WINS, tipo di nodo.
La configurazione prevede la creazione di un ambito, cioè di un intervallo di indirizzi IP da servire, e diverse opzioni, rappresentate dai parametri aggiuntivi.
E’ buona norma scegliere un intervallo centrale rispetto al numero di host possibili sulla sottorete, in modo da lasciare posto per gli apparati server e gateway router. Esempio: in una classica rete da 255 host, tipo 192.168.1.0, un pool corretto potrebbe essere 192.168.1.50-192.168.1.199, per un totale di 150 indirizzi assegnabili. Si lascerebbe così liberi gli IP sotto il 50 per i router/firewall e i superiori a 199 per i server e le altre risorse.
Il processo di assegnazione dell’indirizzo IP tramite DHCP si svolge in quattro fasi:

  1. Il client invia un messaggio DHCP Discover all’indirizzo broadcast 255.255.255.255, poiché non ha ancora un IP assegnato. Include anche il proprio MAC address in modo da poter ricevere risposta. Se nessuno risponde il client rimanda la richiesta tre volte, con intervalli di 9, 13 e 16 secondi, dopodiche ogni 5 minuti. I client Microsoft si autoconfigurano tramite APIPA.
  2. Un server DHCP riceve la richiesta e risponde con un messaggio DHCP Offer, contenente un indirizzo IP selezionato dal pool. Un client potrebbe ricevere più di un’offerta da più server.
  3. Il client manda un messaggio DHCP Request, sempre all’indirizzo broadcast, indicando solo l’offerta che ha accettato. Se il client ha dovuto scegliere tra diverse offerte, lo ha fatto privilegiando il server che gli ha già fornito un IP in precedenza, oppure la prima offerta ricevuta. I server che non sono stati scelti revocano la loro offerta e rilasciano l’indirizzo che avevano temporaneamente riservato. Il pacchetto DHCP Request contiene anche tutte le opzioni desiderate dal client.
  4. Il server scelto invia un messaggio DHCP Acknowledgment come conferma, ed include anche i parametri opzionali, il tempo totale di licenza (lease time) ed i tempi di rinnovo per l’IP assegnato.

Se il server non gradisce le richieste del client invia un DHCP NACK (Negative Acknowledgment), per costringere il client a ricominciare il processo da capo.
Ai client viene assegnato una licenza limitata nel tempo, per l’uso dell’indirizzo. La durata è un parametro configurabile, e di solito è qualche giorno. Il client rinnova la richiesta ad ogni riavvio, oppure al 50% del periodo. Se il server riceve la richiesta, rinnova il tempo di licenza. Se il client invece non riceve risposta dallo stesso server, ritenta al 85% del tempo. A questo punto accetta l’offerta di rinnovo anche da un altro server. Quest’ultimo tenta di rinnovare lo stesso IP, ma se non è in grado si scatena nuovamente il processo di richiesta a 4 fasi.
Tramite la configurazione del server si può decidere delle Client Reservation, basate su MAC address, che fanno sì che lo stesso host riceva sempre lo stesso indirizzo.
Nelle reti segmentate si può decidere di utilizzare più server DHCP, oppure utilizzare un DHCP Relay Agent, che è in grado di inoltrare al server DHCP di un’altra sottorete le richieste di indirizzi.
Dal lato client, una lease può essere terminata tramite il comando ipconfig /release, oppure rinnovata tramite ipconfig /renew.

Riferimenti:


Pubblicato

in

da

Commenti

7 risposte a “TCP/IP in pillole: DHCP”

  1. Avatar Gaspar

    Ti pregherei, se hai voglia, di spendere due parole sulla durata del lease e sull’opportunit� di accorciarlo o meno.

  2. Avatar maurizio

    Interessante questa cosa del Client Reservation, basate su MAC address.
    Ne avevo gi� sentito parlare, ma non mi sono mai sbattuto per capire come funziona.

    Hai qualche esempio sotto mano per dhcpd ( linux … ).

    grazie …

  3. Avatar Skop

    Grazie dell’articolo. Mi ha chiarito molte cosette che avevo dimenticato! 🙂

  4. […] Nei commenti al post precedente, Gaspar mi chiede: Ti pregherei, se hai voglia, di spendere due parole sulla durata del lease e sull�opportunit� di accorciarlo o meno. […]

  5. Avatar Dario de Judicibus

    Hey, Andrea, che fai? Mi freghi il titolo? 😉

  6. Avatar Andrea

    Dario: mi � sfuggito qualcosa?

  7. Avatar Alfredo
    Alfredo

    potrsei indicare, per favore, come vengono compilati i campi IP sorgente, IP destinazione, MAC sorgente, MAC destinazione, dal relay agent quando inoltra la richiesta al server? Thanx