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