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 43.1, « Le fichier de configuration /etc/dhcpd.conf ».
Exemple 43.1. Le fichier de configuration /etc/dhcpd.conf
default-lease-time 600; # 10 minutes
max-lease-time 7200; # 2 heures
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 ci-dessus 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 ligne option domain-name définit le domaine par défaut de votre réseau.
L'entrée option domain-name-servers vous permet de spécifier jusqu'à trois valeurs correspondant aux serveurs DNS utilisés pour la résolution des adresses IP en noms d'hôte et inversement. L'idéal est de configurer un serveur de noms sur votre machine ou ailleurs sur votre réseau avant de configurer DHCP. Ce serveur de noms doit également définir un nom d'hôte pour chaque adresse dynamique et inversement. Pour savoir comment configurer votre propre serveur de noms, consultez le Chapitre 40, La résolution de noms.
La ligne option broadcast-address définit l'adresse de diffusion que le client demandeur doit utiliser.
option routers permet d'indiquer au serveur où envoyer les paquets de données qui ne peuvent pas être fournis à un hôte sur le réseau local (selon l'adresse de l'hôte source et cible et le masque de sous-réseau fourni). Généralement, et notamment dans les réseaux de plus petite taille, ce routeur est identique à la passerelle Internet.
option subnet-mask vous permet d'indiquer le masque réseau assigné aux clients.
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 cet exemple, 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.
Comme indiqué précédemment, le protocole DHCP permet également d'assigner une adresse statique prédéfinie à un client spécifique pour chaque requête. Les adresses assignées explicitement sont toujours prioritaires sur les adresses dynamiques issues de l'ensemble. En outre, une adresse statique n'arrive jamais à expiration, contrairement à une adresse dynamique. C'est le cas 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 43.2, « Ajouts au fichier de configuration », sont ajoutées au fichier de configuration de l'Exemple 43.1, « Le fichier de configuration /etc/dhcpd.conf », le démon DHCP assigne toujours le même ensemble de données au client correspondant dans toutes les circonstances.
Exemple 43.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, cette adresse peut être déterminée par la commande ifstatus suivie du périphérique réseau (par exemple, eth0). Si nécessaire, activez d'abord la carte réseau à l'aide de la commande ifup 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.
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, vous devez ajouter l'option -a /var/lib/dhcp/dev/log sous SYSLOGD_PARAMS dans le fichier /etc/sysconfig/syslog.