Fullmoon System

Déployer Kea DHCP sous Rocky Linux 9 : réservations, validation et haute disponibilité

EdwardMoon

Kea est un serveur DHCPv4 moderne qui fournit automatiquement aux clients leur adresse IPv4, passerelle par défaut, DNS et durée de bail. L'ancienne configuration dhcpd sous CentOS 7.9 ne convient plus aux nouveaux déploiements : CentOS 7 est en fin de vie et la maintenance d'ISC DHCP s'est terminée en 2022.

Ce guide part d'un sous-réseau unique sécurisé avec Rocky Linux 9 et les RPM officiels Kea 3.0 LTS. Il relie le choix des interfaces et le plan d'adressage à la validation JSON, aux règles de pare-feu ciblées, à la capture de paquets, à la prévention des conflits de réservation, aux relais DHCP et à la conception de la haute disponibilité.

Kea DHCP : clients, relais, serveurs redondants, plages d'adresses, réservations et supervision
Articulation des diffusions clientes, relais, redondance DHCP, plages, réservations et supervision

Pourquoi choisir Kea plutôt qu'ISC DHCP ?

ISC a annoncé DHCP 4.4.3-P1 comme dernière version de maintenance et recommande Kea ou un autre serveur maintenu pour les nouveaux environnements. Kea propose une configuration JSON, des commandes de contrôle, des statistiques, des hooks, des backends de baux memfile/MySQL/PostgreSQL et la haute disponibilité. La série 3.0 bénéficie d'un support à long terme.

En juillet 2026, Kea 3.2 est la branche stable la plus récente, mais ce guide retient la version 3.0 LTS pour les environnements de production nécessitant un support plus long. Consultez la politique de support ISC et les avis de sécurité pour choisir la révision de maintenance exacte avant l'installation.

Kea DHCP et l'échange DORA

Étape Message Point à vérifier
1 DHCPDISCOVER Un client sans adresse diffuse une demande, ou un relais la transmet
2 DHCPOFFER Le serveur choisit un sous-réseau et propose un bail et des options
3 DHCPREQUEST Le client demande le serveur et l'adresse qu'il a sélectionnés
4 DHCPACK Le serveur enregistre le bail et confirme la configuration finale

Si les clients et le serveur sont dans des domaines de diffusion distincts, un relais DHCP sur un équipement L3 transmet les demandes en unicast. L'adresse du relais, la sélection du sous-réseau, la route de retour et les ACL UDP 67/68 doivent toutes être correctes.

Vérifications préalables sous Rocky Linux 9

Le serveur de l'exemple utilise 192.168.100.2/24 sur ens192, avec la passerelle 192.168.100.1. Avant de le reprendre, identifiez la véritable interface, le VLAN, les adresses en doublon et les serveurs DHCP existants.

cat /etc/os-release
ip -br link
ip -br address
ip route
nmcli -t -f NAME,DEVICE,TYPE,STATE connection show --active
ss -lunp | grep -E ':(67|68)\b' || true

Vérifier les conflits de plages d'adresses

  • Séparer les plages dynamiques des adresses statiques des passerelles, serveurs, imprimantes et équipements réseau.
  • Placer les réservations hors de la plage dynamique, comme dans l'exemple, ou tester explicitement la politique de gestion des conflits de Kea.
  • Capturer le trafic pour vérifier si un serveur DHCP existant répond sur le même VLAN.
  • Vérifier si la randomisation MAC du client peut modifier l'identifiant d'une réservation hw-address.

Installer les RPM officiels Kea 3.0 LTS

ISC distribue les paquets de la famille RHEL via Cloudsmith. Téléchargez le script de configuration localement et examinez son contenu et sa source TLS avant exécution, au lieu d'envoyer directement un script distant dans un shell. Si votre organisation contrôle sa chaîne d'approvisionnement, synchronisez les paquets dans un dépôt interne approuvé.

curl --fail --location --proto '=https' --tlsv1.2   https://dl.cloudsmith.io/public/isc/kea-3-0/setup.rpm.sh   --output /tmp/isc-kea-3-0-setup.rpm.sh

less /tmp/isc-kea-3-0-setup.rpm.sh
sudo bash /tmp/isc-kea-3-0-setup.rpm.sh

Installer uniquement DHCPv4 et consigner les versions

sudo dnf install -y isc-kea-dhcp4
rpm -q isc-kea-dhcp4 isc-kea-common
kea-dhcp4 -V
dnf repolist --enabled | grep -i kea

Les dépendances des RPM ISC peuvent nécessiter des dépôts supplémentaires comme EPEL. En cas d'échec de dépendances, ne contournez pas le problème avec --skip-broken. Suivez la documentation ISC pour vérifier les dépôts Rocky 9 approuvés et la disponibilité des paquets nécessaires.

Configurer Kea DHCP en JSON

