Configurazione server e client
DHCP in Linux
Laboratorio di Reti
Ing. Telematica - Università Kore Enna
A.A. 2008/2009
Ing. A. Leonardi
DHCP
•  DHCP sta per Dynamic Host Configuration Protocol e
identifica un protocollo attraverso il quale un gruppo di nodi
può essere configurato in modo automatico e dinamico, per
ciò che riguarda la sua connessione alla rete
–  Si immagini un ufficio con una rete locale chiusa, in cui si vogliono poter
collocare dei nodi senza troppi problemi
•  Il protocollo DHCP necessita di un server che sia in grado di
rispondere a una richiesta del genere, con dei client in grado
di fare tale richiesta
•  Quando un cliente contatta un server DHCP per la prima
volta, tra i due viene concordato un tempo di validità per la
configurazione assegnata al cliente.
•  Questo tempo viene indicato con il termine lease ed è
compito del servente tenere memoria dei nodi che possono
trovarsi nella rete di sua competenza
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
DHCP
1
2
3
4
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
DHCP leasing
•  Host diversi possono utilizzare lo stesso indirizzo in
tempi diversi
•  L’allocazione deve essere limitata ad un intervallo
temporale stabilito dal server (lease) eventualmente
rinnovabile
•  Quando un host viene spento o disconnesso deve
rilasciare l’indirizzo e renderlo disponibile per una nuova
allocazione
•  Il rilascio può essere esplicito (DHCPRELEASE) o
avvenire allo scadere del periodo di lease
•  Il tempo di lease è uno dei parametri forniti dal server nel
DHCPOFFER
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Informazioni ottenute attraverso
DHCP
•  Attraverso il protocollo DHCP, i nodi clienti possono
ricevere una serie di informazioni utili a definire la loro
collocazione nella rete circostante.
– 
– 
– 
– 
– 
– 
– 
l'indirizzo IPv4 e la maschera di rete (minimo indispensabile);
l'indirizzo broadcast;
il nome del nodo e il dominio relativo;
l'indirizzo del router predefinito;
l'indirizzo del servente DNS;
l'indirizzo del servente di stampa;
…
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Server DHCP
•  Il server DHCP deve essere in grado di trasmettere dei
pacchetti all'indirizzo IP 255.255.255.255, corrispondente
idealmente a «tutti i nodi».
•  Può darsi che per poterlo fare, si debba creare un
instradamento apposito, su tutte le interfacce di rete
attraverso cui il servente deve essere raggiungibile e da cui
deve poter rispondere.
# route add -host 255.255.255.255 dev eth0
# route add -host 255.255.255.255 dev eth1
L'esempio, in particolare, mostra l'instradamento attraverso le
interfacce eth0 e eth1.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Conflitto con il supervisore dei
servizi di rete
•  Normalmente, il protocollo DHCP utilizza la porta 67
UDP, che di solito è denominata bootps.
•  Il server in esame potrebbe essere stato predisposto per
la gestione del servizio BOOTP su quella stessa porta.
•  Nel file /etc/inetd.conf, dovrebbe essere presente
una riga simile a quella seguente, commentata nello
stesso modo:
#bootps dgram udp wait root /usr/sbin/tcpd bootpd
•  Se la gestione del servizio BOOTP fosse abilitata, ciò
andrebbe in conflitto con i demoni usati per il DHCP, sia
nel nodo del servente, sia nei nodi clienti.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Server DHCP
•  Questo servente si compone del demone dhcpd, il quale si
avvale dei seguenti file:
–  /etc/dhcpd.conf per la configurazione;
–  /etc/dhcpd.leases per annotare gli indirizzi concessi ai vari clienti
Questo ultimo file, /etc/dhcpd.leases, deve esistere
(vuoto) prima che il demone possa essere avviato la prima
volta.
•  Il problema di organizzazione del servente si limita quindi alla
configurazione del file /etc/dhcpd.conf. Attualmente,
questo tipo di servente è in corso di sviluppo e la
documentazione relativa alla sua configurazione potrebbe
essere rimasta un po' indietro rispetto alle potenzialità offerte
effettivamente.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Server DHCP
•  Avvio del demone:
–  dhcpd [opzioni] [interfacce...]
•  In generale, dhcpd non richiede alcun argomento
nella riga di comando, limitandosi così a leggere la
configurazione e a porsi in ascolto di tutte le
interfacce in grado di gestire il multicast,
funzionando come demone.
•  L'indicazione di una o più interfacce di rete, alla fine
degli argomenti, permette di specificare dove dhcpd
deve porre la sua attenzione, ignorando le altre
eventualmente presenti.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Server DHCP
Opzione
Descrizione
-p n_porta
dhcpd è in ascolto normalmente della porta UDP
numero 67 (bootps), ma ciò può essere cambiato
attraverso questa opzione.
-cf file_di_configurazione
Permette di definire un file di configurazione alternativo
a quello predefinito.
-lf file_lease
Permette di definire un file alternativo a quello
predefinito per l'accumulo delle informazioni sui nodi
che hanno ottenuto un indirizzo IP
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Esempio di file dhcpd.conf
•  Si supponga di volere servire la rete locale
192.168.1.0/255.255.255.0, specificando che gli indirizzi da
192.168.1.100 a 192.168.1.199 possono essere gestiti per le
attribuzioni dinamiche di indirizzi IP.
•  Il file di configurazione può limitarsi a contenere quanto segue:
subnet 192.168.1.0 netmask 255.255.255.0
{ range 192.168.1.100 192.168.1.199; }
•  La direttiva di dichiarazione subnet, come si può intuire, è quella più
importante per la gestione del DHCP.
•  Nella maggior parte dei casi, la configurazione si compone di una o
più direttive di questo tipo, contenenti probabilmente più parametri di
quanto visto nell'esempio.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Esempio di file dhcpd.conf
ddns-update-style none;
è necessario
specificare se
aggiornare o
meno il
DNS dinamico
subnet 192.168.1.0 netmask 255.255.255.0
{ range 192.168.1.100 192.168.1.149;
insieme di indirizzi
range 192.168.1.200 192.168.1.249;
usati in DHCP
default-lease-time 604800;
# una settimana
max-lease-time 2592000; # 30 giorni
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.1;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "brot.dg";
} Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Esempio di file dhcpd.conf
ddns-update-style none;
subnet 192.168.1.0 netmask 255.255.255.0
E’ possibile assegnare
{
Un IP fisso in base all’indirizzo MAC
…
host deis73 {
hardware ethernet 00:08:83:2f:65:c0;
fixed-address 192.168.1.221;
}
…
}
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Client DHCP
•  Il client DHCP ha il compito di:
–  interpellare un servente nella rete fisica in cui si trova
lo stesso cliente, ottenendo da questo l'indicazione
dell'indirizzo IPv4 da utilizzare, assieme ad altre
informazioni di contorno eventuali.
–  Successivamente, ha il compito di ripresentarsi
presso il servente periodicamente, per evitare che
scada il tempo concesso per l'identificazione (lease).
•  Avvio:
–  dhcpcd [opzioni] [interfacce...]
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Client DHCP
•  dhcpcd è un demone in grado di compiere il ruolo di cliente
DHCP, per ottenere l'indicazione dell'indirizzo IPv4, della
maschera di rete relativa, dell'indirizzo del router, del servente
DNS oltre ad altre informazioni eventualmente fornite.
•  Il pregio principale di questo cliente è quello di essere capace
di riconfigurare l'interfaccia di rete e di ridefinire
l'instradamento in modo autonomo.
•  Il limite di questo programma sta nel fatto di poter intervenire
su una sola interfaccia di rete, che in modo predefinito è eth0.
•  Per quanto riguarda l'informazione del DNS, dhcpcd crea:
–  Il file /etc/dhcpc/resolv.conf che riproduce il contenuto di /etc/
resolv.conf;
–  Il file /etc/dhcpc/hostinfo-interfaccia per le altre informazioni,
comprese quelle sull'interfaccia di rete e sull'instradamento, crea un altro file
che ha l'aspetto di un pezzo di script di shell, che potrebbe essere utilizzato
in qualche tipo di procedura di inizializzazione del sistema.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Client DHCP
Opzione
Descrizione
-k
Invia un segnale SIGTERM al processo dhcpcd in
funzione attualmente.
-l n_secondi
Specifica il tempo di lease da richiedere al
servente. Il servente può accettarlo o concedere
un tempo inferiore, a seconda della sua
configurazione.
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Esempi Client DHCP
•  # dhcpcd
–  Avvia dhcpcd in modo normale, come demone, allo scopo di ottenere un indirizzo per
l'interfaccia eth0.
•  # dhcpcd eth1
–  Avvia dhcpcd come demone, in modo da ottenere un indirizzo per l'interfaccia eth1.
• 
• 
Se il servente DHCP fornisce le indicazioni sui serventi DNS ed eventualmente anche
il dominio di competenza, dhcpcd è in grado di creare il file /etc/dhcpc/resolv.conf, il
cui scopo è di sostituirsi a quello omonimo collocato nella directory /etc/.
Se si vuole sfruttare questa opportunità, conviene sostituire il file /etc/resolv.conf con
un collegamento simbolico a questo file generato da dhcpcd.
–  # mv /etc/resolv.conf /etc/resolv.conf.orig
–  # ln -s /etc/dhcpc/resolv.conf /etc/resolv.conf
• 
• 
• 
Il file /etc/dhcpc/hostinfo-interfaccia viene creato da dhcpcd per contenere tutte le
informazioni riferite a un'interfaccia particolare. Per esempio, quando si interviene su
eth0, si ottiene il file /etc/dhcpc/hostinfo-eth0.
Il contenuto del file è realizzato in modo da essere compatibile con gli script per una
shell derivata da quella di Bourne (come Bash, o altre meno sofisticate), per cui è
facile inglobare tale file in uno script di una qualche procedura.
altro DHCP client
–  es: # dhclient <interface>
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009
Esercitazione
•  Configurare ed attivare un server DHCP
•  Attivare un client DHCP
•  Utilizzare tcpdump o wireshark per
controllare lo scambio di messaggi
Ing. A. Leonardi - Laboratorio di Reti A. A. 2008/2009