23.3. Server DHCP dhcpd

Il daemon del protocollo DHCP costituisce la base di qualsiasi sistema DHCP. Questo server assegna gli indirizzi in lease e ne controlla l'uso in base alle impostazioni definite nel file di configurazione /etc/dhcpd.conf. I parametri e i valori contenuti in questo file possono essere modificati dall'amministratore del sistema per modificare di conseguenza il comportamento dei programmi in vari modi. Per ulteriori informazioni, vedere l'esempio di base del file /etc/dhcpd.conf nell'Esempio 23.1, "File di configurazione /etc/dhcpd.conf".

Esempio 23.1. File di configurazione /etc/dhcpd.conf

default-lease-time 600;         # 10 minutes
max-lease-time 7200;            # 2  hours

option domain-name "cosmos.all";
option domain-name-servers 192.168.1.1, 192.168.1.2;
option broadcast-address 192.168.1.255;
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;

subnet 192.168.1.0 netmask 255.255.255.0
 {
  range 192.168.1.10 192.168.1.20;
  range 192.168.1.100 192.168.1.200;
 }

Questo semplice file di configurazione dovrebbe essere sufficiente per consentire al server DHCP di assegnare indirizzi IP nella rete. Verificare che alla fine di ogni riga sia inserito un punto e virgola, perché diversamente dhcpd non si avvia.

Il file di esempio può essere diviso in tre sezioni. La prima definisce, per default, la durata in secondi di assegnazione del lease di un indirizzo IP a un client richiedente (default-lease-time) prima della richiesta di rinnovo. Nella seconda sezione è inclusa un'istruzione relativa alla durata massima di mantenimento di un indirizzo IP assegnato dal server DHCP da parte di un computer senza richiederne il rinnovo (max-lease-time).

Nella seconda parte sono definiti alcuni parametri di rete di base a livello globale:

L'ultima sezione del file permette di definire una rete e della maschera di sottorete. Per completare il file, è necessario specificare l'intervallo di indirizzi che dovrà essere utilizzato dal daemon DHCP per l'assegnazione degli indirizzi IP ai client interessati. Nell'Esempio 23.1, "File di configurazione /etc/dhcpd.conf" è possibile assegnare ai client un indirizzo compreso nell'intervallo 192.168.1.10 e 192.168.1.20 o nell'intervallo tra 192.168.1.100 e 192.168.1.200.

Dopo la modifica di queste poche righe, dovrebbe essere possibile utilizzare il comando rcdhcpd start per attivare il daemon DHCP che sarà immediatamente disponibile all'uso. Per un breve controllo della sintassi, utilizzare il comando rcdhcpd check-syntax. In caso di problemi di configurazione imprevisti, ad esempio un errore che causa l'interruzione del server o la mancata restituzione di Fatto all'avvio, dovrebbe essere possibile individuare la causa dell'errore leggendo le informazioni contenute nel log di sistema principale /var/log/messages o in console 10 (Ctrl-Alt-F10).

In un sistema SUSE Linux di default il daemon DHCP viene avviato in un ambiente chroot per motivi di sicurezza. Per consentirne l'individuazione da parte del daemon, è necessario copiare i file di configurazione nell'ambiente chroot. In genere la copia dei file viene eseguita automaticamente mediante il comando rcdhcpd start.

23.3.1. Client con indirizzi IP fissi

DHCP può essere usato anche per assegnare un indirizzo statico predefinito a un client specifico. Gli indirizzi assegnati in modo esplicito hanno sempre la priorità rispetto agli indirizzi dinamici assegnati da un pool. Un indirizzo statico non scade mai come invece avviene per un indirizzo dinamico, ad esempio quando non è disponibile un numero sufficiente di indirizzi e questi devono essere ridistribuiti dal server tra i client.

Per identificare un client configurato con un indirizzo statico, in dhcpd viene utilizzato l'indirizzo hardware, ovvero un codice numerico fisso univoco globale formato da sei coppie di ottetti che consente l'identificazione di tutti i dispositivi di rete, ad esempio 00:00:45:12:EE:F4). Se si aggiungono le rispettive righe, come quelle contenute nell'Esempio 23.2, "Aggiunte al file di configurazione", al file di configurazione dell'Esempio 23.1, "File di configurazione /etc/dhcpd.conf", il daemon DHCP assegnerà sempre lo stesso set di dati al client corrispondente.

Esempio 23.2. Aggiunte al file di configurazione

host earth {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}

Il nome del rispettivo client (host nomehost, in questo caso earth) viene immesso sulla prima riga e l'indirizzo MAC sulla seconda. Per trovare l'indirizzo MAC sugli host Linux, usare il comando ip link show e specificare la periferica di rete (ad esempio eth0). L'output dovrebbe essere analogo a quanto segue

link/ether 00:00:45:12:EE:F4

Nell'esempio precedente a un client dotato di una scheda di rete con l'indirizzo MAC 00:00:45:12:EE:F4 viene assegnato automaticamente l'indirizzo IP 192.168.1.21 e il nome host earth. Il tipo di hardware da immettere è quasi sempre ethernet, benché sia supportato anche token-ring, un tipo spesso presente nei sistemi IBM.

23.3.2. Versione di SUSE Linux

Per migliorare la sicurezza, la versione SUSE del server DHCP di ISC è dotata della patch non root/chroot di Ari Edelkind, in modo da consentire l'esecuzione di dhcpd con l'ID utente nobody e in un ambiente chroot (/var/lib/dhcp). A questo scopo è necessario che il file di configurazione dhcpd.conf si trovi nel percorso /var/lib/dhcp/etc. Il file viene copiato automaticamente in questa directory all'avvio dello script init.

Per controllare il comportamento del server in relazione a questa funzionalità, utilizzare le voci contenute nel file /etc/sysconfig/dhcpd. Per l'esecuzione di dhcpd in ambiente non chroot, impostare la variabile DHCPD_RUN_CHROOTED in /etc/sysconfig/dhcpd su "no".

Al fine di consentire la risoluzione dei nomi host da parte di dhcpd anche all'interno dell'ambiente chroot, è necessario copiare anche altri file di configurazione:

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

Questi file vengono copiati in /var/lib/dhcp/etc/ all'avvio dello script init. Se tali file vengono modificati automaticamente da script, ad esempio /etc/ppp/ip-up, apportare le modifiche eventualmente necessarie anche a queste copie. Se nel file di configurazione sono specificati solo indirizzi IP, anziché nomi host, non sarà necessario effettuare di tali modifiche.

Qualora nella configurazione siano presenti file aggiuntivi che devono essere copiati nell'ambiente chroot, impostarli nella variabile DHCPD_CONF_INCLUDE_FILES nel file /etc/sysconfig/dhcpd. Per assicurare il funzionamento della registrazione DHCP anche dopo un riavvio del daemon syslog-ng, è necessario aggiungere l'opzione SYSLOGD_ADDITIONAL_SOCKET_DHCP nel file /etc/sysconfig/syslog.