Inserisci Infobox

DHCP server

Protocollo, installazione, configurazione ed uso di un server DHCP (ISC)

Esempio di configurazione di un server DHCP per diverse subnet
Autore: al - Ultimo Aggiornamento: 2008-08-25 11:46:03 - Data di creazione: 2004-10-28 09:26:59
Tipo Infobox: SAMPLE - Skill: 4- ADVANCED

Segue un esempio di configurazione di un server DHCP che gestisce diverse subnet (ovviamente gli stessi principi possono essere applicati su una macchina che agisce solo per la rete a cui e' direttamente connessa).
Questo scenario si applica a situazioni in cui ad un server dhcp centrale vengono forwardate le richieste (tramite dhcp relay) da reti remote.
Dal punto di vista della configurazione del server non si presentano particolari complicazioni: nella richiesta (DHCP DISCOVER) che gli viene forwardata da un dhcp relay (puu' essere un router Cisco, un server Windows, un Linux con il dhcprelay agent o  altro) e' presente l'informazione relativa alla rete remota da cui arriva e per questa vengono usate le impostazioni definite nella subnet relativa.

Esempio di /ETC/DHCPD.CONF con gestione di due diverse reti
ddns-update-style interim;
ignore client-updates;

# Imposta le configurazioni per la rete 192.168.0.0/24, puo' essere direttamente connessa o remota (in questo caso la richiesta non arriva tramite un boradcast nella rete locale ma tramite un dhcp relay agent)
subnet 192.168.0.0 netmask 255.255.255.0 {
#Imposta Default gateway, maschera di sottorere, nome del dominio, IP del DNS server da usare, IP del server WINS
        option routers                  192.168.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name              "intranet.miodominio.it";
        option domain-name-servers      192.168.0.10;
        option netbios-name-servers     192.168.0.11;

#Imposta il range di indirizzi IP da assegnare ai client
        range dynamic-bootp 192.168.0.100 192.168.0.199;

#Definisce la durata di default e quella massima (in secondi) per questa subnet
        default-lease-time 21600;
        max-lease-time 43200;

# Si definisce una impostazione statica per alcuni host per cui si vuole mantenere la possibilita' di assegnare IP via DHCP (e non configurarli a mano sugli host stessi) senza il rischio che questo cambi. Va indicato l'indirizzo MAC delle schede di rete che usano
        host ns {
                hardware ethernet 12:34:56:A8:AB:AA;
                fixed-address 192.168.0.10;
        }
        host wins {
                hardware ethernet 00:06:5B:55:31:5F;
                fixed-address 192.168.0.11;
        }
}

# Imposta le configurazioni per un altra rete: 10.42.42.0/24. Anche questa pu?sere direttamente connessa o remota.
subnet 10.42.42.0 netmask 255.255.255.0 {
#Imposta Default gateway, maschera di sottorere, nome del dominio, IP del DNS server da usare, IP del server WINS (possono essere anche su reti remote)
        option routers                  10.42.42.0.1;
        option subnet-mask              255.255.255.0;
        option domain-name              "milano.miodominio.it";
        option domain-name-servers      192.168.0.10;
        option netbios-name-servers     192.168.0.11;

#Imposta il range di indirizzi IP da assegnare ai client
        range dynamic-bootp 10.42.42.100 10.42.42.199;

#Definisce la durata di default e quella massima (in secondi) per questa subnet. Si ipotizza che in questa rete ci siano poche macchine e che siano sempre le stesse e si preferisce che tendano a mentenere gli stessi indirizzi, anche dopo periodi prolungati di inattivita' I valori impostati sono rispettivamente di 30 e 60 giorni (alti per un dhcp)
        default-lease-time 2592000;
        max-lease-time 5184000;
}

Il protocollo DHCP
Autore: homer - Ultimo Aggiornamento: 2004-06-04 10:28:00 - Data di creazione: 2004-06-04 10:28:00
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

Il protocollo DHCP Dynamic Host Configuration Protocol fornisce un meccanismo per assegnare dinamicamente gli indirizzi IP ed i parametri di configurazione ad un host tramite TCP/IP.

Questo protocollo definito dalle RFC 1533, 1534, 1541 e 1542 è un'estensione del protocollo BOOTP. L'utilizzo del DHCP su una rete con un significativo numero di macchine ne permette una migliore e più semplice gestione, riducendo i possibili conflitti di indirizzo.
Attraverso DHCP infatti, oltre ad assegnare ad ogni macchina automaticamente un diverso indirizzo di rete e la relativa subnet mask, è possibile assegnare anche altri parametri come per esempio: l'indirizzo di broadcast, il nome del nodo e del dominio, il gateway predefinito, l'indirizzo del server di stampa, l'indirizzo del DNS ecc.
Per utilizzare questo protocollo deve essere configurata una macchina, il DHCP Server, che si fa carico di distribuire gli indirizzi e gli altri parametri di configurazione ai client che ne fanno richiesta. Il range degli indirizzi distribuibili è chiamato Scope, ed ogni configurazione è valida solo per un determinato periodo di tempo, chiamato tempo di lease, scaduto il quale il client deve richiedere nuovamente la configurazione. In sostanza il client affitta il suo indirizzo di rete per un determinato periodo di tempo.

Il processo per la configurazione di un client tramite DHCP avviene in quattro fasi:
1. Il client invia sulla rete un messaggio in broadcast (in quanto non conosce l'indirizzo del server) chiamato DHCPDISCOVER. Questo messaggio proverrà quindi da 0.0.0.0 e come destinazione avrà 255.255.255.255. Il messaggio DHCPDISCOVER contiene anche l'indirizzo MAC (univoco) della macchina che fa la richiesta.
2. Il server DHCP che riceve la richiesta invia in risposta un messaggio chiamato DHCPOFFER contenente un indirizzo selezionato dallo SCOPE e l'indirizzo MAC del client che ne ha fatto richiesta per far sì che l'offerta giunga al client corretto.
3. Il client, invia ora un messaggio DHCPREQUEST in broadcast indicando che ha accettato l'indirizzo IP offerto.  
4. Infine il server DHCP invia un messaggio DHCPACK (ACKnowledgment) che conferma al client l'assegnazione dell'indirizzo con il relativo tempo di lease ed invia anche i vari parametri opzionali.

Nel caso in cui il server è impossibilitato ad assegnare la configurazione richiesta dal client invia un messagggio di tipo DHCPNACK (Negative ACKnowledgment) il quale indica che è necessario ripetere tutti i passi per ottenere una nuova configurazione.
Esempio che è possibile trovare nei log di un DHCP server Linux:
Joker dhcpd: DHCPDISCOVER from 00:48:54:6e:b0:4d (Enigma) via eth0
La macchina Joker (DHCP Server) riceve la richiesta da Enigma (DHCP Client) con MAC Address 00:48:54:6e:b0:4d
Joker dhcpd: DHCPOFFER on 192.168.0.100 to 00:48:54:6e:b0:4d (Enigma) via eth0
Joker offre a Enigma, identificato tramite il MAC 00:48:54:6e:b0:4d, l'indirizzo 192.168.0.100
Joker dhcpd: DHCPREQUEST for 192.168.0.100 (192.168.0.2) from 00:48:54:6e:b0:4d (Enigma) via eth0
Enigma accetta e richiede l'indirizzo 192.168.0.100
Joker dhcpd: DHCPACK on 192.168.0.100 to 00:48:54:6e:b0:4d(Enigma) via eth0
Joker assegna ad Enigma l'indirizzo richiesto


Il rinnovo DHCP avviene in tre fasi:
1. Ogni volta che il client DHCP viene riavviato, se il tempo di lease non è scaduto, viene richiesta la conferma per la configurazione corrente tramite uno scambio di messaggi DHCPREQUEST e DHCPACK.
2. Quando è trascorso il 50% del tempo di lease il client DHCP invia messaggio al server DHCP per rinnovare la configurazione in uso. Se il server riceve il messaggio ed è disponibile al rinnovo invia un messaggio DHCPACK con i parametri, altrimenti il client utilizza i proprio valori fino alla scadenza del lease.
3. Quando è trascorso l'85% del tempo di lease il client DHCP invia in broadcast una richiesta DHCP per rinnovare la configurazione. Se il DHCP server che aveva precedentemente concesso la licenza riceve il messaggio, la rinnova, altrimenti viene inviato un DHCPNACK e quindi il client dovrà ripetere le quattro fasi iniziali.

dhcpd
Autore: homer - Ultimo Aggiornamento: 2004-06-04 10:30:27 - Data di creazione: 2004-06-04 10:30:27
Tipo Infobox: COMMANDS - Skill: 3- INTERMEDIATE

L'assegnazione degli indirizzi e la configurazione dei client di rete in modo dinamico è offerta, su un sistema GNU Linux, dal server dhcpd sviluppato dall'ISC (Internet Software Consortium). Dhcpd utilizza due principali file di configurazione dhcpd.conf per la configurazione e dhcpd.leases coma database dei lease.

Il server dhcp, viene solitamente fatto partire tramite gli script di avvio del sistema, la sua sintassi è la seguente: dhcpd [opzioni] [interfacce]
  
Tra le opzioni principali abbiamo:
-p numero porta UDP: permette cambiare la porta di listening, di default è la 67;
-cf file di configurazione: permette di definire un file di configurazione alternativo a quello predefinito;
-lf file di lease: permette di definire un file alternativo a quello predefinito contenente le informazioni relative agli indirizzi IP rilasciati;  
-q: non stampa i messaggi di copyright all'avvio del servizio;  
-d: utile per il debug, visualizza i messaggi del server sullo standard error anzichè essere come di default essere loggati da syslog.  
-t: testa solamente la correttezza sintattica del file di configurazione dhcpd.conf;  
-T: testa solamente la corretteza del file di database dhcpd.leases;
Di default dhcpd si mette in in ascolto su tutte le interfacce che supportano il multicast (ovvero dove è possibile trasmettere pacchetti all’indirizzo IP 255.255.255.255), altrimenti con la relativa opzione è possibile specificare al server su quali mettersi in ascolto ignorando le altre.

/var/db/dhcpd.leases
Autore: homer - Ultimo Aggiornamento: 2004-06-04 10:31:00 - Data di creazione: 2004-06-04 10:31:00
Tipo Infobox: PATH - Skill: 3- INTERMEDIATE

E' il database in cui vengono registrati gli indirizzi affittati da dhcpd ai client. Per ogni indirizzo rilasciato in lease viene accodata una voce a questo file. La sua posizione nel sistema può variare a seconda della distribuzione Linux.

E' un file ASCII, che non deve essere editato a mano e contenente tutte le informazioni necessarie al server riguardante il rilascio, il rinnovo e le scadenze dei lease. Dhcpd.leases deve esistere, anche se vuoto prima dell'avvio del demone dhcpd. E' possibile crearlo velocemente tramite il comando touch dhcpd.leases.
Per evitare che il database di lease cresca eccessivamente, periodicamente, dhcpd.leases viene ricreato eliminando le voci scadute, mentre una copia di backup è salvata con il nome dhcpd.leases~. In caso di crash del server prima che un file dhcpd.leases valido sia stato scritto su disco è possibile ripristinare il servizio rinominando dhcpd.leases~ in dhcpd.leases.
Il file di database presenta una forma strutturata, per ogni voce è presente l'indirizzo ip rilasciato e tra parantesi
graffe le relative dichiarazioni. Un esempio di voce aggiunta al file database è il seguente:    
lease 192.168.0.80 { Ip rilasciato in affitto  
  starts 5 2003/04/11 18:37:21; Rilascio del lease (tempo GMT)  
  ends 1 2003/04/14 18:37:21; Scadenza del lease (tempo GMT)  
  binding state active;  
  next binding state free; Lo stato di binding attuale e lo stato successivo ovvero alla scadenza del lease  
  hardware ethernet 00:48:54:6f:2b:e6; Tipo (in questo caso ethernet) e MAC address dell'interfaccia che ha ricevuto l'indirizzo  
  uid "\001\000HTo+\346"; Identificativo del client  
  client-hostname "Apollo13"; Nome del client che ha ricevuto in affitto l'indirizzo  
}

/etc/dhcpd.conf
Autore: homer - Ultimo Aggiornamento: 2003-05-15 18:17:54 - Data di creazione: 2003-05-15 18:17:54
Tipo Infobox: PATH - Skill: 3- INTERMEDIATE

E' il file contenente la configurazione del server DHCP (ISC) che viene letto all'avvio del servizio. In caso si decida di apportare variazioni al funzionamento del server è necessario arrestare e riavviare dhcpd affinchè dhcpd.conf venga riletto.

Un esempio di configurazione:
#  
# Configurazione parametri Globali  
#  
ddns-update-style ad-hoc;  Opzione riguardante il metodo di aggiornamento dinamico del Domain Name System  
option subnet-mask 255.255.255.0;  Definizione della maschera di sottorete  
option broadcast-address 192.168.0.255; Definizione indirizzo di broadcast per la rete  
default-lease-time 259200; Il tempo di lease è quantificato in 3 giorni  
max-lease-time 518400; Il tempo massimo per cui il client può utilizzare l'indirizzo affittato è quantificato in 6 giorni  
option routers 192.168.0.1; Indicazione del router che fa da gateway verso Internet o altre reti  
option domain-name-servers 212.216.112.112, 212.216.172.62; Specifica i server DNS per la risoluzione degli indirizzi  
option domain-name "Zeta.net";  Definizione nome di dominio della rete  
  
# Configurazione delle Subnet  
  
subnet 192.168.0.0 netmask 255.255.255.0 { Definizine della subnet da configurare  
   range 192.168.0.3 192.168.0.50;  Definizione di un primo intervallo di indirizzi da affittare  
   range 192.168.0.100 192.168.0.150; Definizione di un secondo intervallo di indirizzi da affittare  
  
# Configurazione Gruppi Host  
  
group {  
   option routers 192.168.0.2;  
   option subnet-mask 255.255.255.0;  
   option domain-name-servers 195.130.224.18;  
   Ridefinizione di alcuni parametri globali in modo  
   specifico per il gruppo di host elencati all'interno del blocco group  
  
   host plutone { Identificazione dell'host da configurare  
   option host-name "Plutone.Zeta.net"; Assegnamento del nome Host  
   hardware ethernet 00:A0:78:8E:9E:AA; Identificazione tramite Mac Address della scheda di rete  
   fixed-address 192.168.0.51; Assegnamento di un IP fisso  
   }  
    
   host saturno {  
   option host-name "Saturno.Zeta.net";  
   hardware ethernet 00:48:54:6E:B0:4D;  
   fixed-address 192.168.0.52;  
   }  
}

Configurazione di un DHCP Server (ISC)
Autore: homer - Ultimo Aggiornamento: 2004-06-04 10:29:33 - Data di creazione: 2004-06-04 10:29:33
Tipo Infobox: DESCRIPTION - Skill: 3- INTERMEDIATE

La configurazione di un DHCP Server ISC avviene attraverso un file di configurazione strutturato in maniera particolare, la cui conoscenza è fondamentale per sfruttarne a pieno le caratteristiche.

La configurazione del server si basa sul file /etc/dhcpd.conf, un file di testo, composto da istruzioni la cui sintassi è di tipo case insensitive e all'interno del quale è possibile lasciare linee vuote o inserire commenti i quali devono iniziare con il carattere #.
La struttura del file, ricorda dal punto di vista sintattico il linguaggio C, in quanto sono presenti blocchi di istruzioni, e istruzioni annidate, tra parantesi graffe. In particolare si possono individuare due categorie di istruzioni, i parametri (parameter statements) e le dichiarazioni (declaration). Mentre i parametri definiscono in che modo si deve comportare il server, le dichiarazioni vengono utilizzate per descrivere la topologia della rete.
La struttura del file è la seguente:  
parametro valore;  
parametro valore;  
...  
dichiarazione {  
   parametro valore;  
   ...  
     sotto-dichiarazione {  
        parametro valore;  
        ...  
     }  
}  

Le istruzioni in testa al file, al di fuori di ogni dichiarazione rappresentano i parametri globali. Essi sono validi in ogni sottorete utilizzata salvo una loro ridefinizione all'interno di successive direttive di dichiarazione. Le istruzioni all'interno di un blocco definito da parentesi graffe { } sono valide solamente per quel blocco in relazione all'oggetto (sottorete, host, gruppo di host ecc.) che definiscono.
Le direttive di dichiarazione sono:  
subnet ip netmask sottorete {  
 [parametro] valore;  
}
: definisce la sottorete per la quale applicare i parametri definiti;    
shared-network nomerete {  
[parametro] valore;  
   dichiarazione {  
   ...  
  }  
}
: è utilizzata per il raggruppamento della configurazione di più sottoreti, in particolare quando si definiscono più sottoreti che condividono la medesima rete fisica;  
group {  
 [parametro] valore;  
}
: permette di definire un gruppo di host che hanno parametri di configurazione comune;  
La direttiva subnet riveste un particolare importanza perchè è la minima unità di informazione da inserire nel file dhcpd.conf. Senza la specificazione di almeno una subnet con un range di indirizzi validi non è possibile avviare il server.  
Tra i parametri di configurazione più utilizzati abbiamo:
default-lease-time secondi: definisce la durata della configurazione per l'interfaccia di rete;  
max-lease-time secondi: definisce il tempo massimo per la durata della configurazione per l'interfaccia di rete;  
range indirizzo ip iniziale indirizzo ip finale: definisce il pool di indirizzi utilizzabili da rilasciare ai client;  
option subnet-mask subnetmask: definisce la maschera di sottorete;  
option broadcast-address indirizzo di broadcast: definisce l'indirizzo di broadcast;  
option routers indirizzo ip del router: definisce l'indirizzo ip del gatway predefinito;  
option domain-name-servers indirizzo dns: definisce l'indirizzo ip del/dei server DNS;  
option domain nome dominio: definisce il nome di dominio della rete
Sotto la directory /usr/doc/ dell'applicazione è possibile trovare un esempio di dhcpd.conf.

Windows XP: configurazione DHCP
Autore: homer - Ultimo Aggiornamento: 2005-06-21 16:40:33 - Data di creazione: 2004-05-15 13:51:59
Tipo Infobox: ETCETERA - Skill: 2- JUNIOR

Configurazione dinamica indirizzo di rete in ambiente Windows XP e possibili alternative.

Per fare in modo che all'avvio il sistema acquisisca tramite il protocollo DHCP l'indirizzo di rete, è necessario impostare il radio button "Ottieni automaticamente un indirizzo IP" nel tab Generale della scheda Protocollo Internet TCP/IP. Per fare questo è possibile cliccare con il tasto destro su Risorse di rete, scegliere Properietà, quindi Connessione alla rete locale (LAN) poi cliccare nuovamente con il tasto destro e scegliere ancora Proprieta'.

CONFIGURAZIONE ALTERNATIVA
E' possibile configurare Windows XP in modo da utilizzare un indirizzo IP a scelta dell'amministratore della macchina qualora il DHCP Server di rete non risulti disponibile. Anche in questo caso, è necessario aprire le proprietà di Protocollo Internet TCP/IP in cui è possibile trovare il tab Configurazione Alternativa il quale permette di impostare un indirizzo IP privato a propria scelta.

Le modifiche in oggetto devono essere effettuare con i privilegi di Administrator.

DHCRELAY
Autore: ask - Ultimo Aggiornamento: 2004-10-27 13:19:11 - Data di creazione: 2004-10-27 13:19:11
Tipo Infobox: DESCRIPTION - Skill:

Il programma dhcrelay è un agente che permette di inoltrare le richieste DHCP e BOOTP a server DHCP non direttamente connessi al client o residenti in una diversa sottorete.

Nel caso si sottoreti diverse il server dhcp dovrà essere configurato per accettare e inoltrare richieste di reti diverse.

ES.      
DHCP-SERVER
    |
    |
    |----DHCP-RELAY---- net 192.168.100.0/24 ---- client B
    |
    net 10.42.42.0/24
    |
    |_client A


#dhcpd.conf  configurato per diverse reti #####
ddns-update-style interim;
ignore client-updates;

#dichiarazione parametri rete 192.168.100.0 #
subnet 192.168.100.0 netmask 255.255.255.0 {
        # assegnazione gateway della rete
        option routers                  192.168.100.1;
        option subnet-mask              255.255.255.0;
        # assegnazione dominio
        option domain-name              "domain.org";
        # assegnazione DNS della rete
        option domain-name-servers      192.168.100.1;
        # assegnazione dell'intervallo di indirizzi da utilizzare
        range dynamic-bootp 192.168.100.128 192.168.100.254;
        # durata in secondi dell'assegnazione dell'IP         
        default-lease-time 21600;  
        # durata massima in secondi dell'assegnazione dell'IP
        max-lease-time 43200;
}

#dichiarazione parametri rete 10.42.42.0 #
subnet 10.42.42.0 netmask 255.255.255.0 {
        option routers                  10.42.42.1;
        option subnet-mask              255.255.255.0;
        option domain-name              "domain.org";
        option domain-name-servers      10.42.42.1;
        range dynamic-bootp 10.42.42.128 10.42.42.254;
        default-lease-time 21600;
        max-lease-time 43200;
}


Per eseguire l'agente DHCRELAY l'unico campo obbligatorio è il/i server DHPC a cui passare le richieste dei client.
### agente con più server configurati, in ascolto su tutte le interfaccie di rete
dhcrelay SERVER1 SERVER2 SERVER3

### dichiarazione interfaccia di ascolto delle richieste dhcp e bootp
dhcrelay -i eth0 SERVER1


Nei sistemi RedHat-Like esiste un file di configurazione ( /etc/sysconfig/dhcrelay ) dove é possibile dichiarare i parametri di start-up dell'agente:
#esempio file di configurazione dhcrelay nei sistemi RedHat-Like
INTERFACES=""
DHCPSERVERS=
"10.42.42.2"

Privacy Policy