Dynamic Host Configuration Protocol

protocollo di configurazione IP dinamica

Il DHCP, acronimo dall'inglese Dynamic Host Configuration Protocol (protocollo di configurazione dinamica degli indirizzi) è il protocollo usato per assegnare gli indirizzi IP ai calcolatori di una rete. DHCP sostituisce - ed è compatibile verso il basso con - l'ormai quasi obsoleto BOOTP.

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.

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.

DHCP viene utilizzato soprattutto in reti locali, in particolare su Ethernet. In altri contesti, funzioni simili sono svolte all'interno di PPP.

Parametri gestiti da DHCP

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:

  • Indirizzi dei server DNS
  • Nome di dominio DNS di default
  • Indirizzi dei server WINS
  • Indirizzi dei server NTP
  • Indirizzo di un server tftp e nome di un file da caricare per calcolatori che caricano dalla rete l'immagine del sistema operativo.

Nel protocollo c'è comunque il supporto per assegnare tramite DHCP molti altri parametri, definiti nell' RFC 2132:


RFC 1497 Vendor Extensions:

                                 Data 
  Tag     Name                  Length  Meaning                              
  ---     ----                  ------  -------                              
   0      Pad Option               0    None                                 
  255     End Option               0    None
   1      Subnet Mask              4    Subnet Mask Value                    
   2      Time Offset              4    Time Offset in                       
                                        Seconds from UTC 
   3      Router                  N×4   Router addresses                 
   4      Time Server             N×4   Timeserver addresses             
   5      Name Server             N×4   IEN-116 Server addresses         
   6      Domain Server           N×4   DNS Server addresses             
   7      Log Server              N×4   Logging Server addresses         
   8      Quotes Server           N×4   Quotes Server addresses          
   9      LPR Server              N×4   Printer Server addresses         
  10      Impress Server          N×4   Impress Server addresses         
  11      RLP Server              N×4   N RLP Server addresses             
  12      Hostname                 N    Hostname string                      
  13      Boot File Size           2    Size of boot file in 512-octet        
                                        blocks 
  14      Merit Dump File          N    Client to dump and name              
                                        the file to dump it to 
  15      Domain Name              N    The DNS ___domain name of the           
                                        client 
  16      Swap Server              4    Swap Server address                  
  17      Root Path                N    Path name for root disk              
  18      Extensions File          N    Path name for more BOOTP info        

IP Layer Parameters per Host:

  19      Forward On/Off           1    Enable/Disable IP Forwarding         
  20      SrcRte On/Off            1    Enable/Disable Non-Local Source Routing        
  21      Policy Filter           N×8   Non-Local Source Routing Policy Filters             
  22      Max DG Assembly          2    Max Datagram Reassembly Size         
  23      Default IP TTL           1    Default IP Time to Live              
  24      MTU Timeout              4    Path MTU Aging Timeout               
  25      MTU Plateau             N×2   Path MTU Plateau Table              

IP Layer Parameters per Interface:

  26      MTU Interface            2    Interface MTU Size                   
  27      MTU Subnet               1    All Subnets are Local                
  28      Broadcast Address        4    Broadcast Address                    
  29      Mask Discovery           1    Perform Mask Discovery               
  30      Mask Supplier            1    Provide Mask to Others               
  31      Router Discovery         1    Perform Router Discovery             
  32      Router Request           4    Router Solicitation Address          
  33      Static Route            N×8   Static Routing Table                 

Link Layer Parameters per Interface:

  34      Trailers                 1    Trailer Encapsulation                
  35      ARP Timeout              4    ARP Cache Timeout                    
  36      Ethernet                 1    Ethernet Encapsulation               

TCP Parameters:

  37      Default TCP TTL          1    Default TCP Time to Live             
  38      Keepalive Time           4    TCP Keepalive Interval               
  39      Keepalive Data           1    TCP Keepalive Garbage                

