Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati


Introduzione

Questa guida spiega come configurare un server DHCP.

Che cos'è DHCP e come funziona

La comunicazione tra nodi di una rete di computer avviene attraverso un meccanismo di localizzazione in cui l'identificazione di ciascun nodo avviene attraverso un numero (indirzzo IP) formato di 4 ottetti separati da punti.

Affinchè la comunicazione possa avvenire attraverso il meccanismo di nominazione diretta ogni nodo deve conoscere il numero che identifica l'endpoint con cui deve comunicare, e questo può avvenire in 2 modi:

  • ogni nodo possiede una lista di tutti gli altri nodi della rete (il file locale /etc/hosts)

  • ogni nodo fa riferimento ad un nodo server che detiene la lista degli indirizzi di tutti gli altri nodi della rete (il server DHCP)

Ovviamente il primo modo consente una risoluzione locale dell'informazione necesssaria per la comunicazione , mentre il secondo riduce il carico di lavoro che deve essere fatto per propagare la lista degli hosts della rete a tutti i nodi e riduce l'overhead in caso di cambiamenti alla topologia della rete stessa (dismissioni o inserimenti di nuovi nodi), ma comporta un lavoro di manutenzione ed amministrazione di un server che gestisce la lista degli indirizzi dei nodi della rete.

Il server DHCP gestisce l'assegnazione degli indirizzi IP in modo dinamico , ovvero quando un client richiede un IP questo non gli viene assegnato in modo permanente ma soltanto per un certo periodo di tempo , al termine del quale tale lease (che tradotto vuol dire affitto) deve essere rinnovato.

Quindi alla scadenza del lease il client può vedersi riassegnare lo stesso IP oppure (nel caso in cui questo non sia più disponibile) il server DHCP gliene assegnerà un altro.

Le porte di servizio sono la 67 e la 68 TCP.

Come funziona il protocollo:

  • il client invia una richiesta di assegnazione dell'IP in broadcast: DHCP DISCOVER 255.255.255.255

  • il server DHCP risponde che può assegnargli un indirizzo dal suo range: DHCP OFFER 192.168.1.253 from 192.168.1.1

  • il client conferma la richiesta di quell'indirizzo IP: DHCP REQUEST for 192.168.1.253 (192.168.1.1)

  • il server glielo assegna: DHCP ACK from 192.168.1.1

Installazione

Aprire una shell e al prompt dei comandi digitate come root

sudo apt-get install dhcp3-server

Un'occhiata ai file e alle directory di configurazione

I file di configurazione sono sotto la directory /etc/dhcp3 ed il file fondamentale è dhcpd.conf.

Tutti i log files inerenti lo stratup dei servizi DHCP sono contenuti nel file /var/log/syslog.

Architettura proposta

  • un server DHCP primary
  • un server DHCP di backup

Questa configurazione prende il nome di failover e permette di mantenere il servizio in piedi anche se uno dei 2 server ha dei problemi.

Inoltre i 2 server DHCP dovranno aggiornare il server DNS con il metodo della firma TSIG.

Configurazione del DHCP primario

  • Apriamo dunque il file di configurazione /etc/dhcp3/dhcpd.conf.

    failover peer "ubuntu" {
    
             primary;
             address 192.168.20.101;
             port 519;
             peer address 192.168.20.102;
             peer port 520;
             max-response-delay 60;
             max-unacked-updates 10;
             mclt 3600;
             split 128;
             load balance max seconds 3;
    
    }
    
    authoritative;
    ddns-update-style interim;
    ddns-updates on;
    ddns-domainname "example.com";
    ddns-rev-domainname "20.168.192.in-addr.arpa";
    
    subnet 192.168.20.0 netmask 255.255.255.0 {
    
    pool {
    
    range 192.168.20.2 192.168.20.254;
    
    failover peer "ubuntu";
    
    deny dynamic bootp clients;
    
    server-name "ubuntu.example.com";
    
    option domain-name "example.com";
    
    option domain-name-servers 192.168.20.101;
    
    default-lease-time 86400;
    max-lease-time 31536000;
    
    key "mykey" {
    
    algorithm hmac-md5;
    secret "KCoWhagI3Sl8XBQDa+QI8w==";
    
    }
    
    zone example.com {
    
    primary 192.168.20.101;
    key mykey;
    
    }
    
    zone 20.168.192.in-addr.arpa {
    primary 192.168.20.101;
    key mykey;
    
    }
    
    host ubuntu.example.com {
    hardware ethernet 00:48:54:6B:B3:D7;
    fixed-address 192.168.20.101;
    }
    
    }
    
    }
  • la direttiva failover peer specifica che questo server è il primary DHCP server per l'assegnazione degli IP. Quasi tutte le direttive sono auto esplicative, ricordate solo che le direttive port e peer port dicono quali sono le porte su cui comunicheranno i 2 server per verificare il loro stato.

  • subnet: questa riga dice al server DHCP che dovrà assegnare indirizzi IP sulla sottorete192.168.20.0

  • la direttiva pool identifica un sottogruppo di hosts appartenenti alla sottorete 192.168.20.0 gestita da questo server DHCP.

  • la direttiva server-name dice che il nome di questo server DHCP è ubuntu.example.com.

  • la direttiva deny dynamic bootp clients istruisce il server DHCP a non assegnare IP dinamici ai clients che fanno il boot dalla rete (che generalmente sono quelli che non hanno un disco rigido ma devono caricare il loro OS da un host remoto)

  • le 2 direttive option domain-name e option domain-name-servers forniscono informazioni su qual è il dominio DNS associato ai clients della sottorete 192.168.20.0 e qual è l'IP del server DNS (192.168.20.101).

  • le opzioni di configurazione default-lease-time e max-lease-time sonp quelle più importanti per un server DHCP , in quanto definiscono rispettivamente l'intervallo di affitto di default di un indirizzo IP (ovvero per quanto tempo un indirizzo IP viene assegnato ad un dato client) ed il massimo intervallo di affitto di un indirizzo IP (cioè la massima durata di affitto di un indirizzo IP ad un client è pari al valore di max-lease-time). Entrambi i valori sono espressi in secondi.

  • range 192.168.20.2 192.168.20.254: l'opzione range permette di configurare l'intervallo di indirizzi IP che possono essere assegnati ai clients della sottorete data dal vostro server DHCP (nel nostro esempio dal 2 al 254, ovvero il nostro server DHCP è in grado di gestire al massimo 252 hosts).

  • le sezioni zone servono nel caso in cui dobbiate configurare un server DHCP in grado di aggiornare dinamicamente le informazioni di una zona DNS.

  • Questo schema di aggiornamento utilizza la firma TSIG, il cui valore è stabilito con la direttiva secret.

