27.3. Le serveur DHCP dhcpd

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 :

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.

27.3.1. Clients avec adresses IP fixes

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.

27.3.2. Particularités propres à SUSE LINUX

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.


SUSE LINUX Guide de l'administrateur 9.2