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.

Schéma : le broadcast DHCP du client 192.168.20.0/24 relayé par rtr-relay01 en unicast UDP 67 vers Kea sur srv-dhcp01 192.168.10.5, réponse au giaddr
Illustration schématique — ne reproduit aucune interface réelle.

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.

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 :

OptionAvantageLimite
isc-dhcp-relay (dhcrelay) sur Debian 13simple, paquet Debiancode non maintenu en amont depuis 2022
fonction de relais du routeur ou du pare-feupas de machine en plusdé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ôteRôleInterfaceAdresse
srv-dhcp01serveur DHCP Keaens18192.168.10.5
rtr-relay01routeur + relais DHCPens18 (réseau serveurs)192.168.10.1
rtr-relay01routeur + relais DHCPens19 (réseau clients)192.168.20.1
clientposte en DHCPens18adresse 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 :

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 :

OptionEffet
-iinterface d'écoute (répétable)
-iu / -idinterface amont (vers le serveur) / aval (vers les clients)
-aajoute l'option d'agent relais (Circuit ID = nom de l'interface)
-dreste 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

  1. 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.
  2. Sur le serveur, consultez les journaux avec journalctl -u kea-dhcp4-server et cherchez l'attribution du bail au client.
  3. Sur le relais, journalctl -u isc-dhcp-relay signale 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.