Debian : Installer et configurer le serveur DHCP avec kea
Table des matières
Dynamic Host Configuration Protocol (DHCP) est un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres IP d’une station, notamment en lui affectant automatiquement sa configuration IP.
DHCP peut aussi configurer l’adresse de la passerelle par défaut ainsi que des serveurs de noms DNS par exemple.
Le serveur DHCP historique ISC DHCP server n'est plus maintenu depuis 2022.
Dans cet article, nous allons voir comment configurer ce service avec kea, son remplaçant.
L'ensemble des actions est à effectuer en tant que root.
On va installer le service :
Le service est démarré automatiquement sur Debian.
Vu qu'il n'est pas configuré, on va le stopper :
Si on n'utilise pas l'IPv6 dans notre réseau, on peut désactiver le service en question :
Le fichier de configuration du DHCP en IPv4 est /etc/kea/kea-dhcp4.conf.
On renomme le fichier original :
On va créer le nôtre :
Ci-dessous, un exemple de fichier de configuration. C'est une syntaxe en JSON.
Il est commenté, ça devrait suffire pour le comprendre.
Il est possible de vérifier la syntaxe du fichier via :
On démarre ensuite le serveur DHCP :
On peut consulter le fichier de log précédemment défini :
On peut repérer le "DORA" DHCP (DISCOVER, OFFER, REQUEST, ACK) :
Bien que kea puisse stocker dans une base de données les adresses IP affectées, on n'a rien configuré donc les infos sont stockées dans un simple fichier CSV : /var/lib/kea/kea-leases4.csv
Voici ce qu'il contient dans mon exemple :
Introduction
Dynamic Host Configuration Protocol (DHCP) est un protocole réseau dont le rôle est d’assurer la configuration automatique des paramètres IP d’une station, notamment en lui affectant automatiquement sa configuration IP.
DHCP peut aussi configurer l’adresse de la passerelle par défaut ainsi que des serveurs de noms DNS par exemple.
Le serveur DHCP historique ISC DHCP server n'est plus maintenu depuis 2022.
Dans cet article, nous allons voir comment configurer ce service avec kea, son remplaçant.
L'ensemble des actions est à effectuer en tant que root.
Installation de DHCP
On va installer le service :
Code BASH :
apt install kea
Le service est démarré automatiquement sur Debian.
Vu qu'il n'est pas configuré, on va le stopper :
Code BASH :
systemctl stop kea-dhcp4-server.service
Si on n'utilise pas l'IPv6 dans notre réseau, on peut désactiver le service en question :
Code BASH :
systemctl disable --now kea-dhcp6-server.service
Configuration du serveur DHCP
Le fichier de configuration du DHCP en IPv4 est /etc/kea/kea-dhcp4.conf.
On renomme le fichier original :
Code BASH :
mv /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.ori
On va créer le nôtre :
Code BASH :
vim /etc/kea/kea-dhcp4.conf
Ci-dessous, un exemple de fichier de configuration. C'est une syntaxe en JSON.
Il est commenté, ça devrait suffire pour le comprendre.
Code TEXT :
{ "Dhcp4": { // Interface d'écoute "interfaces-config": { "interfaces": [ "ens18" ] }, //"control-socket": { // "socket-type": "unix", // "socket-name": "/tmp/kea4-ctrl-socket" //}, // /var/lib/kea/kea-leases4.csv // facultatif, car fichier par défaurt "lease-database": { "type": "memfile", "lfc-interval": 3600 }, // Bail //"expired-leases-processing": { // "reclaim-timer-wait-time": 10, // "flush-reclaimed-timer-wait-time": 25, // "hold-reclaimed-time": 3600, // "max-reclaim-leases": 100, // "max-reclaim-time": 250, // "unwarned-reclaim-cycles": 5 //}, //"renew-timer": 900, //"rebind-timer": 1800, "valid-lifetime": 86400, // Options Server "option-data": [ { "name": "domain-name-servers", "data": "192.168.221.2, 192.168.221.3" }, { "code": 15, "data": "linuxtrickstest.lan" } ], // Définition "subnet4": [ { "id": 1, "subnet": "192.168.221.0/24", "pools": [ { "pool": "192.168.221.150 - 192.168.221.200" } ], "option-data": [ { "name": "routers", "data": "192.168.221.254" } ], "reservations": [ // Exemple de réservation { "hw-address": "BC:24:11:A6:96:5C", "ip-address": "192.168.221.11" }, // Exemple de refus { "hw-address": "BC:24:11:A6:96:5B", "client-classes": [ "DROP" ] } ] } ], // Des logs "loggers": [ { "name": "kea-dhcp4", "output_options": [ { "output": "/var/log/kea/kea-dhcp4.log" } ], "severity": "INFO", "debuglevel": 0 } ] } }
Il est possible de vérifier la syntaxe du fichier via :
Code BASH :
sudo -u _kea kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
On démarre ensuite le serveur DHCP :
Code BASH :
systemctl restart kea-dhcp4-server.service
Voir les logs
On peut consulter le fichier de log précédemment défini :
Code BASH :
cat /var/log/kea/kea-dhcp4.log
On peut repérer le "DORA" DHCP (DISCOVER, OFFER, REQUEST, ACK) :
Code TEXT :
2025-07-16 21:21:02.312 INFO [kea-dhcp4.dhcp4/1580.140629476951744] DHCP4_QUERY_LABEL received query: [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9 2025-07-16 21:21:02.312 INFO [kea-dhcp4.packets/1580.140629476951744] DHCP4_PACKET_RECEIVED [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: DHCPDISCOVER (type 1) received from 0.0.0.0 to 255.255.255.255 on interface ens18 2025-07-16 21:21:02.312 INFO [kea-dhcp4.leases/1580.140629476951744] DHCP4_LEASE_OFFER [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: lease 192.168.221.150 will be offered 2025-07-16 21:21:02.312 INFO [kea-dhcp4.packets/1580.140629476951744] DHCP4_PACKET_SEND [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: trying to send packet DHCPOFFER (type 2) from 192.168.221.2:67 to 192.168.221.150:68 on interface ens18 2025-07-16 21:21:02.313 INFO [kea-dhcp4.dhcp4/1580.140629468559040] DHCP4_QUERY_LABEL received query: [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9 2025-07-16 21:21:02.313 INFO [kea-dhcp4.packets/1580.140629468559040] DHCP4_PACKET_RECEIVED [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: DHCPREQUEST (type 3) received from 0.0.0.0 to 255.255.255.255 on interface ens18 2025-07-16 21:21:02.314 INFO [kea-dhcp4.leases/1580.140629468559040] DHCP4_LEASE_ALLOC [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: lease 192.168.221.150 has been allocated for 86400 seconds 2025-07-16 21:21:02.314 INFO [kea-dhcp4.packets/1580.140629468559040] DHCP4_PACKET_SEND [hwtype=1 bc:24:11:1b:cc:fb], cid=[01:bc:24:11:1b:cc:fb], tid=0x154c2b9: trying to send packet DHCPACK (type 5) from 192.168.221.2:67 to 192.168.221.150:68 on interface ens18
Voir les IP attribuées
Bien que kea puisse stocker dans une base de données les adresses IP affectées, on n'a rien configuré donc les infos sont stockées dans un simple fichier CSV : /var/lib/kea/kea-leases4.csv
Voici ce qu'il contient dans mon exemple :
Code TEXT :
address,hwaddr,client_id,valid_lifetime,expire,subnet_id,fqdn_fwd,fqdn_rev,hostname,state,user_context,pool_id 192.168.221.150,bc:24:11:1b:cc:fb,01:bc:24:11:1b:cc:fb,86400,1752780062,1,0,0,client1,0,,