Il nome del secret (nel nostro esempio mykey) deve essere identico a quello dichiarato nel file di configurazione del DNS /etc/bind/named.conf.local.

  • Le direttive nelle sezioni precedenti indicano i nomi delle zone che il nostro server DHCP dovrà aggiornare usando la firma TSIG creata e condivisa con il server DNS.
  • La sezione host permette di specificare un host che pur appartenendo al range di IP gestito dal server DHCP deve mantenere comunque un indirizzo IP fisso.

  • Notate come per assegnare un indirizzo IP fisso sia necessario conoscere il MAC address dell'host (ovvero l'indirizzo della scheda di rete) ed assegnare all'host medesimo un indirizzo IP statico.
  • Le parentesi chiudono la dichiarazione del file /etc/dhcp3/dhcpd.conf.

  • Ora potete riavviare il servizio con

    /etc/init.d/dhcp3-server restart

    e controllare la presenza del processo dhcpd3 tra i processi di sistema.

In caso di errore non dimenticarsi di controllare il file di log /var/log/syslog che quasi sempre contiene informazioni più che sufficienti per risolvere i problemi che si possono presentare.

Configurazione del DHCP secondario

  • Apriamo il file di configurazione /etc/dhcp3/dhcpd.conf.

    failover peer "ubuntu2" {
    
             secondary;
             address 192.168.20.102;
             port 520;
             peer address 192.168.20.101;
             peer port 519;
             max-response-delay 60;
             max-unacked-updates 10;
             mclt 3600;
             split 128;
             load balance max seconds 3;
    
    }
    
    authoritative;
    ddns-update-style interim;
    ddns-updates on;
    ddns-domainname "example.com";
    ddns-rev-domainname "20.168.192.in-addr.arpa";
    
    subnet 192.168.20.0 netmask 255.255.255.0 {
    
    pool {
    range 192.168.20.2 192.168.20.254;
    
    failover peer "ubuntu2";
    deny dynamic bootp clients;
    
    server-name "ubuntu.example.com";
    option domain-name "example.com";
    option domain-name-servers 192.168.20.101;
    
    default-lease-time 86400;
    max-lease-time 31536000;
    
    
    key "mykey" {
    algorithm hmac-md5;
    secret "KCoWhagI3Sl8XBQDa+QI8w==";
    }
    
    
    zone example.com {
    primary 192.168.20.101;
    key mykey;
    
    }
    
    zone 20.168.192.in-addr.arpa {
    primary 192.168.20.101;
    key mykey;
    
    }
    
    host ubuntu.example.com {
    hardware ethernet 00:48:54:6B:B3:D7;
    fixed-address 192.168.20.101;
    
    }
    
    
    }
    
    }
  • vale quanto detto sopra.
  • Ora potete riavviare il servizio con

    /etc/init.d/dhcp3-server restart

    e controllare la presenza del processo dhcpd3 tra i processi di sistema.

In caso di errore non dimenticarsi di controllare il file di log /var/log/syslog che quasi sempre contiene informazioni più che sufficienti per risolvere i problemi che si possono presentare.


CategoryServer CategoryDaRevisionare