Configuration d’un relais DHCP sous CentOS
Nous avions évoqué plus tôt dans ce cours la notion de relais DHCP, maintenant, nous allons voir comment configurer un relais DHCP sous CentOS par l'intermédiaire du service dhcrelay.
L’agent de relais DHCP (également appelé dhcrelay), permet de relayer les requêtes DHCP et BOOTP d’un sous-réseau n’ayant aucun serveur DHCP, vers un ou plusieurs sous-réseaux disposant d’un tel service. Lorsqu’un client DHCP réclame des informations, l’agent de relais transfère la requête à la liste de serveurs DHCP qu’il connaît. Ainsi, en retour, lorsqu’un serveur DHCP répond à ce genre de requête, celle-ci est diffusée sur le réseau ayant envoyé la requête d’origine.
L’agent de relais attend les requêtes DHCP sur l’ensemble de ses interfaces, à moins qu’une d’entre elles ne soit privilégiée et mentionnée dans le fichier /etc/sysconfig/dhcrelay, avec la directive INTERFACES. L’installation est intégrée au package principal DHCP.
Cet agent s’appuie sur le service dhcrelay que l’on peut activer ou désactiver de la machine via les commandes standards :
# service dhcrelay {stop | start}
Ou, pour une distribution Centos7 :
# systemctl {stop | start} dhcrelay
Il est bien sûr possible de disposer des fonctionnalités de serveur DHCP et de relais, simultanément sur la même machine. Mais, deux prérequis sont alors à vérifier :
- La machine dispose de deux interfaces réseau : l’une pour le serveur l’autre pour le relais.
- Le serveur doit alors autoriser le routage des paquets
Dans ce dernier cas, il faut alors mettre en place l’option du noyau suivante :
net.ipv4.ip_forward = 1
Il faut alors soit rebooter la machine, soit exécuter la commande ci-dessous, permettant de rendre cette modification permanente :
# sysctl -p
En ce qui concerne le premier point, la machine est alors configurée comme un routeur et possède alors deux interfaces réseau, au minimum (on peut s’en assurer en listant le nombre de fichiers ‘ifcfg-‘ dans /etc/sysconfig/network-scripts. Il est conseillé d’utiliser des interfaces réseau de type statique (et n’utilisant pas le serveur DHCP). Une fois ces interfaces activées, on devrait visualiser la table de routage suivante :
Durant l’installation du package dhcp-relay, l’assistant nécessite deux informations essentielles pour sa configuration:
- L’adresse IP du (ou des) serveur(s) DHCP connu(s)
- L’interface réseau sur laquelle le relais devra écouter
Au niveau de la machine hébergeant le service dhcrelay, il faut alors renseigner le fichier /etc/sysconfig/dhcrelay en y mentionnant les options suivantes :
# Adresse du serveur DHCP
SERVERS="192.168.1.1"
# Interface(s) utilisée(s) par le relais DHCP
INTERFACES="eth2"
On peut alors démarrer, dans l’ordre, le serveur DHCP et le daemon dhcrelay à l’aide des commandes suivantes :
# systemctl restart dhcpd
# systemctl start dhcrelay
Au niveau du client, l’arrêt et redémarrage de l’interface réseau concernée permet de vérifier que la concession d’une nouvelle adresse IP fonctionne correctement. On peut aussi exécuter une requête de type dhclient. La commande dhcrelay permet d’interagir avec les interfaces en écoute et le ou les serveur(s) distribuant les adresses IP disponibles. Cette commande possède un certain nombre d’options :
De son point de vue, Le client DHCP n’a pas conscience de traiter avec un agent relais, mais, pense au contraire, qu’un serveur réel est présent sur son segment. On peut représenter cela de la façon suivante :
IMPORTANT : il arrive que certains clients DHCP (particulièrement ceux du monde Microsoft Windows), attendent une réponse du serveur depuis l’adresse 255.255.255.255. Cependant, le système GNU/Linux a tendance à modifier cette adresse pour l’adapter à celle de diffusion du sous-réseau concerné. Dans l’exemple précédent : 172.16.1.255. Dans un tel cas, il suffit de changer le comportement du serveur DHCP en ajoutant une route pour l’adresse attendue :
# route add –host 255.255.255.255 dev eth2