25.2. Configurazione di un server DHCP

Per configurare un server DHCP, modificate il file di configurazione /etc/dhcpd.conf.

Il DHCP utilizza anche il file /var/lib/dhcp/dhcpd.leases per archiviare il database in 'affitto' (lease) del client. Per ulteriori informazioni, fate riferimento alla Sezione 25.2.2.

25.2.1. File di configurazione

La prima fase della configurazione di un server DHCP è la creazione del file di configurazione contenente le informazioni di rete per i client. Le opzioni globali possono essere inserite per tutti i client, e le opzioni possono essere inserite per ogni sistema client.

Il file di configurazione può contenere schede e linee vuote aggiuntive per facilitare la formattazione. Le parole chiave non distinguono tra lettere maiuscole e lettere minuscole e le linee che iniziano con un cancelletto (#) sono considerate commenti.

Due sono gli schemi di aggiornamento DNS attualmente implementati, la modalità di aggiornamento DNS ad-hoc e quella della modalità di aggiornamento della bozza di interazione DHCP-DNS interim. Se e quando queste due modalità vengono accettate come parte del processo degli standard IETF, sarà disponibile una terza modalità — il metodo di aggiornamento DNS standard. Il server DHCP deve essere configurato per l'utilizzo di uno dei due schemi correnti. La versione 3.0b2pl11 e la versione precedente utilizzavano la modalità ad-hoc, tuttavia questo non è più consigliato. Se desiderate che venga mantenuto lo stesso comportamento, aggiungete la riga riportata di seguito nella parte superiore del file di configurazione:

ddns-update-style ad-hoc;

Per utilizzare la modalità consigliata, aggiungete la riga riportata di seguito nella parte superiore del file di configurazione:

ddns-update-style interim;

Per ulteriori informazioni sulle diverse modalità, consultate la pagina man dhcpd.conf.

Esistono due tipi di dichiarazioni nei file di configurazione:

Alcuni parametri richiedono di essere avviati con la parola chiave option e sono indicati come opzioni che configurano le opzioni DHCP, mentre i parametri configurano i valori non opzionali oppure controllano l'attività del server DHCP.

I parametri (incluse le opzioni) dichiarati prima di una sezione inclusa tra parentesi graffe ({ }) sono considerati parametri globali, ovvero si applicano a tutte le sezioni che li seguono.

ImportanteImportante
 

Se modificate il file di configurazione, le modifiche saranno confermate solo al riavvio del demone DHCP con il comando service dhcpd restart.

Nell'Esempio 25-1 le opzioni routers, subnet-mask, domain-name, domain-name-servers e time-offset sono utilizzate per le dichiarazioni host dichiarate sotto di esse.

Come mostrato nell'Esempio 25-1, è possibile indicare una subnet. È necessario includere una dichiarazione subnet per ogni sottorete della rete. In caso contrario, il server DHCP non si avvierà.

Quest'esempio riporta delle opzioni globali per ogni client DHCP nella sottorete e un range dichiarato. Ai client viene assegnato un indirizzo IP compreso nel range.

subnet 192.168.1.0 netmask 255.255.255.0 {
        option routers                  192.168.1.254;
        option subnet-mask              255.255.255.0;

        option domain-name              "example.com";
        option domain-name-servers       192.168.1.1;

        option time-offset              -18000;     # Eastern Standard Time

	range 192.168.1.10 192.168.1.100;
}

Esempio 25-1. Dichiarazione di sottorete

Tutte le sottoreti che condividono la stessa rete fisica dovrebbero essere inserite in una dichiarazione shared-network, come mostra l'Esempio 25-2. I parametri contenuti nella shared-network e non nelle dichiarazioni subnet sono considerati parametri globali. Il nome della shared-network dovrebbe essere un titolo descrittivo per la rete, come per esempio test-lab per descrivere tutte le sottoreti in un ambiente di laboratorio per i test.

shared-network name {
    option domain-name              "test.redhat.com";
    option domain-name-servers      ns1.redhat.com, ns2.redhat.com;
    option routers                  192.168.1.254;
    more parameters for EXAMPLE shared-network
    subnet 192.168.1.0 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.1 192.168.1.31;
    }
    subnet 192.168.1.32 netmask 255.255.255.0 {
        parameters for subnet
        range 192.168.1.33 192.168.1.63;
    }
}

Esempio 25-2. Dichiarazione di rete condivisa

Come mostrato nell'Esempio 25-3, la dichiarazione group può essere utilizzata per applicare i parametri globali a un gruppo di dichiarazioni. Per esempio, è possibile raggruppare reti condivise, sottoreti, host o altri gruppi.

group {
   option routers                  192.168.1.254;
   option subnet-mask              255.255.255.0;

   option domain-name              "example.com";
   option domain-name-servers       192.168.1.1;

   option time-offset              -18000;     # Eastern Standard Time

   host apex {
      option host-name "apex.example.com";
      hardware ethernet 00:A0:78:8E:9E:AA; 
      fixed-address 192.168.1.4;
   }

   host raleigh {
      option host-name "raleigh.example.com";
      hardware ethernet 00:A1:DD:74:C3:F2;
      fixed-address 192.168.1.6;
   }
}

Esempio 25-3. Dichiarazione di gruppo

Per configurare un server DHCP che affitta indirizzi IP dinamici al sistema inserito in una sottorete, modificate l'Esempio 25-4 inserendo i vostri valori. Questo dichiara un tempo di affitto di default, il tempo massimo e i valori della configurazione di rete per i client. L'esempio riportato qui di seguito assegna gli indirizzi IP ai sistemi client nel range 192.168.1.10 e 192.168.1.100.

