Dynamic Host Configuration Protocol - DHCP

Descrizione del funzionamento del DHCP e come configurarlo.

CCNA

2/16/2023

Il DHCP è un protocollo client-server che fornisce automaticamente agli host i loro indirizzi IP e altre informazioni di configurazione come la subnet mask e il default gateway.
I client DHCP ottengono le loro informazioni di configurazione da un server DHCP, piuttosto che venire configurate manualmente.

Vediamo come funziona.
Il client invia un messaggio DHCP Discover come traffico di broadcast.
Il server risponde con un DHCP Offer, a cui il client risponde con un DHCP Request in broadcast e per ultimo, il server risponde a sua volta con un DHCP Ack.
Una volta eseguiti tutti i passaggi, il client ha sue le sue informazioni: indirizzo IP, subnet mask, default gateway ecc.
Possiamo facilmente vedere i benefici di questo protocollo: nel caso di un edificio con un numero elevato di host, si può evitare di perdere tempo e risorse nella configurazione manuale dei dispositivi e rendere il tutto veloce e automatico grazie a DHCP.
Abbiamo una configurazione delle informazioni IP centralizzata ed automatizzata, in cui è possibile aggiungere valori di configurazione tramite le opzioni di DHCP.
Abbiamo anche una gestione efficiente dei client che devono venir aggiornati frequentemente, come i computer portatili che si muovono in posti differenti all'interno della stessa rete wireless.
Un altro vantaggio è che è possibile inoltrare i messaggi DHCP usando un "DHCP relay agent", che elimina la necessità di avere un server DHCP in ogni sottorete.
Infine, ma non per ordine d'importanza, DHCP minimizza gli errori di configurazione dovuti ad una configurazione manuale, come gli errori di scrittura o il conflitto di indirizzi causato dall'uso dello stesso indirizzo IP su più di un dispositivo contemporaneamente.

Client DHCP

I desktop sono ottimi come client DHCP perché, di solito, ce ne sono molti in un ufficio.
L'uso di DHCP permette di ridurre il carico di lavoro dell'amministratore, senza questo protocollo l'admin dovrebbe configurare manualmente tutti gli indirizzi IP (pensate quanto sarebbe lunga impostare gli IP per 200 dispositivi).
I client non accettano connessioni in entrata quindi non importa se il loro indirizzo IP cambia.
I server e i dispositivi d'infrastruttura della rete come i router e gli switch, invece, non sono solitamente utilizzati come client DHCP, perché sono fondamentali per il corretto funzionamento della rete.
Il loro indirizzo IP viene configurato manualmente per assicurarsi che questo non cambi e affinché non siano dipendenti da DHCP.

Server DHCP

Ci sono due opzioni per il server DHCP: si può usare un router Cisco, oppure si può usare un server esterno.
Il primo caso viene utilizzato quando ci si trova in una rete piccola. In questo caso i costi possono essere abbassati evitando di utilizzare un server solo per il DHCP: nell'ufficio è già presente il routing per l'instradamento del traffico, quindi lo si può utilizzare anche come server DHCP (senza costi addizionali).

In questo esempio abbiamo R1 con l'IP 10.10.10.1/24 sulla sua interfaccia F0/1 con due host nella sottorete 10.10.10.0/24, i quali otterranno l'IP dal router tramite l'interfaccia che si trova nella loro sottorete (F0/1), impostando la pool di IP che verranno assegnati a questa subnet.
Dall'altra parte abbiamo un server DNS con l'IP 10.10.20.10 e vogliamo fare in modo che i PC sappiano di questo server.
Iniziamo la configurazione: per prima cosa specifichiamo il range di indirizzi IP che il DHCP non deve assegnare, questi indirizzi vengono assegnati ai dispositivi chiave dell'infrastruttura (come i router) e ad altri dispositivi in cui è importante che l'indirizzo IP non cambi (come le stampanti).
Attenzione: è consigliato usare un range di indirizzi che sia all'inizio (10.10.10.1 - 10.10.10.10) o alla fine (10.10.10.244 - 10.10.10.254) della sottorete e d'impostare subito il range di IP da escludere prima di impostare il DHCP.

R1(config)#ip dhcp exluded-address 10.10.10.1 10.10.10.10
R1(config)#ip dhcp pool 10.10.10.0_Clients
R1(dhcp-config)#network 10.10.10.0 255.255.255.0
R1(dhcp-config)#default-router 10.10.10.1
R1(dhcp-config)#dns-server 10.10.20.10

Il primo comando serve per specificare gli indirizzi da escludere.
Il secondo comando è semplicemente il nome della pool: qui possiamo scrivere quello che vogliamo.
Il terzo comando serve a specificare il range di IP da assegnare e la subnet mask.
Il quarto comando serve per dire ai client dove si trova il default gateway.
Il quinto comando serve per dire ai client dove si trova il server DNS.

Per verificare di aver impostato tutto nel modo corretto possiamo usare il comando "show ip dhcp pool".
Per vedere quali indirizzi sono stati assegnati tramite DHCP usiamo il comando "show ip dhcp binding".

Vediamo il caso in cui usiamo un server DHCP esterno.
Questa volta non andiamo ad impostare la pool di IP da assegnare su R1, ma lo impostiamo sul server perché sarà lui a distribuire i vari indirizzi IP.
Rispetto alla prima opzione però, qui abbiamo un problema: quando il PC2 viene acceso non ha ancora un indirizzo IP e quindi viene impostato come client DHCP.
Questo invia una richiesta DHCP come traffico di broadcast che attraversa lo switch, ma si blocca al router perché questi, ricordiamo, non inoltrano traffico di broadcast.
In più visto che il router non è configurato come server DHCP, lascia semplicemente cadere la richiesta.
Per risolvere il problema dobbiamo configurare il router affinché questo inoltri le richieste DHCP.
Sul router selezioniamo l'interfaccia alla quale arriveranno le richieste ed inseriamo l'IP del server:

R1(config)#interface f0/1
R1(config-if)#ip helper-address 10.10.20.10

Et voilà! Ora il router è capace di inoltrare le richieste DHCP e i PC potranno ottenere i loro IP dal server DHCP.
Ovviamente dobbiamo configurare ancora sul server DHCP la pool di indirizzi da escludere, quella degli indirizzi da assegnare e tutto il resto come abbiamo fatto prima.

Router Cisco come Client DHCP

Di solito ai router viene assegnato un indirizzo IP statico, ma si ha un'eccezione quando un ufficio è connesso ad Internet, ma non ha comprato indirizzi IP statici pubblici (perché non contiene nessun server disponibile al pubblico che richiederebbe un IP statico per le connessioni in entrata).
L'ufficio ha comunque bisogno di un un indirizzo IP pubblico per permettere agli host interni di connettersi ad Internet tramite il NAT.
In questo caso il router riceve un indirizzo IP pubblico sulla sua interfaccia esterna dall'ISP tramite DHCP.
Vediamo ora la configurazione:

R1(config)#interface f0/0
R1(config-if)#ip address dhcp
R1(config-if)#no shutdown

Per vedere l'IP "preso in prestito" e le informazioni riguardanti al server che lo ha fornito usiamo il comando "show dhcp lease".