Servizio DHCP
Assegnazione degli indirizzi IP (broadcasting)
L’assegnazione avviene attraverso l’utilizzo delle tecniche broadcasting e nell’impiego di indirizzi IP “speciali”. I protocolli BOOTP (BOOTstrap Protocol) e DHCP (Dynamic Host Configuration Protocol) ne sono un esempio.
In realtà una macchina ha sempre un indirizzo IP, potrebbe essere 0.0.0.0 (indirizzo nullo o non assegnato) oppure a.b.c.d, dove a, b, c e d sono numeri da 0 a 255.
L’assegnazione nel tempo ha subito delle evoluzioni:
RARP
Reverse Address Resolution Protocol (RARP) è un protocollo usato per risalire all'indirizzo IP conoscendo l'indirizzo fisico (indirizzo MAC)- è stato reso obsoleto da BOOTP.
BOOTP
Il Bootstrap Protocol (BOOTP) è un protocollo di rete UDP usato da un client per ottenere il proprio indirizzo IP in maniera automatica. Opera di solito nel processo di avvio dei computer o del sistema operativo. Il server BOOTP assegna l'indirizzo IP da una lista di indirizzi ad ogni client con un termine di durata. Storicamente è stato utilizzato per le workstation senza disco di tipo UNIX.
DHCP
È un protocollo client/server trasportato da UDP su reti LAN, o PPP su collegamento WAN. È utilizzato per assegnare in modo automatico gli indirizzi IP e altri valori di configurazione agli host di una rete TCP/IP, evitando di doverli impostare manualmente per ogni singolo host della rete.
Dynamic Host Configuration Protocol, RFC 2131. La maggior parte di server DHCP offrono anche il supporto per il protocollo BOOTP. Con la riapparizione di PC stand-alone senza disco, è ritornato di nuovo interessante BOOTP.
Il DHCP (come il BOOTP) opera sulla portaUDP 67 (server) e 68 (client)
DHCP su LAN opera a livello di dominio di broadcast: un client DHCP agisce durante la fase di bootstrap del sistema operativo di un host, richiedendo la propria configurazione in broadcast, dato che ancora l'host non possiede un indirizzo IP.
L’utilizzo di UDP per la comunicazione è necessario in quanto supporta il broadcast.
UDP, però, NON è un protocollo affidabile, quindi il controllo della comunicazione DEVE essere affidato al livello applicazione.
Con DHCP nasce il concetto di lease (“prestito”) dell’indirizzo IP a un host, per un periodo limitato nel tempo.
Il compito di assegnare manualmente gli indirizzi IP a tutti gli host di una rete comporta un rilevante onere per gli amministratori di rete, soprattutto in reti di grandi dimensioni o in caso di numerosi host che si connettono.
L'amministratore ha il compito di impostare adeguatamente la parte server di DHCP, in modo che la distribuzione degli indirizzi sia coerente con il piano di indirizzamento della rete TCP/IP.
In ambito geografico il DHCP previene lo spreco degli indirizzi IP, potendo distribuire solo gli indirizzi IP per gli host effettivamente connessi ad un ISP (Internet Service Provider).
Gli indirizzi ottenuti dai client in questo modo sono i cosiddetti indirizzi IP dinamici.
Un server DHCP deve essere presente all’interno della sottorete (nel dominio di broadcast) per rispondere alla richiesta.
Se così non fosse, all’interno della sottorete si incarica un host su cui opera la parte DHCP Relay del protocollo, che ritrasmettere su un’altra sottorete la richiesta del client e di riportare sulla sottorete del client le risposte del server.
Oltre all'indirizzo IP, DHCP consente di impostare automaticamente quasi tutti i parametri fondamentali TCP/IP per un host, ovvero subnet mask, gateway di default, indirizzi di server DNS e altro ancora.
Iparametri di configurazione fondamentali offerti da DHCP a un client sono:
- IP address: l'indirizzo IP che dovrà utilizzare il client nella rete TCP/IP
- Subnet Mask: la maschera di sottorete utilizzata per identificare la subnet di appartenenza del client
- Default Gateway IP address: l'indirizzo IP del router di default per il client, tramite cui esso può inviare/ricevere pacchetti IP a/da altre reti (per esempio Internet)
- DNS IP address: indirizzo IP di uno o più host che ospitano un server DNS (normalmente si configurano due indirizzi IP di server DNS)
Inoltre un server DHCP può inviare molte altre informazioni di configurazione ai client, le cosidette option, come specificato in RFC 2132.
D.O.R.A.
Per un host generico, la modalità di assegnazione standard è quella dinamica: in base a criteri impostati sul DHCP server, il client ottiene un indirizzo IP dall'ambito, coerente e valido per un determinato periodo di tempo denominato lease (alla scadenza del quale potrebbe ricevere un diverso indirizzo IP, ma altrettanto valido).
Il protocollo utilizza 4 pacchetti per l’assegnazione dell’indirizzo IP attraverso un handshake simmetrico a 4 vie detto DORA (Discovery, Offer, Request, Acknowledgement):
- DHCP DISCOVER: il client cerca un server (in broadcast) e chiede la configurazione. Es: Il client A inizia l'handshake DHCP presentandosi con un indirizzo IP convenzionale (0.0.0.0, This host on this network), dato che non possiede (ancora) un indirizzo IP valido inviando un pacchetto DHCPDISCOVER, che viene inoltrato in MAC broadcast (MAC di destinazione in esadecimale ff:ff:ff:ff:ff:ff) e IP limited broadcast (255.255.255.255) sulla rete fisica, il client genera anche un ID di sessione.
- DHCP OFFER: Se esiste un server DHCP esso offre una configurazione (in broadcast) al client. Es: Il server DHCP crea un pacchetto DHCPOFFER indicando il proprio IP sulla rete fisica ed un indirizzo IP valido per quella subnet (es. 192.168.0.10) preso da un database locale e risponde in MAC broadcast e IP broadcast sulla rete fisica.
- DHCP REQUEST: il client accetta la configurazione (in broadcast) di un server. Es. Il Client accetta la configurazione ed invia il DHCPREQUEST che viene inoltrato in MAC broadcast (MAC di destinazione in esadecimale ff:ff:ff:ff:ff:ff) e IP limited broadcast (255.255.255.255) sulla rete fisica.
- DHCP ACK: il server conferma i dati (in broadcast) e chiude la sessione (per sessione non si intende la connessione del protocollo TCP in quanto stiamo usando l’UDP). Es. Il server, ricevuto il DHCPREQUEST controlla i dati ed invia DHCPACK.
Lo schema descritto risolveanche la situazione di più DHCP server operanti nella stessa rete fisica, che ricevono la stessa richiesta da un client.
Le richieste contemporanee di più client allo stesso DHCP server sulla stessa rete fisica, invece, sono risolte da un id di sessione creato dal client all'inizio della fase (DHCPDISCOVER) e ricopiato in tutti i pacchetti fino al messaggio finale (DHCPACK).
Mandare tutti i messaggi in broadcast visto che sia il server che il client sono “identificati” sembra eccessivo, ma non lo è:
- Il server NON può rispondere in modo diretto indirizzando la macchina con il suo reale indirizzo IP (in quanto non è ancora confermato che abbia quell’indirizzo IP), ma utilizza come destination address l’indirizzo speciale 255.255.255.255. Inoltre se il server ed il client hanno IP di due sottoreti diverse il pacchetto uscirebbe dalla rete.
- Se il server utilizzasse l’indirizzo IP del client, nel momento in cui il messaggio da trasmettere passa alla scheda di rete, questa cercherebbe di tradurre l’indirizzo IP nel corrispondente indirizzo hardware (MAC address) utilizzando l’Address Resolution Protocol. Tuttavia, il client, non avendo ancora ricevuto la risposta, non riconoscerebbe il suo indirizzo IP e non sarebbe in grado di rispondere alla richiesta dell’ARP. (Il protocollo ARP converte un indirizzo MAC in un indirizzo IP)
- i messaggi di risposta del server anche se sembrano broadcast sono in realtà unicast (a livello applicazione) in quanto c’è un ID di sessione che li rende unicast.
Pool di indirizzi
La distribuzione degli indirizzi IP deve essere definita su un ambito, ovvero su un gruppo ben preciso: l'ambito (pool) è l'insieme di indirizzi IP da cui DHCP sceglie gli indirizzi da distribuire.
Alcuni vantaggi dell’assegnazione dinamica degli indirizzi
- Automazione: assegnazione dell’indirizzo IP al client automatica.
- Gestione centralizzata: l’amministratore può analizzare il database del DHCP Server per conoscere gli indirizzi del pool assegnati (e a quali host sono stati assegnati), può effettuare operazioni di aggiornamento su address pool, tempo di lease e altro, sempre lavorando su una sola macchina, il server.
- Condivisione e riutilizzo degli indirizzi: gli host di una rete non sono sempre connessi tutti insieme, quindi la rete può supportare un numero di host superiore al numero di indirizzi disponibili (condivisione); nel momento in cui un host non è più connesso alla rete il suo indirizzo IP torna nel pool a disposizione di altri client (riutilizzo).
- Portabilità: non essendoci un assegnamento predefinito host-indirizzoIP, qualunque client che si connetta alla rete può richiedere un indirizzo, supportando così la mobilità degli host.
- Assenza di conflitti: essendo possibile l’assegnazione solo tramite il pool di indirizzi a disposizione del DHCP Server, si evitano conflitti sugli indirizzi IP.
Lease length policy
Uno dei compiti più delicati dell’amministratore è impostare la durata del lease (lease length policy) ossia dopo quanto tempo l’indirizzo assegnato a un host ritorna nel pool. Il periodo ottimale dipende dal tipo di rete e dalle necessità dell’host, in generale:
- periodo lungo, offre agli host una certa stabilità (utile in caso si attendano risposte dalla rete, che farà riferimento all’indirizzo indicato nella richiesta)
- periodo breve, risolve il problema del mantenere assegnato un indirizzo a un computer non più in rete. Costringe, però, un host attivo a richiedere continuamente il suo rinnovo. Appena “libero”, l’indirizzo torna a disposizione degli altri host e, quindi nel pool.
Static DHCP - DHCP reservation
Per quegli host che invece necessitano di indirizzi IP permanenti (es., perché a loro volta server di servizi che devono sempre essere identificabili in rete con lo stesso indirizzo), l'assegnazione dell'indirizzo IP può avvenire tramite un IP manuale o un IP assegnato staticamente dal(Static) DHCP. Il funzionamento prevede di assegnare ad un host con un determinato MAC sempre lo stesso IP.
ES. la stampante richiede in broadcast tramite il protocollo DHCP l’indirizzo IP ed il server restituisce sempre lo stesso indirizzo IP.
Inoltre non è possibile dare lo stesso indirizzo IP a due MAC diversi (per esempio il portatile che è connesso per il 50% del tempo in Wi-Fi e l’altro 50% via cavo).
Configurazione del DHCP
Router Cisco
Server in Packet Tracer
Demone DHCP in Linux
In linux, come in tutti gli altri servizi, si usa un demone. si chiama dhcpd.
Arrestare il servizio /etc/init.d/dhcpd stop
Modificare dhcpd.conf
Avviare il servizio /etc/init.d/dhcpd start
Server DHCP Windows
La gestione di un servizio server DHCP per un sistema operativo server Windows avviene attivando il servizio DHCP server sul sistema (installazione del ruolo DHCP). Si avvia quindi Server Manager. Si seleziona Ruoli/Aggiungi ruoli/Ruoli server, dopodiché si spunta il ruolo DHCP.Ora si può passare alla configurazione del servizio DHCP avviando l’applicazione di configurazione per il DHCP (MMC for DHCP).
La prima configurazione riguarda la definizione di un ambito di distribuzione degli indirizzi agli host (client DHCP). Dalla voce IPv4 del’Interfaccia di configurazione si avvia la procedura guidata Nuovo ambito. Una serie di schede consentiranno di fornire
un nome all'ambito, l'intervallo dell'ambito, la durata del lease per l'ambito, eventuali esclusioni dall'ambito e le opzioni base di configurazione: gateway predefinito, il nome di dominio e l'indirizzo IP del/dei server DNS. Ora il servizio DHCP è attivo e pronto a distribuire il nostro pool, in questo caso di 11 indirizzi IP.
Una seconda configurazione potrebbe riguardare una prenotazione all'interno dell'ambito definito (Quindi parliamo di Static DHCP). In questo caso si agisce sulla voce Prenotazione dell'ambito e si aggiunge una nuova prenotazione in base all'indirizzo MAC (ID univoco del PC) dell'host da prenotare. E quindi il pc specifico con MAC uguale a 00:21:70:c7:17:db riceverà sempre l’IP 110.
Affinché un host Windows abbia attivato il client DHCP è sufficiente che venga impostata la configurazione di Protocollo Internet versione 4 (TCP/IPv4) sulle voci Ottieni automaticamente un indirizzo IP Ottieni indirizzo server DNS automaticamente agendo sulle impostazioni della scheda di rete che si affaccia sulla LAN.
Server di ridondanza e pool di subnet diverse
Se si prevede un server di ridondanza su una sottoreti diversi è da prevedere l’impiego di DHCP Relay Agent, in questo caso il pool di indirizzi di backup è minore(il 25%) rispetto a quello del server primario(75%).ogni server ha due pool, il primo ha la funzione primaria e appartiene alla stessa rete, il secondo ha funzione secondaria(di backup) ed è una sottorete dell’altro server.
Inoltre il server può assegnare a seconda del pacchetto ricevuto un IP di una sottorete o un IP di un’altra sottorete.
Relay agent e configurazione
Quando un DHCP Server è responsabile dell’indirizzamento su una subnet diversa dalla propria è necessario introdurre un relay agent (agente di ritrasmissione).
Il relay agent è una macchina che non è né client né server ma svolge il ruolo di intermediario, occupandosi di facilitare la comunicazione tra client e server attraverso più reti.
Configurazione del Relay agent in un router cisco
La non sicurezza di DHCP
Possiamo dividere i problemi di sicurezza tra quelli riguardanti il server e quelli riguardanti il client in:
- DHCP Server non autorizzati
- DHCP Client non autorizzati
APIPA
Esistono altri protocolli per l'assegnazione automatica degli indirizzi IP e delle configurazioni degli host normalmente utilizzati in caso di assenza o guasto del DHCP server. Anche se non standardizzati in documenti RFC troviamo: Zeroconf dell'IETF e APIPA (Automatic Private Internet Protocol Addressing) di Microsoft che utilizzano il range denominato dal RFC 2026 “Link Local Address” (169.254.x.y/16).
In fase di assegnazione temporanea i numeri x e y vengono elaborati secondo una logica: x è un numero generato dall’indirizzo MAC, mentre y un numero generato a partire l’ora.
Di default ogni quando si è in APIPA viene periodicamente verificata la presenza di eventuali server DHCP per avere un indirizzo IP ed evitare conflitti. In Windows si può disabilitare APIPA tramite regedit.exe
ES. Se un host è configurato per ottenere in modo automatico la configurazione IP e il server non è operativo, un PC con S.O. Windows autoconfigura la propria scheda di rete con un indirizzo APIPA nel range 169.254.0.1 – 169.254.255.254 (s.m. 255.255.0.0)
Informazioni sullo stato delle schede di rete e degli indirizzi IP da terminale
Cenni sull’IPv6
A differenza dell’IPv4 l’IPv6 può avere più di un indirizzo IP per ogni scheda di rete di cui, normalmente ne ha due:
- Link-local della sottorete (FE80::1/64-10) visibile solamente all’interno della sottorete, una sorta di IPv4 super privato.
- Global-unicast che è unico in tutto il mondo, con cui si dialoga, senza NAT o altro, con tutti gli altri IPv6 device. Ci possono essere più di un Globlal-unicast.
Altre classi importanti sono:
- 2001:db8::/32: usato per documentazione, il terzo “hextetto” è tipicamente “acad”, “beef”, “cafe”, “feed”.
FF00::/8: indirizzi
multicast
non broadcast. Di default in ogni scheda di rete vengono impostati questi indirizzi IP “ascoltatori”:FF02:: multicast a tutti le schede di rete (pc, router, stampanti, …) nella stessa sottorete
FF02:0:0:0:0:0:0:2 multicast a tutti i router
DHCPv6
Gli host IPv6 possono essere configurati DINAMICAMENTE in TRE modi:
- Stateless SLAAC (reti domestiche): non esiste il server DHCP, il router fornisce la rete (prefisso + subnet, ma manca l’interface ID), il default gateway, eventualmente indirizzo del DNS server. Non fornisce l’indirizzo IP completo, esso viene calcolato in base al MAC address.
- Stateless SLAAC+DHCPv6 (reti domestiche): come il precedente, anche in questo caso il server DHCPv6 non fornisce tutto l’indirizzo IP (ma manca l’interface ID). Però fornisce dettagli aggiuntivi (server DNS, Maximum Transmission Unit – MTU, domain-name, ...)
- Stateful DHCPv6 (reti aziendali): questo metodo è il più simile al DHCP delle reti IPv4: il router raggiunto dalla richiesta RS risponde nel RA che tutti i parametri saranno forniti da un server DHCPv6. Il server DHCPv6 in questo caso fornisce l’IPv6 completo oltre che tutto ciò c
- he viene inviato con i protocolli stateless. Inoltre viene fatta una associazione link local - ip global unicast generato dall’IPv6.
Stateless Un nuovo client invia in broadcast a tutti i router (FF02::2) una RS (Router Solicit), il router risponde con una RA (Router Advertise)L’indirizzo IP viene completato con il metodo EUI-64 (che garantisce l’univocità visto che i MAC sono univoci), ma per controllo viene lanciato un DAD (duplicate address detection). | Statefull |
---|---|
Il DHCPv6 opera sulla porta UDP547(DHCPv6 Agent, il DHCP(v4) server nella porta 67) e546(DHCPv6 Client, il DHCP(v4) client nella porta 68)
Interface-ID con metodo EUI-64
Per la generazione dell’EUI-64 si prende il MAC address lo si divide a metà e si mette in mezzo FFFE. Inoltre si inverte il bit n.7.