Le démon de protocole de configuration des hôtes dynamique est au
cœur de tout système DHCP. Ce serveur « loue » (to lease) des
adresses et surveille leur utilisation en fonction de ce qui est indiqué
dans le fichier de configuration /etc/dhcpd.conf. Grâce
aux paramètres et aux valeurs définis dans ce fichier, l'administrateur
système dispose d'un grand nombre de possibilités pour influencer comme il
le souhaite le comportement du programme. Reportez-vous à l'exemple simple
de fichier /etc/dhcpcd.conf du Exemple 27.1, « Le fichier de configuration /etc/dhcpd.conf ».
Exemple 27.1. Le fichier de configuration /etc/dhcpd.conf
default-lease-time 600; # 10 minutes
max-lease-time 7200; # 2 hours
option domain-name "kosmos.uni";
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;
}
Ce fichier de configuration simple est suffisant pour que le protocole DHCP puisse attribuer des adresses IP au réseau. Faites tout particulièrement attention aux points-virgules à la fin de chaque ligne : le démon dhcpd ne peut pas démarrer si vous les oubliez.
L'exemple de fichier ci-dessus peut se diviser en trois blocs. La
première partie définit le nombre de secondes par défaut pendant lequel une
adresse IP est « louée » à un client qui le demande
avant que ce dernier ne doive se préoccuper de demander une prolongation
(default-lease-time, temps d'attribution par défaut). Est
également indiquée ici la durée maximale pendant laquelle un ordinateur a le
droit de conserver une adresse IP attribuée par le serveur DHCP sans
avoir à demander de prolongation (max-lease-time, temps
d'attribution maximal).
Le deuxième bloc définit de façon globale un certain nombre de paramètres réseau fondamentaux :
L'option option domain-name (nom de domaine)
définit le domaine par défaut de votre réseau.
L'option option domain-name-servers (serveurs
de noms de domaine) vous permet d'indiquer jusqu'à trois serveurs DNS à
utiliser pour la résolution des adresses IP en noms d'hôtes (et
réciproquement). Idéalement, il serait préférable qu'un serveur de noms
soit déjà en service sur votre système ou dans votre réseau avant de
paramétrer le serveur DHCP. Ce serveur de noms devrait aussi définir un
nom d'hôte pour chaque adresse dynamique et réciproquement. Pour apprendre
comment mettre en place un serveur de noms, reportez-vous à Chapitre 24, La résolution de noms.
L'option option broadcast-address (adresse de
diffusion) définit l'adresse de diffusion que le client demandeur doit
utiliser.
L'option option routers (routeurs) indique au
serveur où envoyer les paquets de données qui ne peuvent pas être
distribués dans le réseau local (du fait de l'adresse de l'hôte source ou
cible ainsi que des masques de sous-réseau indiqués). Dans la plupart des
cas et en particulier pour les petits réseaux, ce routeur est également le
point d'accès à l'Internet.
L'option option subnet-mask (masque de sous-réseau) indique le masque réseau attribué au client.
Après ces réglages généraux, il faut encore définir un réseau à
l'aide d'un masque de sous-réseau. Pour finir, il faut choisir un domaine
d'adresses où le démon DHCP peut puiser pour attribuer des adresses aux
clients qui en demandent. Dans l'exemple ci-dessus, toutes les adresses
comprises entre 192.168.1.10 et
192.168.1.20 et entre 192.168.1.100 et
192.168.1.200 sont disponibles.
Après ces quelques lignes, vous devriez déjà être en mesure d'activer
le démon DHCP avec la commande
rcdhcpd start. Le serveur sera
immédiatement prêt à être utilisé. Vous pouvez aussi vérifier rapidement la
syntaxe du fichier de configuration avec
rcdhcpd check-syntax. Si vous
rencontrez un problème inattendu avec la configuration — le serveur
s'interrompt avec une erreur et ne renvoie pas le message
done au démarrage — vous trouverez la plupart du
temps des informations sur l'incident dans le journal système central
/var/log/messages ou sur la console numéro 10
(Ctrl-Alt-F10).
Pour des raisons de sécurité, le démon DHCP démarre, sous
SUSE LINUX, par défaut dans un environnement déraciné (chroot). Pour qu'il
trouve les fichiers de configuration, vous devez également copier ces
derniers dans le nouvel environnement. Il n'y a normalement pas besoin de
s'en préoccuper, car cette opération s'effectue automatiquement avec la
commande rcdhcpd start.
Comme déjà mentionné précédemment, le protocole DHCP permet aussi d'attribuer à un client, lors de chaque demande, une adresse donnée, bien précise. Ces attributions explicites d'adresses ont la priorité sur les adresses dynamiques extraites de la réserve. Contrairement aux adresses dynamiques, les informations d'adresses fixes n'expirent pas comme c'est le cas lorsqu'il n'y a plus assez d'adresses disponibles et qu'une nouvelle répartition est nécessaire.
Pour identifier un client défini à l'aide d'une adresse
statique, dhcpd utilise l'adresse matérielle qui est
un numéro unique dont dispose chaque périphérique réseau, défini de manière
fixe et composé de six paires d'octets (par exemple,
00:00:45:12:EE:F4). Si le fichier de configuration de
Exemple 27.1, « Le fichier de configuration /etc/dhcpd.conf » est complété par une définition semblable à
celle de Exemple 27.2, « Complément au fichier de configuration », dhcpd enverra quoi qu'il
arrive les mêmes données au client concerné.
Exemple 27.2. Complément au fichier de configuration
host terre {
hardware ethernet 00:00:45:12:EE:F4;
fixed-address 192.168.1.21;
}
On indique tout d'abord le nom du client à définir
(host nom de machine, ici
terre) et, sur la ligne suivante, son
adresse MAC. Sur les ordinateurs sous Linux, cette adresse peut être
déterminée à l'aide de la commande ifstatus suivie du
périphérique réseau (par exemple eth0). Vous devez, le cas
échéant, d'abord activer la carte :
ifup eth0. Vous obtenez alors un
affichage de la forme :
link/ether 00:00:45:12:EE:F4
Dans notre exemple, le client dont la carte réseau possède
l'adresse MAC 00:00:45:12:EE:F4 se verra donc
attribuer l'adresse IP 192.168.1.21 ainsi que le nom d'hôte
terre. De nos jours, le matériel utilisé est en général de type
ethernet, même si la technologie
token-ring, fréquente notamment sur les systèmes IBM,
est également prise en charge.
Pour des raisons de sécurité, la version pour SUSE du serveur
DHCP publié par l'ISC contient le correctif non-root/chroot d'Ari Edelkind.
Ainsi, dhcpd s'exécute en tant qu'utilisateur nobody et dans un environnement déraciné
(/var/lib/dhcp). Le fichier de configuration
dhcp.conf doit pour cela se trouver dans
/var/lib/dhcp/etc ; il y sera automatiquement
copié par le script d'initialisation lors du démarrage.
On contrôle le comportement du serveur pour cette fonctionnalité
grâce au fichier /etc/sysconfig/dhcpd. Pour démarrer
dhcpd sans environnement déraciné, donnez la valeur « no » à la
variable DHCPD_RUN_CHROOTED du fichier
/etc/sysconfig/dhcpd.
Pour que dhcpd puisse également résoudre les noms d'hôtes dans l'environnement déraciné, il faut copier quelques fichiers de configuration supplémentaires. Il s'agit de :
/etc/localtime
/etc/host.conf
/etc/hosts
/etc/resolv.conf
Ces fichiers sont copiés dans
/var/lib/dhcp/etc/ lorsque le script d'initialisation
du système est lancé. Veillez à ce que les modifications soient propagées
s'ils sont modifiés dynamiquement par des scripts comme
/etc/ppp/ip-up. En revanche, il n'y a aura aucun
problème si l'on utilise uniquement des adresses IP dans le fichier de
configuration à la place des noms d'hôtes.
Si, dans votre configuration, vous devez copier d'autres fichiers
dans l'environnement déraciné, indiquez-les avec le paramètre
DHCPD_CONF_INCLUDE_FILES dans le fichier
etc/sysconfig/dhcpd. Pour que le démon dhcp puisse
continuer à enregistrer le journal à partir de l'environnement déraciné
même si le démon syslog est redémarré, ajoutez le paramètre "-a
/var/lib/dhcp/dev/log" à la variable
SYSLOGD_PARAMS du fichier
/etc/sysconfig/syslog.