default-lease-time 600;
max-lease-time 7200;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option domain-name-servers 192.168.1.1, 192.168.1.2;
option domain-name "example.com";

subnet 192.168.1.0 netmask 255.255.255.0 {
   range 192.168.1.10 192.168.1.100;
}

Esempio 25-4. Parametro del range

Per assegnare un indirizzo IP a un client che si basa sull'indirizzo MAC della scheda di rete, utilizzare il parametro hardware ethernet contenuto nella dichiarazione host. Come dimostra l'Esempio 25-5, la dichiarazione host apex specifica che la scheda di rete con l'indirizzo MAC 00:A0:78:8E:9E:AA dovrebbe sempre corrispondere all'indirizzo IP 192.168.1.4.

Notare che il parametro facoltativo host-name può essere usato per assegnare un host name al client.

host apex {
   option host-name "apex.example.com";
   hardware ethernet 00:A0:78:8E:9E:AA; 
   fixed-address 192.168.1.4;
}

Esempio 25-5. Indirizzo IP statico con DHCP

SuggerimentoSuggerimento
 

L'esempio fornito del file di configurazione, può essere usato come punto di partenza, a cui aggiungere le opzioni di configurazione personalizzata. Per copiarlo nella posizione corretta, usate il seguente comando:
  cp /usr/share/doc/dhcp-<numero-versione>/dhcpd.conf.sample /etc/dhcpd.conf  
(dove <numero-versione> è la versione del DHCP).

Per un elenco completo di dichiarazioni per le opzioni e delle loro funzioni, fate riferimento alla pagina man dhcp-options.

25.2.2. Database degli affitti

Sul server DHCP, il file /var/lib/dhcp/dhcpd.leases archivia la database degli affitti del client DHCP. Si consiglia di non modificare il file manualmente. Le informazioni sull'affitto DHCP per ogni indirizzo IP assegnato di recente sono archiviate automaticamente nel database degli affitti. Le informazioni includono la lunghezza dell'affitto, a chi è stato assegnato l'indirizzo IP, l'inizio e la chiusura delle date di affitto e l'indirizzo MAC della scheda di interfaccia di rete usata per reperire l'affitto.

Tutti gli orari della database degli affitti fanno riferimento al Greenwich Mean Time (GMT), non all'ora locale.

La database degli affitti viene ricreata ogni tanto cosichè no diventa troppo lungo. Prima, tutti gli affitti esistenti vengono salvati in una databasetemporanea degli affitti. Il file dhcpd.leases viene rinominato dhcpd.leases~ e la database temporanea degli affitti viene scritta nel file dhcpd.leases.

Il demone DHCP può essere terminato o il sistema può essere interrotto dopo che l'affitto (lease)del database sia stato rinominato per il file di backup ma prima che il nuovo file sia stato scritto. Se ciò accade, il file dhcpd.leases non esiste, richiesto per avviare il servizio. Non create un nuovo file di affitto, altrimenti tutti gli affitti verranno persi causando molti problemi. La soluzione corretta è rinominare il file di backup dhcpd.leases~ in dhcpd.leases e quindi iniziare il demone.

25.2.3. Avvio e arresto del server

ImportanteImportante
 

Quando viene avviato il server DHCP per la prima volta, esso non avrà successo se il file dhcpd.leases non è già esistente. Usate il comando touch /var/lib/dhcp/dhcpd.leases per creare il file nel caso in cui non dovesse esistere.

Per avviare il servizio DHCP, utilizzate il comando /sbin/service dhcpd start. Per arrestare il server DHCP, utilizzate invece il comando /sbin/service dhcpd stop. Se desiderate che il demone si avvii automaticamente durante l'avvio, consultate il Capitolo 21 per informazioni sulla gestione dei servizi.

Se disponete di più interfacce di rete per il sistema, ma desiderate che il server DHCP si avvii unicamente su di una interfaccia, potete configurare il server DHCP per l'avvio su di un determinato dispositivo. In /etc/sysconfig/dhcpd, aggiungete il nome dell'interfaccia all'elenco DHCPDARGS:

# Command line options here
DHCPDARGS=eth0

Questo è utile per una macchina firewall con due schede di rete. Una scheda di rete può configurata come client DHCP per recuperare un indirizzo IP in Internet. L'altra scheda di rete può essere usata come un server DHCP per la rete interna protetta dal firewall. Se specificate solo la scheda di rete collegata alla rete interna, otterrete un sistema più sicuro in quanto gli utenti non possono collegarsi al demone tramite Internet.

Altre opzioni della linea di comando possono essere specificate nel file /etc/sysconfig/dhcpd e includono:

25.2.4. Relay Agent DHCP

Il Relay Agent DHCP (dhcrelay) vi consente di comunicare le richieste DHCP e BOOTP provenienti da una sottorete senza server DHCP a uno o più server DHCP su altre sottoreti.

Quando un client DHCP richiede delle informazioni, il Relay Agent inoltra la richiesta all'elenco di server DHCP specificati all'avvio del Relay Agent DHCP. Quando un server DHCP invia una risposta, viene eseguito il broadcast o l'unicast sulla rete che ha inviato la richiesta originale.

Il Relay Agent DHCP ascolta le richieste DHCP su tutte le interfacce a meno che non vengano specificate le interfacce nel file /etc/sysconfig/dhcrelay con la direttiva INTERFACES.

Per avviare il Relay Agent DHCP, utilizzate il comando service dhcrelay start.