Le RPM officiel utilise généralement /etc/kea/kea-dhcp4.conf. Sauvegardez-le, puis adaptez l'exemple avec sudoedit. Commentaires, virgules et guillemets sont des sources fréquentes d'erreurs : faites toujours valider la configuration par Kea avant de démarrer le service.

sudo cp -a /etc/kea/kea-dhcp4.conf   /etc/kea/kea-dhcp4.conf.before-$(date +%F-%H%M%S)
sudoedit /etc/kea/kea-dhcp4.conf
{
  "Dhcp4": {
    "interfaces-config": {
      "interfaces": [ "ens192" ]
    },
    "lease-database": {
      "type": "memfile",
      "persist": true,
      "name": "/var/lib/kea/kea-leases4.csv",
      "lfc-interval": 3600
    },
    "valid-lifetime": 3600,
    "renew-timer": 900,
    "rebind-timer": 1800,
    "subnet4": [
      {
        "id": 100,
        "subnet": "192.168.100.0/24",
        "pools": [
          { "pool": "192.168.100.100 - 192.168.100.200" }
        ],
        "option-data": [
          { "name": "routers", "data": "192.168.100.1" },
          { "name": "domain-name-servers", "data": "192.168.100.53" },
          { "name": "domain-name", "data": "example.internal" }
        ],
        "reservations": [
          {
            "hw-address": "00:11:22:33:44:55",
            "ip-address": "192.168.100.50",
            "hostname": "printer1"
          }
        ]
      }
    ],
    "loggers": [
      {
        "name": "kea-dhcp4",
        "output-options": [ { "output": "syslog" } ],
        "severity": "INFO"
      }
    ]
  }
}

Valeurs à adapter dans l'exemple

Paramètre Exemple Méthode de validation
interface ens192 Véritable interface du service affichée par ip -br address
subnet 192.168.100.0/24 Réseau et préfixe réels du VLAN
pool .100-.200 Aucun chevauchement avec les adresses statiques, réservations ou autres plages DHCP
router .1 Passerelle réellement utilisée par les clients
DNS .53 DNS interne joignable par les clients
reservation .50 Adresse libre hors plage et identifiant stable

Valider la configuration et démarrer Kea

sudo kea-dhcp4 -t /etc/kea/kea-dhcp4.conf
sudo systemctl enable --now kea-dhcp4
sudo systemctl status kea-dhcp4 --no-pager
sudo journalctl -u kea-dhcp4 -b --no-pager | tail -n 100
La validation syntaxique ne prouve pas que la conception réseau est correcte. Des interfaces, passerelles ou DNS erronés, ou des plages qui se chevauchent, peuvent rester syntaxiquement valides. Testez les baux de clients réels, le routage et la résolution de noms dans un VLAN isolé.

Règles de pare-feu et exposition minimale

Un serveur DHCPv4 utilise UDP 67, et les clients UDP 68. Pour un VLAN directement connecté, autorisez le service DHCP dans la zone firewalld de l'interface concernée. Avec un relais, restreignez et validez aussi ses accès, les ACL et le routage.

sudo firewall-cmd --get-active-zones
sudo firewall-cmd --zone=internal --add-service=dhcp --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --zone=internal --list-services
sudo ss -lunp | grep ':67'

Vérifiez d'abord que la zone internal de l'exemple est bien attachée à l'interface réelle du service. N'ouvrez pas les ports dans toutes les zones. Sur les équipements réseau, marquez uniquement les chemins vers les relais et serveurs légitimes comme ports de confiance DHCP snooping.

Diagnostiquer les paquets et les baux

Capturer DORA en temps réel

sudo tcpdump -ni ens192 -vvv   '(udp port 67 or udp port 68)'

Examiner les journaux et les fichiers de baux

sudo journalctl -u kea-dhcp4 -f
sudo ls -lh /var/lib/kea/
sudo tail -n 20 /var/lib/kea/kea-leases4.csv
Symptôme Observation des paquets Première vérification
Aucun DISCOVER Aucune demande cliente visible VLAN, interface, relais et interface de capture
DISCOVER uniquement Aucun OFFER Sélection du sous-réseau, plage épuisée, journaux et pare-feu
OFFER sans REQUEST Le client a peut-être choisi un autre serveur DHCP non autorisé, options proposées et politique cliente
Aucune connectivité après ACK L'échange de bail a réussi Passerelle, DNS, ACL et doublons IP
Réservation non appliquée La demande utilise un autre identifiant MAC aléatoire, client-id et identifiant de réservation

Relais DHCP et sous-réseaux multiples

Le serveur DHCP n'a pas besoin d'être directement connecté à chaque VLAN. Quand un routeur ou commutateur L3 relaie une demande, Kea utilise les informations de lien du relais pour choisir le sous-réseau. Attribuez un id unique à chacun et vérifiez la route de réponse du serveur et les ACL des relais. Suivez la documentation de l'équipement pour les commandes de relais.

