10.4. Configuration d'un serveur DHCP Multi-hôtes

Un serveur DHCP multi-hôtes sert plusieurs réseaux, c'est-à-dire, plusieurs sous-réseaux. Les exemples dans les sections suivantes décrivent comment configurer un serveur DHCP pour qu'il puisse desservir plusieurs réseaux, sélectionner les interface réseau à écouter, et comment définir les paramètres réseau pour les systèmes qui se déplacent entre les réseaux.
Avant de procéder à tout changement, sauvegarder le fichier /etc/dhcp/dhcpd.conf existant.
Le démon DHCP n'écoutera que les interfaces pour lesquelles il pourra trouver une déclaration de sous-réseau dans le fichier /etc/dhcp/dhcpd.conf.
Voici un fichier de base /etc/dhcp/dhcpd.conf, pour un serveur qui a deux interfaces de réseau, eth0 dans un réseau 10.0.0.0/24 et eth1 dans un réseau 172.16.0.0/24. Plusieurs déclarations de sous-réseau permettent de définir des paramètres différents pour plusieurs réseaux :
default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
sous-réseau 10.0.0.0 masque réseau 255.255.255.0;
Une déclaration de sous-réseau est obligatoire pour tout réseau que votre serveur DHCP déssert. Plusieurs sous-réseaux nécessitent plusieurs déclarations de sous-réseaux. Si le serveur DHCP n'a pas d'interface réseau faisant partie de la plage d'une déclaration de sous-réseau, le serveur DHCP ne desservira pas de ce réseau.
S'il n'y a qu'une déclaration de sous-réseauaucune interface de réseau qui se situe dans la plage de ce sous-réseau, le démon DHCP échouera au démarrage, et une erreur sera journalisée dans le fichier /var/log/messages :
dhcpd: No subnet declaration for eth0 (0.0.0.0).
dhcpd: ** Ignoring requests on eth0.  If this is not what
dhcpd:    you want, please write a subnet declaration
dhcpd:    in your dhcpd.conf file for the network segment
dhcpd:    to which interface eth1 is attached. **
dhcpd:
dhcpd:
dhcpd: Not configured to listen on any interfaces!
option subnet-mask 255.255.255.0;
L'option option subnet-mask définit un masque de sous-réseau, et remplace la valeur du masque de réseau dans la déclaration du sous-réseau. Dans les cas simples, les valeurs du sous-réseau et du masque de réseau correspondent aux mêmes valeurs.
option routers 10.0.0.1;
L'option option routers définit la passerelle par défaut du sous-réseau. Cela est exigé pour que les systèmes puissent atteindre les réseaux internes sur un sous-réseau différent, ainsi que sur des réseaux externes.
range 10.0.0.5 10.0.0.15;
L'option range (plage) se réfère au pool d'adresses IP disponibles. Une adresse faisant partie d'une plage de valeurs IP indiquée est assignée aux systèmes.
Pour plus d'informations, consulter la page man dhcpd.conf(5).

Avertissement

Pour éviter une mauvaise configuration quand le serveur DHCP donne des adresses IP d’une plage d’adresses IP à un autre segment de Ethernet physique, assurez-vous de ne pas confiner plusieurs sous-réseaux dans une déclaration de réseau partagé.

10.4.1. Configuration de l'hôte

Avant de procéder à tout changement, sauvegarder les fichiers /etc/dhcp/dhcpd.conf et /etc/dhcp/dhcpd.conf existants.
Configurer un système unique pour plusieurs réseaux

L'exemple /etc/dhcp/dhcpd.conf suivant crée deux sous-réseaux et configure une adresse IP pour le même système, selon le réseau auquel elle se connecte :

default-lease-time 600;
max-lease-time 7200;
subnet 10.0.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 10.0.0.1;
	range 10.0.0.5 10.0.0.15;
}
subnet 172.16.0.0 netmask 255.255.255.0 {
	option subnet-mask 255.255.255.0;
	option routers 172.16.0.1;
	range 172.16.0.5 172.16.0.15;
}
host example0 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 10.0.0.20;
}
host example1 {
	hardware ethernet 00:1A:6B:6A:2E:0B;
	fixed-address 172.16.0.20;
}
hôte example0
La déclaration host définit des paramètres spécifiques pour un système unique, comme une adresse IP. Pour configurer des paramètres spécifiques sur plusieurs hôtes, utiliser des déclarations d'hôte.
La plupart des clients DHCP ignorent le nom dans les déclarations d'hôte, et à ce titre, ce nom peut être n'importe quoi, tant que c'est différent des autres déclarations d'hôte. Pour configurer le même système sur des réseaux multiples, utilisez un nom différent pour chaque déclaration d'hôte, sinon le démon DHCP ne démarrera pas. Les systèmes sont identifiés par l'option hardware ethernet, et non pas le nom dans la déclaration de l'hôte.
hardware ethernet 00:1A:6B:6A:2E:0B;
L'option hardware ethernet identifie le système. Pour trouver cette adresse, exécuter la commande ip link.
fixed-address 10.0.0.20;
L'option fixed-address assigne une adresse IP au système spécifié par l'option hardware ethernet. Cette adresse doit se trouver en dehors de la plage d'adressses IP spécifiée par l'option range.
Si les énoncés d'option ne se terminent pas par un point virgule, le démon DHCP ne démarrera pas, et une errreur ressemblant à ce qui suit sera journalisée dans /var/log/messages :
/etc/dhcp/dhcpd.conf line 20: semicolon expected.
dhcpd: }
dhcpd: ^
dhcpd: /etc/dhcp/dhcpd.conf line 38: unexpected end of file
dhcpd:
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting
Configurer des systèmes avec des interfaces de réseaux multiples

Les déclarations suivantes d'hôte configurent un système unique, qui possède plusieurs interfaces de réseau, pour que chaque interface reçoive la même adresse IP. Cette configuration ne fonctionnera pas si les deux interfaces réseau sont connectées au même réseau en même temps :

host interface0 {
	hardware ethernet 00:1a:6b:6a:2e:0b;
	fixed-address 10.0.0.18;
}
host interface1 {
	hardware ethernet 00:1A:6B:6A:27:3A;
	fixed-address 10.0.0.18;
}
Pour cet exemple, interface0 est la première interface réseau, et interface1 est la seconde interface. Les différentes options hardware ethernet identifient chaque interface.
Si un tel système se connecte à un autre réseau, ajouter plus de déclarations d'hôte, sans oublier :
  • d'assigner une fixed-address valide au réseau auquel l'hôte se connecte.
  • de rendre le nom de déclaration d'host unique.
Quand un nom non unique est donnée dans une déclaration d'hôte, le démon DHCP ne démarre pas, et l'erreur suivante est journalisée dans /var/log/messages :
dhcpd: /etc/dhcp/dhcpd.conf line 31: host interface0: already exists
dhcpd: }
dhcpd: ^
dhcpd: Configuration file errors encountered -- exiting
L'erreur vient du fait d'avoir plusieurs déclarations d'host interface0 définies dans /etc/dhcp/dhcpd.conf.