Installer et configurer un KEA DHCP sur Debian 13

Installer et configurer un KEA DHCP sur Debian 13

Sous Debian 13, la mise en place d’un serveur DHCP moderne passe naturellement par Kea DHCP. Développé par l’Internet Systems Consortium (ISC), Kea représente la nouvelle génération des services DHCP, avec une architecture plus modulaire, une configuration en JSON, une meilleure extensibilité, et la possibilité d’utiliser différents backends de stockage comme les fichiers locaux, PostgreSQL ou MySQL. La documentation officielle de Kea le présente d’ailleurs comme le DHCP "next generation".

Dans cette article, l’objectif est de déployer un serveur DHCP IPv4 capable de :

  • distribuer des adresses sur le réseau 10.72.16.0/24
  • attribuer des baux entre 10.72.16.100 et 10.72.16.200
  • fournir la passerelle, le DNS et le domaine de recherche
  • réserver une IP fixe pour une machine à partir de son adresse MAC

Installation de Kea DHCP IPV4

Nous allons mettre à jour l’index APT puis installe le paquet du serveur DHCPv4 :

apt update
apt install kea-dhcp4-server

Une fois l’installation terminée, vérifie l’état du service :

systemctl status kea-dhcp4-server
💡
Vous pouvez également contrôler son activation au démarrage avec : systemctl is-enabled kea-dhcp4-server

Vous pouvez désactiver le DHCP avec cette commande pendant que nous effectuons la configuration :

systemctl stop kea-dhcp4-server

Mise en place d'une IP fixe

Il est très important que votre serveur DHCP ait une adresse IP fixe. Dans cet exemple, nous allons lui en attribuer une.

Afin de configurer une adresse IP fixe, nous devons d’abord identifier l’interface sur laquelle la configurer. Pour cela, nous pouvons utiliser cette commande :

ip -br a

Vous obtiendrez ce type de résultat, comme vous pouvez le voir dans cet exemple, je n’ai qu’une seule interface, ens18, à laquelle nous allons attribuer une adresse IP fixe :

Pour cela, vous pouvez modifier le fichier interfaces, situé dans /etc/network, à l’aide de la commande suivante :

nano /etc/network/interfaces

Repérez la ligne iface XXX, correspondant à votre interface. Dans mon cas, il s’agit de ens18. Vous pouvez ensuite remplacer dhcp par static. Ensuite, passez à la ligne suivante.

Ajoutez une tabulation, puis saisissez address Votre_IP/Le_Masque_en_CIDR. Sur la ligne suivante, ajoutez une autre tabulation, puis saisissez gateway, suivi de votre passerelle.

Cela vous donnera quelque chose comme ça :

Il ne vous reste plus qu’à quitter et à enregistrer. Pour cela, faites CTRL et X. Ensuite, le système vous demandera si vous souhaitez enregistrer les modifications, tapez Y, puis appuyez sur Entrée pour valider. Une fois cela fait, vous pouvez exécuter cette commande pour redémarrer le service réseau afin de prendre en compte l’adresse IP fixe :

systemctl restart networking

Vous aurez alors un résultat semblable à celui-ci :

Configuration de Kea DHCP IPV4

Maintenant que nous disposons de tout le nécessaire pour continuer, nous allons passer à la configuration de Kea DHCP.

Nous allons maintenant accéder au fichier de configuration de Kea. Pour cela, exécutez la commande suivante :

cd /etc/kea

Dans ce dossier, vous devriez normalement trouver un fichier nommé kea-dhcp4.conf

Vous pouvez maintenant l’ouvrir pour y ajouter la configuration souhaitée. Pour cela, utilisez la commande suivante :

nano kea-dhcp4.conf

Vous pouvez faire une configuration comme celle-ci en dessous, cela permettra d’avoir un DHCP de base.

{
"Dhcp4": {
    "interfaces-config": {
// Interface réseau sur laquelle Kea écoute les requêtes DHCP
        "interfaces": ["ens18"]
    },
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "kea4-ctrl-socket"
    },
    "lease-database": {
        "type": "memfile",
        "lfc-interval": 3600
    },
        "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": 3600,
     // Options DHCP globales envoyées à tous les clients
    "option-data": [
        {
            // Serveurs DNS fournis aux clients
            "name": "domain-name-servers",
            "data": "10.72.16.11, 8.8.8.8"
        },
        {
            // Option DHCP 15 = nom de domaine
            "code": 15,
            "data": "makeinlab.local"
        },
        {
            "name": "boot-file-name",
            "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00"
        },
        {
            "name": "default-ip-ttl",
            "data": "0xf0"
        }
    ],
    "client-classes": [
        {
            "name": "voip",
            "test": "substring(option[60].hex,0,6) == 'Aastra'",
            "next-server": "192.0.2.254",
            "server-hostname": "hal9000",
            "boot-file-name": "/dev/null"
        }
    ],
    "subnet4": [
        {
            // Réseau
            "id": 1,
            "subnet": "10.72.16.0/24",
            // Plage d’adresses distribuées dynamiquement
            "pools": [ { "pool": "10.72.16.100 - 10.72.16.200" } ],
            "option-data": [
                {
                    // Passerelle par défaut fournie aux clients
                    "name": "routers",
                    "data": "10.72.16.11"
                }
            ],
            // Réservations statiques DHCP ICI
            "reservations": [
            ]
        }
    ],
    "loggers": [
    {
        "name": "kea-dhcp4",
        "output-options": [
            {
                "output": "stdout",
                "pattern": "%-5p %m\n",
            }
        ],
        "severity": "INFO",
        "debuglevel": 0
    }
  ]
}
}