Application and Service Parameters:

  40      NIS Domain               N    NIS Domain Name                      
  41      NIS Servers             N×4   NIS Server Addresses                 
  42      NTP Servers             N×4   NTP Server Addresses                 
  43      Vendor Specific          N    Vendor Specific Information          
  44      NETBIOS Name Srv        N×4   NETBIOS Name Servers                 
  45      NETBIOS Dist Srv        N×4   NETBIOS Datagram Distribution        
  46      NETBIOS Node Type        1    NETBIOS Node Type                    
  47      NETBIOS Scope            N    NETBIOS Scope                        
  48      X Window Font           N×4   X Window Font Server                 
  49      X Window Manager        N×4   X Window Display Manager             
  64      NIS-Domain-Name          N    NIS+ v3 Client Domain Name           
  65      NIS-Server-Addr         N×4   NIS+ v3 Server Addresses             
  68      Home-Agent-Addrs        N×4   Mobile IP Home Agent Addresses                 
  69      SMTP-Server             N×4   Simple Mail Server Addresses         
  70      POP3-Server             N×4   Post Office Server Addresses         
  71      NNTP-Server             N×4   Network News Server Addresses        
  72      WWW-Server              N×4   WWW Server Addresses                 
  73      Finger-Server           N×4   Finger Server Addresses              
  74      IRC-Server              N×4   Chat Server Addresses                
  75      StreetTalk-Server       N×4   StreetTalk Server Addresses          
  76      STDA-Server             N×4   ST Directory Assist. Addresses       

DHCP Extensions:

  50      Address Request          4    Requested IP Address                 
  51      Address Time             4    IP Address Lease Time                
  52      Option Overload          1    Overload "sname" or "file"           
  53      DHCP Msg Type            1    DHCP Message Type                    
  54      DHCP Server Id           4    DHCP Server Identification           
  55      Parameter List           N    Parameter Request List               
  56      DHCP Message             N    DHCP Error Message                   
  57      DHCP Max Msg Size        2    DHCP Maximum Message Size            
  58      Renewal Time             4    DHCP Renewal (T1) Time               
  59      Rebinding Time           4    DHCP Rebinding (T2) Time             
  60      Class Id                 N    Vendor Class Identifier                     
  61      Client Id                N    Client Identifier                    
  66      Server-Name              N    TFTP Server Name                     
  67      Bootfile-Name            N    Boot File Name                       

