In una rete di calcolatori, le stazioni possono comunicare solo dopo che viene assegnato loro un indirizzo IP. Ci sono due modi per configurare una stazione:
Assegnazione di un indirizzo statico. L'indirizzo viene assegnato manualmente;
Utilizzare un protocollo che consenta alla stazione di iniziare una comunicazione, pur non essendo ancora indirizzabile dalle altre stazioni della rete, che le consenta di chiedere l'assegnazione di un indirizzo temporaneo.
Il protocollo che assolve questa funzione è il Dynamic Host Configuration Protocol (DHCP).
Quando ci si trova in un locale che offre l'accesso alla rete, wireless o cablato, ed esiste un server DHCP basta configurare la stazione affinchè "ottenga automaticamente un indirizzo IP" per avere accesso alla rete. Se la stessa stazione viene spostata in un locale diverso, o in una rete diversa, ottiene un nuovo indirizzo IP per accedere alla rete.
Si supponga che la rete dell'aeroporto sia 192.168.1.0/24 e quella della scuola sia 10.0.0.0/8). Senza il DHCP si dovrebbe cercare qualcuno che conosce la rete e chiedergli se conosce un indirizzo IP disponibile e, quindi, inserirlo manualmente. Potrebbe succedere che qualcun altro abbia fatto la stessa operazione e quindi si crea un conflitto di indirizzi IP, perchè due stazioni usano lo stesso indirizzo. Il DHCP evita la duplicazione degli indirizzi.
Durante il processo di assegnazione di un indirizzo IP, il server DHCP invia un pacchetto di tipo ping per verificare la disponibilità dell'indirizzo IP prima di assegnarlo al client. Se il server DHCP non riceve risposta allora può ritenere che quell'IP non è usato da nessuno. e lo consegna al client. Se invece viene ricevuta una risposta al ping, il server DHCP, per prevenire un futuro conflitto di indirizzi, rimuove quell'indirizzo dall'insieme degli indirizzi liberi, in attesa che l'amministratore risolva il problema.
Il server DHCP usa il protocollo UDP per accettare le richieste di assegnazione di un indirizzo IP temporaneo. Il server DHCP è in ascolto sulle porte 67 e 68. Tra il client ed il server vengono scambiati alcuni pacchetti di servizio:
Il client invia un messaggio DHCP discovery in broadcast in cui specifica che desidera ottenere un indirizzo temporaneo. Il server DHCP risponde al client con un messaggio di offerta DHCP offer, contenente i parametri di configurazione. Il client manda un messaggio broadcast DHCP requet con l'identificatore della transazione iniziata dal server che ha risposto per primo. Gli altri server DHCP capiscono che il client ha ottenuto risposta da un altro server ed ignorano la richiesta. A questo punto il server DHCP invia un messaggio di conferma al client, autorizzandolo così a connettersi alla rete, oppure invia un messaggio di conferma negativa, per rifiutare l'assegnazione dell'indirizzo, ad esempio per esaurimento del blocco di indirizzi disponibili.
Quando una stazione, che non possiede un indirizzo IP, intende connettersi ad una rete, deve trasmettere un messaggio DHCPDISCOVER. Poichè la stazione non conosce la subnet in cui chiede di inseririsi, il pacchetto DHCPDISCOVER viene inviato in broadcast a tutte le sottoreti. Quindi l'IP destinazione specificato nel pacchetto è 255.255.255.255 e l'indirizzo MAC destinazione è FF-FF-FF-FF-FF-FF. Un indirizzo IP destinazione di tipo broadcast possiede tutti 1 nei campi numero di sottorete e numero di host. Inoltre la stazione non possiede un indirizzo IP, quindi l'IP sorgente specificato nel pacchetto è 0.0.0.0. Il pacchetto DHCPDISCOVER ha lo scopo di trovare un server DHCP che possa assegnare un indirizzo IP.
Quando il server DHCP riceve il pacchetto, preleva un indirizzo IP non assegnato dal suo intervallo di indirizzi disponibili
e risponde con un pacchetto broadcast di tipo DHCPOFFER alla stazione. Il pacchetto DHCPOFFER contiene anche altre informazioni:
la subnet mask, il gateway di defaul, la durata di validità dell'indirizzo IP, e l'indirizzo del domain name server (DNS).
Note: Il pacchetto DHCPOFFER è un messaggio di un protocollo di livello 3 (l'IP destinazione è 255.255.255.255)
ma contiene una trama di livello 2 di tipo unicast (l'indirizzo MAC destinazione è quello della stazione che ha chiesto di collegarsi alla sottorete.
La stazione accetta l'indirizzo proposto e invia in broadcasts un pacchetto di tipo DHCPREQUEST indicando che l'indirizzo IP proposto è accettato. La stazione potrebbe scartare l'indirizzo IP offerto e usare il pacchetto per chiedere un altro indirizzo IP. Il pacchetto DHCPREQUEST è di tipo broadcast perchè altri server DHCP potrebbero aver proposto un indirizzo IP, quindi questi vengono informati della decisione presa dalla stazione.
Quando il server DHCP Server riceve il pacchetto DHCPREQUEST dalla stazione, risponde con un pacchetto unicast DHCPACKNOWLEDGEMENT.
L'esempio che segue configura un router per assegnare indirizzi ip alle stazioni di una sottorete. Se, invece, la sottorete non dispone di un server DHCP, il router deve essere istruito per far passare il pacchetto di tipo broadcast.
Il router, oltre alla sua normale funzione di instradamento, verrà programmato per implementare il server DHCP. Nella programmazione che segue, si assegna un indirizzo IP all'interfaccia del router connessa al switch, poi si crea un "DHCP pool" denominato IPD. In questo pool sono elencati gli indirizzi IP che si possono assegnare ai client che ne fanno richiesta. Inoltre bisogna anche specificare l'indirizzo IP del router di default da comunicare al client. Nella parte finale della programmazione del servizio DHCP del router si elencano gli indirizzi che non si vogliono assegnare.
Clic sul router. Clic sulla scheda CLI
Invio.
Passare in modalità exec:
enable
Passare in modalità configurazione:
configure terminal
Specificare l'indirizzo dell'interfaccia del router collegata al switch:
interface fastEthernet 0/0
ip address 192.168.10.1 255.255.255.0
no shut
Ritornare in modalità configurazione:
exit
Identificare il pool e l'intervallo di indirizzi:
ip dhcp pool IPD
network 192.168.10.0 255.255.255.0
Specificare il router di default:
default-router 192.168.10.1
Ritornare in modalità configurazione:
exit
Specificare gli indirizzi da non assegnare:
ip dhcp excluded-address 192.168.10.1 192.168.10.10
ip dhcp excluded-address 192.168.10.12 192.168.10.14
Per configurare le stazioni a chiedere un indirizzo IP, clic su un computer ed aprire la scheda desktop. Clic sull'icona: "IP Configuration" e spuntare la casella DHCP. Attendere e verificare che la stazione ha ottenuto un indirizzo IP. Verificare la connettività inviando, in modo Simulazione, un pacchetto da un PC ad un altro.
Se il server DHCP non si trova nella stessa sottorete della stazione richiedente, è necessario configurare il router sul lato della stazione richiedente per agire come intermediario, in modo che smisti i messaggi verso la sottorete dove è presente il server DHCP. A questo scopo si deve programmare l'interfaccia che riceve i messaggi DHCP con il comando "ip helper-address <IP-address-of-DHCP-Server>".
Un router non propaga i pacchetti di tipo broadcast quindi scarterebbe i pacchetti DHCPDISCOVER. Invece con il comando "ip helper-address." il router li accetta, li racchiude in un pacchetto unicast e li invia al server DHCP. L'indirizzo IP di destinazione del pacchetto è specificato nel comando stesso.
Nonostante sia possibile configurare un router per funzionare da server DHCP di più sottoreti, in questo esempio si usa un server DHCP.
Configurare il server DHCP, assegnadogli un indirizzo IP e un pool di indirizzi.
Assegnare l'indirizzo IP al server DHCP: 192.168.1.10/24
Il router di default del server DHCP è l'indirizzo dell'interfaccia del router collegata alla sottorete del server: 192.168.1.1
Nella scheda Config del server, abilitare il servizio DHCP:
Dopo aver inserito i campi indicati nella figura, premere il pulsante Add. La riga di programmazione è visibile nella casella di riepilogo.
Creare un blocco di indirizzi da assegnare alle stazioni dell'altra sottorete:
Nella casella di riepilogo inferiore, cliccare sulla riga "serverPool" e inserire i seguenti valori:
Dopo aver inserito i campi indicati nella figura, premere il pulsante Save. La riga di programmazione è visibile nella casella di riepilogo.
Nel router, la configurazione seguente deve essere applicata alle due interfacce:
assegnare gli indirizzi IP alle interfacce del router: 10.10.0.1/24 e 192.168.1.1/24
enable conf term interface fa0/0 ip address 10.10.0.1 255.255.255.0 ip helper-address 192.168.1.10 no shutdown exit interface fa0/1 ip address 192.168.1.1 255.255.255.0 ip helper-address 192.168.1.10 no shutdown exit exit
Configurare le stazioni per ottenere automaticamente un indirizzo IP. Verificare la connettività.