Vous pouvez toutefois modifier les paramètres selon vos besoins, comme le réseau, les serveurs DNS, la durée du bail ou encore l’interface de sortie. Tout dépend de vos préférences et de votre infrastructure.

Vous pouvez ensuite démarrer le service kea-dhcp4-server avec la commande suivante :

systemctl start kea-dhcp4-server.service

Vous pouvez configurer son démarrage automatique à chaque redémarrage de votre machine avec cette commande :

systemctl enable kea-dhcp4-server.service

Vous pouvez maintenant essayer d’obtenir une adresse IP via le serveur DHCP.

Réservation sur Kea DHCP IPV4

Une réservation est très pratique pour de nombreuses raisons, c’est pourquoi je vais vous montrer comment en configurer une facilement sur Kea DHCP.

Dans la section "reservations" du fichier de configuration, que vous trouverez plus haut, vous pourrez ajouter votre réservation :

"reservations": [
            ]

Voici un exemple de réservation d’adresse IP pour l’un de vos appareils :

"reservations": [

                {
                    "client-id": "01:bc:24:11:b7:49:ab",
                    "ip-address": "10.72.16.110",
                    "hostname": "premiere-reserv"
                },
            ]

Ce qui donne la configuration globale suivante :

{
"Dhcp4": {
    "interfaces-config": {
// Interface réseau sur laquelle Kea écoute les requêtes DHCP
        "interfaces": ["ens18"]
    },
    "control-socket": {
        "socket-type": "unix",
        "socket-name": "kea4-ctrl-socket"
    },
    "lease-database": {
        "type": "memfile",
        "lfc-interval": 3600
    },
        "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,
    //Duree du bail en secondes (7J dans cet exemple)
    "valid-lifetime": 604800,
     // Options DHCP globales envoyées à tous les clients
    "option-data": [
        {
            // Serveurs DNS fournis aux clients
            "name": "domain-name-servers",
            "data": "10.72.16.11, 8.8.8.8"
        },
        {
            // Option DHCP 15 = nom de domaine
            "code": 15,
            "data": "makeinlab.local"
        },
        {
            "name": "boot-file-name",
            "data": "EST5EDT4\\,M3.2.0/02:00\\,M11.1.0/02:00"
        },
        {
            "name": "default-ip-ttl",
            "data": "0xf0"
        }
    ],
    "client-classes": [
        {
            "name": "voip",
            "test": "substring(option[60].hex,0,6) == 'Aastra'",
            "next-server": "192.0.2.254",
            "server-hostname": "hal9000",
            "boot-file-name": "/dev/null"
        }
    ],
    "subnet4": [
        {
            // Réseau
            "id": 1,
            "subnet": "10.72.16.0/24",
            // Plage d’adresses distribuées dynamiquement
            "pools": [ { "pool": "10.72.16.100 - 10.72.16.200" } ],
            "option-data": [
                {
                    // Passerelle par défaut fournie aux clients
                    "name": "routers",
                    "data": "10.72.16.11"
                }
            ],
            // Réservations statiques DHCP ICI
            "reservations": [

                {
                    "client-id": "01:bc:24:11:b7:49:ab",
                    "ip-address": "10.72.16.110",
                    "hostname": "serveur"
                },
            ]
        }
    ],
    "loggers": [
    {
        "name": "kea-dhcp4",
        "output-options": [
            {
                "output": "stdout",
                "pattern": "%-5p %m\n",
            }
        ],
        "severity": "INFO",
        "debuglevel": 0
    }
  ]
}
}

Comme vous pouvez le constater, mon ordinateur dispose bien de la réservation d’adresse IP souhaitée.

Voilà, vous savez maintenant comment installer Kea DHCP et le configurer de manière basique pour obtenir des baux fonctionnels, le tout sous Debian 13. L'installation peut se faire de la même manière sur Debian 12.
Dans un prochain article, nous irons plus en profondeur sur Kea DHCP. Je vous remercie d'avoir lu jusqu'à la fin.


Pour nous aider à nous améliorer, n'hésitez pas à faire part de vos avis en commentaires ou même à poser vos questions si vous avez besoin d'aide supplémentaire.

Vous pouvez également partager cet article et nous suivre sur Twitter/X :

x.com

ainsi que sur Instagram :

Makeinlab (@ma.in.lab) • Instagram photos and videos
20 Followers, 5 Following, 79 Posts - See Instagram photos and videos from Makeinlab (@ma.in.lab)

Et même sur TikTok :

@makeinlab.fr

Lire plus