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. Nell'Esempio 43.1, «File di configurazione /etc/dhcpd.conf» è riportato un esempio di base del file /etc/dhcpd.conf.
Esempio 43.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 verrà avviato.
Il file di esempio precedente 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:
La riga option domain-name definisce il dominio di default della rete.
Tramite la voce option domain-name-servers vengono specificati fino a tre valori utilizzabili dal server DNS per risolvere gli indirizzi IP in nomi host e viceversa. Prima di configurare il server DHCP, è consigliabile configurare un server dei nomi nel computer in uso o in un altro computer della rete, il quale dovrà inoltre definire un nome host per ogni indirizzo dinamico e viceversa. Per informazioni sulla configurazione del server dei nomi, leggere il Capitolo 40, DNS: Domain Name System.
La riga option broadcast-address definisce l'indirizzo di diffusione utilizzato dal client richiedente.
Mediante la riga option routers viene indicata al server la destinazione dei pacchetti di dati che non possono essere consegnati a un host nella rete locale, in base agli indirizzi host di origine e di destinazione e alla maschera di sottorete specificati. Nella maggior parte dei casi, specialmente nelle reti di piccole dimensioni, questo router corrisponde al gateway Internet.
Mediante la riga option subnet-mask viene specificata la maschera di rete assegnata ai client.
L'ultima sezione del file è riservata alla definizione di 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. In questo esempio è possibile assegnare ai client un indirizzo compreso nell'intervallo tra 192.168.1.10 e 192.168.1.20 e 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.
Come accennato in precedenza, è possibile utilizzare DHCP per assegnare un indirizzo statico predefinito a un client specifico per ogni richiesta. Gli indirizzi assegnati in modo esplicito hanno sempre la priorità rispetto agli indirizzi dinamici assegnati da un pool. Un indirizzo statico, inoltre, 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 43.2, «Aggiunte al file di configurazione», al file di configurazione dell'Esempio 43.1, «File di configurazione /etc/dhcpd.conf», il daemon DHCP assegnerà sempre lo stesso set di dati al client corrispondente in qualsiasi circostanza.
Esempio 43.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. Sugli host Linux questo indirizzo può essere determinato con il comando ifstatus seguito dal dispositivo di rete, ad esempio eth0. Attivare prima la scheda di rete, se necessario, mediante ifup 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.
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, specificarli 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, è necessario aggiungere l'opzione "-a /var/lib/dhcp/dev/log" in SYSLOGD_PARAMS nel file /etc/sysconfig/syslog.