Serveur DHCP et relais DHCP sous Debian : Kea et dhcrelay
Un seul serveur DHCP pour plusieurs réseaux, c'est le rôle du relais. Sur la Debian actuelle, le serveur n'est plus ISC DHCP mais Kea, et le relais demande un choix explicite.
Un client DHCP qui démarre n'a pas encore d'adresse : il diffuse sa demande en broadcast sur son réseau local, et ce broadcast ne traverse pas un routeur. Sans aide, il faudrait donc un serveur DHCP par réseau. Le relais DHCP (DHCP relay) règle le problème : posé sur le routeur ou sur une machine présente dans le réseau des clients, il reçoit la diffusion et la transmet en unicast au serveur central.
Cette page monte les deux rôles sur Debian : un serveur qui distribue les adresses, et un relais qui lui fait suivre les demandes d'un second réseau. Testez sur des machines de lab, et sauvegardez la configuration existante avant de toucher un DHCP de production : un serveur mal réglé peut couper l'accès réseau de tous les postes.
ISC DHCP n'est plus maintenu : ce que cela change
Les anciens tutoriels pour Debian 9 utilisaient le paquet isc-dhcp-server. Deux choses ont changé depuis.
- Debian 9 « stretch » est sortie du support de sécurité en juillet 2020 et du LTS fin juin 2022. La version stable actuelle est Debian 13 « trixie », selon la page des versions de Debian.
- ISC DHCP a atteint sa fin de maintenance fin 2022 : l'ISC indique que les versions 4.4.3-P1 et 4.1-ESV-R16-P2, publiées le 5 octobre 2022, sont les dernières. Pour le serveur, l'ISC recommande Kea. Pour le relais, la même page précise que le relais ISC n'est plus maintenu et ne devrait plus être utilisé en production, et que Kea ne contient ni client ni relais.
Concrètement, sur Debian 13 au 12 octobre 2026, l'archive Debian propose encore isc-dhcp-server et isc-dhcp-relay en version 4.4.3-P1, mais ces paquets n'apparaissent plus dans la branche de test. Le serveur se monte donc avec Kea (kea-dhcp4-server). Pour le relais, il reste deux options :
| Option | Avantage | Limite |
|---|---|---|
isc-dhcp-relay (dhcrelay) sur Debian 13 | simple, paquet Debian | code non maintenu en amont depuis 2022 |
| fonction de relais du routeur ou du pare-feu | pas de machine en plus | dépend du matériel ou du logiciel en place |
Pour un lab, dhcrelay reste le moyen le plus direct de comprendre le mécanisme ; c'est lui que la suite utilise.
La topologie du lab
Deux réseaux privés, reliés par une machine Debian à deux interfaces qui joue le routeur et le relais.
| Hôte | Rôle | Interface | Adresse |
|---|---|---|---|
| srv-dhcp01 | serveur DHCP Kea | ens18 | 192.168.10.5 |
| rtr-relay01 | routeur + relais DHCP | ens18 (réseau serveurs) | 192.168.10.1 |
| rtr-relay01 | routeur + relais DHCP | ens19 (réseau clients) | 192.168.20.1 |
| client | poste en DHCP | ens18 | adresse reçue dans 192.168.20.0/24 |
Le serveur doit pouvoir joindre 192.168.20.1 : la RFC 2131 précise que, lorsque le champ giaddr d'une demande n'est pas nul, le serveur envoie sa réponse au relais dont l'adresse figure dans ce champ. Sur srv-dhcp01, la passerelle par défaut (ou une route vers 192.168.20.0/24) doit donc être 192.168.10.1.
Installer et configurer le serveur Kea
Sur srv-dhcp01, installez le serveur DHCPv4 de Kea :
apt update
apt install kea-dhcp4-server
Le paquet Debian installe le fichier /etc/kea/kea-dhcp4.conf et le service kea-dhcp4-server. Le fichier fourni est un exemple rempli de valeurs de démonstration (192.0.2.0/24, example.org) : sauvegardez-le, puis remplacez-le.
Un fichier minimal pour le réseau relayé
Kea se configure en JSON. Le sous-réseau 192.168.20.0/24 n'est pas directement branché sur le serveur : Kea le choisit grâce au champ giaddr posé par le relais. La documentation de Kea explique que, pour un message relayé, c'est ce giaddr qui sert à sélectionner le sous-réseau du client.
{
"Dhcp4": {
"interfaces-config": {
"interfaces": [ "ens18" ]
},
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/dhcp4.leases"
},
"valid-lifetime": 3600,
"subnet4": [
{
"id": 1,
"subnet": "192.168.20.0/24",
"pools": [ { "pool": "192.168.20.100 - 192.168.20.200" } ],
"option-data": [
{ "name": "routers", "data": "192.168.20.1" },
{ "name": "domain-name-servers", "data": "192.168.10.11" }
]
}
]
}
}
Les points à retenir :
interfacesliste l'interface du serveur qui recevra les paquets ;routersdonne aux clients leur passerelle, c'est-à-dire l'adresse du relais sur leur réseau ;domain-name-serverspointe vers votre DNS ; dans ce lab, celui monté avec BIND 9 ;- si le serveur ne sert que des clients relayés, la documentation de Kea conseille d'ajouter
"dhcp-socket-type": "udp"dansinterfaces-config.
Valider avant de redémarrer
kea-dhcp4 -t vérifie le fichier et signale la première erreur, sans lancer le service. Une virgule en trop suffit à rendre le JSON invalide.
kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
systemctl restart kea-dhcp4-server
systemctl status kea-dhcp4-server
Installer le relais dhcrelay
Sur rtr-relay01, installez le relais :
apt install isc-dhcp-relay
À l'installation, le paquet pose trois questions : les serveurs vers lesquels relayer, les interfaces à écouter et des options supplémentaires. Les réponses sont écrites dans /etc/default/isc-dhcp-relay, que l'on peut aussi modifier à la main :
SERVERS="192.168.10.5"
INTERFACES="ens19 ens18"
OPTIONS=""
Indiquez les deux interfaces : celle du réseau des clients, où arrivent les demandes, et celle du réseau du serveur, où reviennent les réponses. Puis redémarrez le service :
systemctl restart isc-dhcp-relay
Les options utiles de dhcrelay
La page de manuel dhcrelay(8) de Debian détaille les options. Les plus utiles dans un lab :
| Option | Effet |
|---|---|
-i | interface d'écoute (répétable) |
-iu / -id | interface amont (vers le serveur) / aval (vers les clients) |
-a | ajoute l'option d'agent relais (Circuit ID = nom de l'interface) |
-d | reste au premier plan, pratique pour observer |
Selon le manuel, sans interface indiquée, dhcrelay tente d'écouter sur toutes les interfaces capables de broadcast ; mieux vaut les nommer.
Vérifier le fonctionnement
- Sur le client, renouvelez le bail (débranchez-rebranchez l'interface virtuelle ou redémarrez le réseau) puis lisez l'adresse avec
ip a. Elle doit être dans 192.168.20.100–200, avec la passerelle 192.168.20.1. - Sur le serveur, consultez les journaux avec
journalctl -u kea-dhcp4-serveret cherchez l'attribution du bail au client. - Sur le relais,
journalctl -u isc-dhcp-relaysignale les erreurs de démarrage, par exemple une interface introuvable.
Si rien n'arrive au serveur, vérifiez dans cet ordre : le relais écoute-t-il la bonne interface, le pare-feu laisse-t-il passer l'UDP 67 (le port serveur selon la RFC 2131), et le serveur a-t-il une route vers 192.168.20.0/24 ? Si le serveur reçoit la demande mais ne répond pas, le sous-réseau déclaré ne correspond sans doute pas au giaddr.
Pour aller plus loin
Sous Windows Server, la haute disponibilité DHCP passe par le basculement DHCP sous Windows Server, une logique différente de celle de Kea. Pour administrer le serveur Debian depuis un navigateur, voyez comment installer Cockpit sur Debian. Les commandes ip, systemctl et journalctl utilisées ici sont détaillées dans la liste des commandes Linux, et les autres services réseau dans la rubrique Serveurs Linux. Tous les guides sont rassemblés sur la page d'accueil des tutoriels d'administration système.
Questions fréquentes
À quoi sert un relais DHCP ?
Les demandes DHCP partent en broadcast, et un routeur ne transmet pas les broadcasts. Le relais écoute ces demandes sur le réseau des clients et les renvoie en unicast vers un serveur DHCP situé sur un autre réseau. Un seul serveur peut ainsi servir plusieurs réseaux.
ISC DHCP fonctionne-t-il encore sur Debian 13 ?
Les paquets existent encore dans Debian 13, mais l'ISC a cessé la maintenance fin 2022 et recommande Kea pour le serveur. Ils ne figurent plus dans la branche de test de Debian. Pour une nouvelle installation, partez sur Kea.
Kea fournit-il un relais DHCP ?
Non. L'ISC indique que la distribution Kea ne contient actuellement ni client ni relais. Le relais se fait donc avec dhcrelay, ou avec la fonction de relais d'un routeur ou d'un pare-feu.
Comment Kea sait-il quel sous-réseau attribuer à un client relayé ?
Il lit le champ giaddr, l'adresse que le relais inscrit dans la demande. La documentation de Kea indique que ce champ sert à sélectionner le sous-réseau. L'adresse du relais côté clients doit donc appartenir au sous-réseau déclaré.
Faut-il ouvrir des ports sur le pare-feu ?
Oui. Selon la RFC 2131, les messages vers un serveur utilisent le port UDP 67 et les messages vers un client le port UDP 68. Entre le relais et le serveur, l'UDP 67 doit passer dans les deux sens.