ip route get <RELAY_IP>
sudo tcpdump -ni any -vvv   'host <RELAY_IP> and (udp port 67 or udp port 68)'
sudo journalctl -u kea-dhcp4 --since '-10 min'

Concevoir les réservations DHCP

Une réservation diffère d'une IP statique configurée manuellement. Elle demande au serveur de proposer un bail précis lorsqu'il reconnaît un identifiant client. Les MAC des imprimantes et serveurs administrés peuvent être stables, tandis que les appareils mobiles peuvent employer une MAC privée par SSID. Examinez les politiques hw-address, client-id et flex-id pour choisir les identifiants.

  • Tester la prévention des conflits si des adresses réservées chevauchent la plage dynamique.
  • Relier les MAC, propriétaires, usages et historiques de réservation à la gestion des actifs.
  • Définir une procédure approuvée de retrait des anciens identifiants et baux lors du remplacement d'un appareil.
  • Quand les réservations se multiplient, envisager les backends d'hôtes et API pris en charge plutôt que des modifications JSON manuelles.

Migrer d'ISC DHCP vers Kea

Kea Migration Assistant d'ISC peut convertir partiellement dhcpd.conf, mais sa sortie n'est pas automatiquement prête pour la production. Examinez manuellement les conditions, DDNS, failover, classes, baux et options non prises en charge. Planifiez une bascule empêchant les anciens et nouveaux serveurs de faire simultanément autorité sur la même plage.

  1. Sauvegarder et inventorier la configuration, les baux, l'intégration DNS, les relais, options et réservations.
  2. Examiner les avertissements KeaMA et les instructions non converties, puis construire un JSON minimal.
  3. Tester DORA, réservations, renouvellements, DNS, PXE et baux longs sur un VLAN isolé.
  4. Réduire les durées de bail en avance et laisser expirer les baux existants, ou définir une autre prévention des conflits pour la bascule.
  5. Pendant la maintenance, arrêter les réponses de l'ancien serveur, démarrer Kea et surveiller paquets, journaux et doublons.
  6. Documenter à l'avance les critères de retour arrière et la réactivation de l'ancien serveur.

Concevoir la haute disponibilité Kea

Le JSON précédent configure un serveur DHCP unique ; il n'active pas la haute disponibilité. Celle-ci exige aussi le paquet de hook HA de la version choisie, les paramètres des partenaires dans hooks-libraries, des canaux de contrôle HTTP/HTTPS et des relais transmettant aux deux serveurs. Les points suivants sont des critères de conception et de test, pas une configuration HA complète. Partez de l'exemple correspondant à votre version dans le guide ISC HA Quickstart et validez les deux configurations ensemble.

Le hook HA de Kea gère l'état des partenaires et les mises à jour de baux dans des modes tels que hot-standby et load-balancing. Donner le même JSON à deux serveurs ne crée pas de haute disponibilité. Concevez ensemble les battements de cœur, transitions d'état, synchronisations de baux, réactions au split-brain, cibles des relais, versions de hooks et scénarios de panne.

  • Aligner l'heure, les versions, les hooks et les sous-réseaux des deux serveurs.
  • Limiter les ports HA au réseau d'administration et vérifier les options TLS et d'authentification prises en charge.
  • Tester séparément l'arrêt du primaire, la perte du lien HA, la panne du chemin de relais et celle du backend de baux.
  • Mesurer l'impact client lors de la transition partner-down avec de vrais appareils et perfdhcp.
  • La HA peut propager des options incorrectes, suppressions et erreurs humaines ; le versionnement et les sauvegardes restent indispensables.

Points à vérifier en exploitation

  • Tenir compte de la fin de vie de CentOS 7 et ISC DHCP et choisir un système et une branche Kea pris en charge.
  • Vérifier les interfaces, sous-réseaux, plages, passerelles, DNS, relais et réponses DHCP existantes.
  • Valider le JSON avant démarrage, puis capturer DISCOVER, OFFER, REQUEST et ACK.
  • Autoriser uniquement les accès de pare-feu nécessaires aux VLAN de service ou aux relais.
  • Gérer les adresses réservées, identifiants, politiques de MAC aléatoires et alertes de plages épuisées.
  • Sauvegarder la configuration, les backends de baux, hooks et versions de paquets, puis tester la récupération.
  • Valider la HA face aux partitions réseau et échecs de synchronisation, en plus de l'arrêt des serveurs.

Documentation officielle et guides associés

Conclusion

Pour un nouveau déploiement DHCP, choisissez Kea et un système maintenus plutôt que des exemples dhcpd en fin de vie. Validez la conception avec le plan d'adressage et les paquets réels. Prévenir les serveurs concurrents, gérer plages et réservations, vérifier les relais, restreindre le pare-feu, restaurer baux et configuration et tester les partitions réseau compte davantage que l'installation seule.