23.3. Le démon dhcpd du serveur DHCP

L'élément central de tout système DHCP est le démon de protocole de configuration dynamique d'hôtes. Ce serveur loue des adresses et observe leur utilisation, en fonction des paramètres définis dans le fichier de configuration /etc/dhcpd.conf. Pour influencer le comportement du programme de différentes façons, l'administrateur système peut modifier les paramètres et les valeurs de ce fichier. Vous trouverez une illustration simple de fichier /etc/dhcpd.conf dans l'Exemple 23.1, « Le fichier de configuration /etc/dhcpd.conf ».

Exemple 23.1. Le fichier de configuration /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;
 }

Ce fichier de configuration simple est suffisant pour permettre au serveur DHCP d'assigner des adresses IP dans le réseau. Assurez-vous qu'un point-virgule est inséré à la fin de chaque ligne. Si ce n'est pas le cas, dhcpd ne démarre pas.

L'exemple de fichier proposé peut être divisé en trois sections. La première détermine la durée du bail par défaut (en secondes) d'une adresse IP louée à un client demandeur (default-lease-time). Une fois ce délai écoulé, il doit demander un renouvellement. Cette section contient également une indication de la période maximale pendant laquelle une machine peut conserver une adresse IP assignée par le serveur DHCP sans demander de renouvellement (max-lease-time).

Dans la deuxième partie, des paramètres réseau de base sont définis au niveau global :

La dernière section du fichier permet de définir un réseau, y compris un masque de sous-réseau. Pour terminer, indiquez la plage d'adresses que le démon DHCP doit utiliser pour assigner des adresses IP aux clients intéressés. Dans l'Exemple 23.1, « Le fichier de configuration /etc/dhcpd.conf », les clients peuvent utiliser 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.

Après avoir modifié ces quelques lignes, vous êtes en mesure d'activer le démon DHCP à l'aide de la commande rcdhcpd start. Il est prêt à être utilisé immédiatement. Utilisez la commande rcdhcpd check-syntax pour effectuer une rapide vérification de la syntaxe. En cas de problème inattendu concernant votre configuration (le serveur est interrompu et indique une erreur ou ne retourne pas le message done au démarrage), vous trouverez la cause du dysfonctionnement dans le journal système principal (/var/log/messages) ou sur la console numéro 10 (Ctrl-Alt-F10).

Dans un système SUSE Linux par défaut, le démon DHCP est démarré dans un environnement chroot pour des raisons de sécurité. Vous devez copier les fichiers de configuration dans l'environnement chroot pour que le démon puisse les trouver. En fait, vous n'avez généralement rien à faire puisque la commande rcdhcpd start copie automatiquement les fichiers.

23.3.1. Clients avec adresses IP fixes

Vous pouvez également utiliser le protocole DHCP pour assigner une adresse statique prédéfinie à un client spécifique. Les adresses assignées explicitement sont toujours prioritaires sur les adresses dynamiques issues de l'ensemble. Une adresse statique n'arrive jamais à expiration, contrairement à une adresse dynamique. Cela se produit par exemple lorsqu'il n'y a pas assez d'adresses disponibles et que le serveur doit les redistribuer aux clients.

Pour identifier un client configuré avec une adresse statique, dhcpd utilise l'adresse matérielle. Il s'agit d'un numéro fixe et unique sur le réseau, composé de six paires d'octets pour l'identification de tous les périphériques réseau (par exemple, 00:00:45:12:EE:F4). Si les lignes correspondantes, comme celles de l'Exemple 23.2, « Ajouts au fichier de configuration », sont ajoutées au fichier de configuration de l'Exemple 23.1, « Le fichier de configuration /etc/dhcpd.conf », le démon DHCP assigne toujours le même ensemble de données au client correspondant.

Exemple 23.2. Ajouts au fichier de configuration

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

Le nom du client respectif (host nom d'hôte, ici earth) apparaît sur la première ligne et l'adresse MAC apparaît sur la suivante. Sur les hôtes Linux, recherchez cette adresse MAC à l'aide de la commande ip link show suivie du périphérique réseau (par exemple, eth0). Vous obtenez alors un résultat semblable à :

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

Dans l'exemple précédent, l'adresse IP 192.168.1.21 et le nom d'hôte earth sont assignés automatiquement au client dont la carte réseau possède l'adresse MAC 00:00:45:12:EE:F4. Le type de matériel à saisir est ethernet dans la plupart des cas, même si token-ring, que l'on trouve fréquemment sur les systèmes IBM, est également pris en charge.

23.3.2. La version SUSE Linux

Pour améliorer la sécurité, la version SUSE du serveur DHCP d'ISC contient le correctif non-root/chroot d'Ari Edelkind. Cela permet d'exécuter dhcpd avec l'ID utilisateur nobody dans un environnement chroot (/var/lib/dhcp). Pour que cela soit possible, le fichier de configuration dhcpd.conf doit être situé dans /var/lib/dhcp/etc. Au démarrage, le script d'initialisation copie automatiquement le fichier dans ce répertoire.

Pour contrôler le comportement du serveur concernant cette fonction, utilisez les entrées du fichier /etc/sysconfig/dhcpd. Pour exécuter dhcpd sans l'environnement chroot, définissez la variable DHCPD_RUN_CHROOTED de /etc/sysconfig/dhcpd sur « no ».

Pour permettre à dhcpd de résoudre les noms d'hôte, y compris à partir de l'environnement chroot, vous devez également copier d'autres fichiers de configuration :

  • /etc/localtime

  • /etc/host.conf

  • /etc/hosts

  • /etc/resolv.conf

Ces fichiers sont copiés dans /var/lib/dhcp/etc/ au démarrage du script d'initialisation. Tenez compte de ces copies pour toute modification qu'elles requièrent si elles sont modifiées de manière dynamique par des scripts tels que /etc/ppp/ip-up. Toutefois, vous n'avez pas à vous en inquiéter si le fichier de configuration indique uniquement des adresses IP (et pas de noms d'hôte).

Si votre configuration comporte des fichiers supplémentaires qui doivent être copiés dans l'environnement chroot, indiquez-les sous la variable DHCPD_CONF_INCLUDE_FILES dans le fichier /etc/sysconfig/dhcpd. Pour vous assurer que la fonction de journalisation de DHCP continue à fonctionner après un redémarrage du démon syslog-ng, vous devez ajouter l'entrée SYSLOGD_ADDITIONAL_SOCKET_DHCP dans le fichier /etc/sysconfig/syslog.