15/11/2024

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
author avatar
Philippe PIERRE
A exercé de nombreuses années en tant qu'administrateur de base de données et comme administrateur Système Unix/Linux. Il a enseigné les réseaux au CNAM (Paris). Aujourd'hui, employé en tant qu'ingénieur infrastructure, au sein d'un laboratoire pharmaceutique et administrant un cluster de calculs HPC, il connaît parfaitement les environnements GNU/Linux dans le cadre d'une entreprise et des systèmes de haute disponibilité. Il aime partager son expérience.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.