# Installer KEA DHCP Server sous Debian 13
#theme/IT/Protocols/DHCP #theme/IT/LNX/Debian #type/tuto
Dans ce tutoriel, nous allons installer et configurer **Kea DHCP (IPv4)** sur Debian 13 ou ultérieur. Pour en savoir plus sur le fonctionnement du protocole DHCP, consultez le cours [[B2-DHCP-Cours|B2-DHCP]] disponible en annexe de ce tutoriel.
Kea est une implémentation open source du protocole DHCP, développés et maintenus par Internet Systems Consortium (ISC). C'est un serveur DHCP plus moderne conçu pour la production et la montée en charge (API, bases de données, etc.). Voir la [documentation officielle Kea](https://kea.readthedocs.io/en/latest/) pour plus de détails.
> [!info] A savoir ! <span style="font-weight: normal; color: var(--text-normal)"> Kea est le successeur naturel et remplaçant du paquet [isc-dhcp-server](https://www.isc.org/blogs/isc-dhcp-eol/) (EOL depuis 2022). </span>
> [!danger] Attention !<span style="font-weight: normal; color: var(--text-normal)"> L'outil isc-dhcp-server n'est plus supporté depuis 2022. Il reste pleinement fonctionnel et la procédure est disponible ici pour référence : [[tuto-dhcp-server-lnx-isc|Installer ISC DHCP Server sous Debian]]</span>
## Environnement de Lab
Dans le cadre de ce tutoriel, notre objectif sera d'installer un serveur DHCP est de distribuer la plage d'adresses IP suivante : de **192.168.100.100** à **192.168.100.120**. Dans cette procédure, nous distinguerons 3 types de configurations IP :
- **Statique** : L’IP est configurée par l’administrateur de la machine de façon manuelle.
- **Dynamique** : La machine reçoit une IP automatiquement à partir d’un serveur DHCP. Cette adresse dispose d'une durée de vie (bail dhcp) et elle est susceptible de changer régulièrement.
- **Fixe (réservation)** : C’est une adresse dynamique, mais le serveur DHCP fournit toujours la même IP (identification en fonction de l’adresse mac de la carte réseau).
## Prérequis
Dans le cadre de ce tutoriel, notre objectif sera d'installer un serveur Kea qui distribue la plage d'adresses IP suivante :
- Une machine Debian 12 ou ultérieur avec une adresse IP statique (ex. `192.168.100.99/24`).
- Aucun autre serveur DHCP actif sur le même segment réseau.
- Une machine cliente (Debian, Windows…) configurée en client DHCP pour les tests.
- Connexion Internet pour télécharger les paquets.
Assurez-vous d'avoir configuré une IP statique sur votre serveur Debian. Utilisez l'article suivant pour vous guider dans cette étape [[kb-lnx-network-config-ip|Configuration IP sur Debian]].
# Installer Kea DHCP Server
> [!warning] Remarque ! <span style="font-weight: normal; color: var(--text-normal)">Les étapes de configuration pour un DHCP IPv6 ne sont pas décrites dans cet article.</span>
## Installation du paquet kea-dhcp4-server
Mettre à jour le système d’exploitation :
```bash
sudo apt update && sudo apt upgrade -y
```
Installer `kea-dhcp4-server` et les outils associés :
```bash
sudo apt install kea-dhcp4-server -y
```
Le service est nommé `kea-dhcp4-server` (pour IPv4), vérifiez son statut avec la commande :
```bash
sudo service kea-dhcp4-server status
```
Le résultat devrait confirmer que le service est `active (running)` et configuré pour démarrer automatiquement `preset: enabled` :
![[_png-tuto-dhcp-server-lnx-kea.png]]
## Configuration d'une étendue IPv4
### Vérification des interfaces réseaux
Dans cette démonstration, nous allons configurer le service serveur DHCP de KEA pour qu'il distribue des adresses via son interface `enp0s8` avec l'IP statique `192.168.100.99/24
![[_png-tuto-dhcp-server-lnx-kea-2.png]]
### Sauvegarde du fichier kea-dhcp4.conf
Kea utilise un fichier JSON principal : `/etc/kea/kea-dhcp4.conf`. Ce fichier d'origine contient beaucoup d'informations que nous allons conserver. Cela peut servir de référence ultérieure afin d'avoir des exemples.
```shell
sudo mv /etc/kea/kea-dhcp4.conf /etc/kea/kea-dhcp4.conf.ori
```
### Configuration de l'étendue DHCP
Nous allons fournir une configuration minimale permettant de distribuer le pool d'adresses 192.168.100.100 à 192.168.100.120 sur l'interface `enp0s8`.
Créez et éditez le nouveau fichier vide `kea-dhcp4.conf` :
```bash
sudo nano /etc/kea/kea-dhcp4.conf
```
> [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">La syntaxe JSON est rigoureuse, veillez à respecter les incrémentations (1 incrément = 4 espaces).</span>
Collez le contenu suivant en adaptant le nom de l'interface `enp0s8` et les options d'étendue IPv4 :
```json
{
"Dhcp4": {
"interfaces-config": {
// Nom interface en ecoute pour les requetes clients DHCP
"interfaces": [ "enp0s8" ]
},
// Duree de vie des baux en secondes
"valid-lifetime": 600,
"renew-timer": 300,
"rebind-timer": 500,
// Serveur faisant autorite en cas de conflit
"authoritative": true,
// Configuration de la base de donnee des baux DHCP dans un fichier CSV
"lease-database": {
"type": "memfile",
"persist": true,
"name": "/var/lib/kea/kea-leases4.csv"
},
// Definition de l etendue DHCP
"subnet4": [
{
"id": 1,
"subnet": "192.168.100.0/24",
"pools": [ { "pool": "192.168.100.100 - 192.168.100.120" } ],
"option-data": [
{ "name": "routers", "data": "192.168.100.1" },
{ "name": "domain-name-servers", "data": "1.1.1.1" },
{ "name": "domain-name", "data": "mon-domain.local" }
]
}
]
}
}
```
Explications rapides :
- `interfaces-config.interfaces` : nom de l'interface qui va écouter les requêtes DHCP (ici `enp0s3`).
- `lease-database.type = "memfile"` : stockage des baux (leases) dans un fichier CSV. Pour la production envisager de remplacer par `mysql` ou `postgresql`.
- `subnet4` : la déclaration de l'étendue avec :
- `pools` pour définir le nombre d'adresses IP distribuées dans cette plage (11 adresses dans cet exemple).
- `option-data` : permet de spécifier les options de l'étendue (passerelle, serveurs DNS, etc.)
Sauvegardez le fichier de configuration puis redémarrez le service kea :
```shell
sudo service kea-dhcp4-server restart
```
Vérifiez le status du service :
```shell
sudo service kea-dhcp4-server status
```
## Optionnel : Configurer une réservation DHCP
Certains équipements fournissent des services accessibles depuis le réseau : une imprimante, une borne Wifi, un serveur Web, etc. Pour standardiser et faciliter l'accès à ces services, il est recommandé de **fixer l'adresse IP** de l'équipement. De cette façon, à chaque fois que le client renouvellera son bail DHCP, il obtiendra toujours la même adresse IP : **c'est une réservation DHCP**.
Vous pouvez déclarer une ou plusieurs réservations IP dans le fichier de configuration, au sein de l'étendue DHCP concernée dans le bloc `subnet4`.
Dans l'exemple ci-dessous l'adresse IP `192.168.14.120` est assigné à la machine nommée `kea-cli-win` dont l'adresse MAC est `08:00:27:e2:20:f3`.
Pour réaliser une réservation d'adresse IP fixe dans `kea-dhcp4.conf` :
```bash
sudo nano /etc/kea/kea-dhcp4.conf
```
Voici les lignes à ajouter après le bloc `option-data` :
```
"reservations": [
{
"hw-address": "08:00:27:e2:20:f3",
"ip-address": "192.168.100.120",
"hostname": "Ubuntu2404"
}
]
```
> [!danger] Attention ! <span style="font-weight: normal; color: var(--text-normal)">Pensez à ajouter une virgule avant d'insérer un nouveau bloc de réservation. </span>
Voici le résultat une fois la modification insérée :
![[_png-tuto-dhcp-server-lnx-kea-3.png]]
Enregistrez les modifications, redémarrez le service puis vérifiez le statut du service :
```shell
sudo service kea-dhcp4-server restart && sudo service kea-dhcp4-server status
```
Connectez vous sur le client concerné par cette réservation et vérifier l'obtention de l'IP fixe. Ci-dessous le résultat sur un client Windows :
![[_png-tuto-dhcp-server-lnx-kea-1.png]]
# Vérifier le fonctionnement du service DHCP
## Vérifications côté client dhcp
La méthode de vérification varie selon l'OS client. Ci-dessous les commandes de vérification sous Windows et sous Linux Debian like :
1. Vérifiez toujours que la carte réseau est connectée au même réseau que le serveur DHCP.
2. Vérifiez que l'interface est configurée en tant que client DHCP
3. Selon l'OS du client, suivez les étapes décrites dans ces articles :
- [[kb-dhcp-client-lnx|Vérifier la configuration dhcp sur un client Linux]]
- [[kb-dhcp-client-win|Vérifier la configuration dhcp sur un client Windows]]
## Vérifications côté serveur dhcp
Vérifier le statut du service :
```bash
sudo service kea-dhcp4-server status
```
Sur le serveur DHCP, nous allons vérifier les baux DHCP (leases). Pour rappel, dans le fichier de configuration `kea-dhcp4.conf`nous avons spécifié l'option `lease-database` afin d'utiliser un fichier de base de données des beaux en CSV.
```shell
cat /var/lib/kea/kea-leases4.csv
```
Voici un exemple de sortie de commande qui met en évidence que la machine `kea-cli-deb13` a obtenu un bail DHCP pour l'IP `192.168.100.100` :
![[_png-tuto-dhcp-server-lnx-kea-4.png]]
## Analyseur de trames (dhcpdump)
Pour constater les échanges des trames en direct, ou si des problèmes persistent, utilisez "*dhcpdump*" ou "*tcpdump*". Ces outils permettent de constater que les requêtes DHCP parviennent jusqu'au serveur DHCP :
- [[kb-lnx-dhcpdump|Utiliser l'analyseur de trames dhcpdump]].
- [[kb-dhcp-tcpdump-lnx|Observer les trames DORA avec tcpdump]].
# Conclusion
> [!done] Félicitations ! <span style="font-weight: normal; color: var(--text-normal)">Vous êtes à présent en mesure de déployer et d'administrer un serveur KEA sous Debian.</span>
La configuration de l'étendue DHCP peut être enrichie avec d'autres options, car le serveur DHCP prend en charge de nombreuses options ([voir cette page](https://kb.isc.org/docs/standard-dhcp-options)). Ici, nous avons vu les options de base pour un administrateur système et réseau.
## Références
- KEA : [documentation officielle Kea](https://kea.readthedocs.io/en/latest/)
- IT-CONNECT : [Linux : installer et configurer un serveur DHCP KEA sur Debian 12](https://www.it-connect.fr/linux-installer-et-configurer-un-serveur-dhcp-kea-sur-debian/)