Newer extensions:

  62      Netware/IP Domain        N    Netware/IP Domain Name               
  63      Netware/IP Option        N    Netware/IP sub Options               
  77      User-Class               N    User Class Information               
  78      Directory Agent          N    directory agent information          
  79      Service Scope            N    service ___location agent scope         
  80      Rapid Commit             0    Rapid Commit                         
  81      Client FQDN              N    Fully Qualified Domain Name          
  82      Relay Agent Information  N    Relay Agent Information, RFC 3046    
  83      iSNS                     N    Internet Storage Name Service        
  84      REMOVED/Unassigned                                                 
  85      NDS Servers              N    Novell Directory Services            
  86      NDS Tree Name            N    Novell Directory Services            
  87      NDS Context              N    Novell Directory Services            
  88      BCMCS Controller Domain Name list                                  
  89      BCMCS Controller IPv4 address option                               
  90      Authentication           N    Authentication                       
  91-92   REMOVED/Unassigned                                            
  93      Client System            N    Client System Architecture           
  94      Client NDI               N    Client Network Device Interface      
  95      LDAP                     N    Lightweight Directory Access Protocol
  96      REMOVED/Unassigned                                                 
  97      UUID/GUID                N    UUID/GUID-based Client Identifier    
  98      User-Auth                N    Open Group's User Authentication     
  99-111  REMOVED/Unassigned
  112     Netinfo Address          N    NetInfo Parent Server Address        
  113     Netinfo Tag              N    NetInfo Parent Server Tag            
  114     URL                      N    URL                                  
  115     REMOVED/Unassigned                                                 
  116     Auto-Config              N    DHCP Auto-Configuration              
  117     Name Service Search      N    Name Service Search                  
  118     Subnet Selection Option  4    Subnet Selection Option              
  119     Domain Search            N    DNS ___domain search list               
  120     SIP Servers DHCP Option  N    SIP Servers DHCP Option              
  121     Classless Static Route   N    Classless Static Route Option        
          Option 
  122     CCC                      N    CableLabs Client Configuration       
  123     GeoConf Option          16    GeoConf Option                       
  124     V-I Vendor Class              Vendor-Identifying Vendor Class      
  125     V-I Vendor-Specific           Vendor-Identifying Vendor-Specific   
          Information                   Information
  126-127 Removed/Unassigned                                                 
  128     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005) 
  128     Etherboot signature. 6 bytes: E4:45:74:68:00:00	
  128     DOCSIS "full security" server IP address	
  128     TFTP Server IP address (for IP Phone software load)	
  129     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  129     Kernel options. Variable length string	
  129     Call Server IP address 	
  130     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  130     Ethernet interface. Variable length string.	
  130     Discrimination string (to identify vendor)	
  131     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  131     Remote statistics server IP address 	
  132     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  132     802.1P VLAN ID 	
  133     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  133     802.1Q L2 Priority	
  134     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  134     Diffserv Code Point	
  135     PXE - undefined (vendor specific) (Tentatively Assigned - 23 June 2005)
  135     HTTP Proxy for phone-specific applications	
  136-149 Unassigned                                                         
  150     TFTP server address (Tentatively Assigned - 23 June 2005)
  150     Etherboot	
  150     GRUB configuration path name	
  151-174 Unassigned                                                         
  175     Etherboot (Tentatively Assigned - 23 June 2005)
  176     IP Telephone (Tentatively Assigned - 23 June 2005)
  177     Etherboot (Tentatively Assigned - 23 June 2005)
  177     PacketCable and CableHome (replaced by 122)	
  178-207 Unassigned                                                         
  208     pxelinux.magic (string) = F1:00:74:7E (241.0.116.126) (Tentatively
            Assigned - 23 June 2005)
  209     pxelinux.configfile (text) (Tentatively Assigned - 23 June 2005)
  210     pxelinux.pathprefix (text) (Tentatively Assigned - 23 June 2005)
  211     pxelinux.reboottime (unsigned integer 32 bits) (Tentatively Assigned
            - 23 June 2005)
  212-219 Unassigned
  220     Subnet Allocation Option (Tentatively Assigned - 23 June 2005)
  221     Virtual Subnet Selection Option	(Tentatively Assigned - 23 June 2005)
  222-223 Unassigned                                                         
  224-254 Private Use

componenti del protocollo

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.

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.

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.

Richiesta e attribuzione dell'indirizzo

DHCP utilizza il protocollo UDP, le porte registrate sono la 67 per il server e la 68 per il client.

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.

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 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.

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.

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.

Scadenza e rinnovo degli indirizzi

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.

Identificazione ed autenticazione dei client

Il client si identifica verso il server attraverso un campo client-id dei pacchetti DHCP. Questo campo ha normalmente come valore il 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 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.

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.

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.

Identificazione del server, sicurezza

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 ad 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 maliziosamente 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 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 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 sniffare tutto il traffico generato dai client, che potrebbero non accorgersi facilmente della differenza.

Voci correlate

  • dhcpd - Internet Software Consortium DHCP Server
  • dhclient - Dynamic Host Configuration Protocol Client
  • BOOTP
  • PPP

Collegamenti esterni

  • RFC 2131 - Dynamic Host Configuration Protocol
  • RFC 1534 - Interoperation Between DHCP and BOOTP
  • RFC 2132 - DHCP Options and BOOTP Vendor Extensions
  • sito del server DHCP prodotto dall'Internet Software Consortium