Introduction à ISC Kea DHCP Server
Le paquet ISC Kea contient les
programmes serveurs pour le DHCP. Il s'agit du successeur du vieux
serveur ISC DHCP qui est en fin de vie depuis décembre 2022.
Note
Les versions de développement de BLFS peuvent ne pas arriver à
contruire ou à exécuter certains paquets correctement si LFS ou
des dépendances ont été mises à jour depuis la dernière version
stable des livres.
Informations sur le paquet
-
Téléchargement (HTTP) : https://downloads.isc.org/isc/kea/3.0.2/kea-3.0.2.tar.xz
-
Téléchargement (FTP) :
-
Somme de contrôle MD5 du téléchargement :
a673e95637b708b3b1926c696cdf168b
-
Taille du téléchargement : 6,3 Mo
-
Estimation de l'espace disque requis : 231 Mo
(47 Mo installés, plus 425 Mo pour les tests)
-
Estimation du temps de construction : 6,4 SBU (avec
parallélisme = 4, plus 17 SBU pour les tests)
Dépendances de Kea
Requises
Boost-1.89.0 et log4cplus-2.1.2
Facultatives
MIT Kerberos V5-1.22.1, Valgrind-3.26.0, botan, cppcheck, libyang et plantuml
Facultatives (pour régénérer la documentation)
Doxygen-1.15.0, Graphviz-14.1.0, sphinx_rtd_theme-3.0.2 et texlive-20250308 (ou install-tl-unx)
Moteurs de base de données facultatifs
MariaDB-11.8.5 ou MySQL et PostgreSQL-18.1
Installation de ISC Kea DHCP Server
Tout d'abord, appliquez quelques corrections nécessaires pour
boost-1.89.0 :
sed -e "/asio_wrapper/a#include <boost/asio/deadline_timer.hpp>" \
-i src/lib/asiolink/interval_timer.cc \
src/lib/asiodns/io_fetch.cc \
src/lib/asiodns/tests/io_fetch_unittest.cc
Maintenant, installez ISC Kea DHCP
Server en exécutant les commandes suivantes :
mkdir build &&
cd build &&
meson setup .. \
--prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--buildtype=release \
-D crypto=openssl \
-D runstatedir=/run &&
ninja
Si les tests sont activés, exécutez ninja test pour tester les
résultats. Certains tests nécessitent une base de donnée lorsque
les crochets de base de données sont construits. Certains tests
peuvent échouer si la prise en charge d'IPv6 n'est pas
fonctionnelle.
Pour installer la suite ISC Kea DHCP
Server, lancez les commandes suivantes en tant
qu'utilisateur root :
ninja install
Corrigez certains chemins codés en dur dans le script keactrl :
sed -e "s;\${prefix}/;;" -i /usr/sbin/keactrl
Créez certains répertoires et corrigez les permissions en tant
qu'utilisateur root :
install -dm0750 /var/lib/kea
install -dm0750 /var/log/kea
Explication des commandes
-D crypto=openssl : permet
d'utiliser OpenSSL pour communiquer avec l'agent de contrôle et
pour les mises à jour DNS. Utilisez -D
crypto=botan si vous souhaitez utiliser botan. Le
fournisseur par défaut est openssl.
-D postgresql=enabled ou -D mysql=enabled : ISC Kea peut stocker les baux en base de
données. Cela peut être pratique dans de grands environnements qui
exécutent une grappe de serveurs DHCP. Le moteur memfile (qui est un fichier CSV stocké
localement) est toujours disponible.
-D tests=enabled : cette option
est nécessaire pour construire la suite de tests. Utiliser cette
option fait grandement grossir la taille de la construction. Elle
ne devrait donc être activée que si vous allez exécuter la suite de
tests.
-D krb5=enabled :ce paramètre
active l'intégration avec Kerberos pour l'authentification des
ordinateurs clients dans un environnement d'entreprise.
Configuration du serveur DHCP Key d'ISC
La prise en charge d'IPv4, IPv6 et DDNS a été divisée en différents
serveurs qui tournent indépendamment les uns des autres. Chacun a
son propre fichier de configuration. Des
fichiers de configuration supplémentaires proviennent de l'agent
keactrl qui est utilisé pour contrôler les serveurs de manière plus
conviviale.
Remarquez que Kea Control Agent est obsolète depuis la vers 3.0.0.
Ne confondez pas kea-ctrl-agent
avec keactrl.
Consultez le manuel de référence de
l'administrateur de Kea pour des informations détaillées sur la
configuration de ISC Kea. C'est un
système très complet. La configuration que nous montrons ci-dessous
est le strict minimum pour lancer un serveur DHCP mais elle inclut
déjà une configuration pour DDNS (Dynamic DNS). Cette installation
est idéale pour de petits réseaux avec peu de clients et peu de
trafic réseau. Pour les plus grosses installations avec des
milliers de clients, vous pouvez configurer ISC Kea pour utiliser des bases de données
(mariadb ou postgresql) pour stocker les baux et construire une
grappe avec plusieurs nœuds. Il peut être intégré à ISC Stork,
un tableau de bord pour la gestion d'ISC
Kea.
Si vous voulez démarrer le serveur DHCP au démarrage, installez
le script de démarrage /etc/rc.d/init.d/kea-dhcpd inclus dans le
paquet blfs-bootscripts-20250225 :
make install-kea-dhcpd
Fichiers de
configuration
/etc/kea/keactrl.conf, /etc/kea/kea-ctrl-agent.conf, /etc/kea/kea-dhcp4.conf, /etc/kea/kea-dhcp6.conf et /etc/kea/kea-dhcp-ddns.conf
Configuration du
contrôleur de Kea
keactrl est utilisé
pour contrôler les serveurs indépendants (IPv4, IPv6, DDNS). Son
fichier de configuration, /etc/kea/keactrl.conf, est installé par défaut
et contient plusieurs paramètres de chemins qui sont définis par
configure à la
construction. Il contient également des paramètres pour spécifier
les serveurs à démarrer.
-
Agent de contrôle
L'agent de contrôle est un démon qui permet la
(re)configuration du service Kea DHCP via une API REST.
Indiquez ctrl_agent=yes pour
démarrer l'agent de contrôle (le service qui fournit l'API
REST), indiquez ctrl_agent=no
si vous n'en avez pas besoin.
-
Serveur DHCP IPv4
Ce démon gère les requêtes pour les adresses IPv4. Indiquez
dhcp4=yes pour le démarrer,
indiquez dhcp4=no si vous
n'avez pas besoin du service IPv4.
-
Serveur DHCP IPv6
Ce démon gère les requêtes pour les adresses IPv6. Indiquez
dhcp6=yes pour le démarrer,
indiquez dhcp6=no si vous
n'avez pas besoin du service IPv6.
-
DNS dynamique
Ce démon est utilisé pour mettre à jour un serveur DNS de
manière dynamique lorsque Kea assigne une adresse IP à un
périphérique. Indiquez dhcp_ddns=yes pour l'activer, indiquez
dhcp_ddns=o si vous ne voulez
pas de DNS dynamique.
Le service Netconf n'est pas installé car les dépendances
requises ne sont pas installées par BLFS, et le configuration
correctement est compliqué.
Avec la commande suivante, Kea sera configuré pour démarrer le
service DHCP pour l'IPv4 et la mise à jour dynamique du DNS,
tandis que l'agent de contrôle et le service DHCP pour IPv6
restent éteints. Modifiez la commande pour qu'elle corresponde à
vos besoins et exécutez-la en tant qu'utilisateur root :
sed -e "s/^dhcp4=.*/dhcp4=yes/" \
-e "s/^dhcp6=.*/dhcp6=no/" \
-e "s/^dhcp_ddns=.*/dhcp_ddns=yes/" \
-e "s/^ctrl_agent=.*/ctrl_agent=no/" \
-i /etc/kea/keactrl.conf
Configuration de l'agent de contrôle
La configuration fournie peut être utilisée sans changement.
Cependant, dans BLFS, les objets comme les sockets sont stockés
dans /run plutôt que dans
/tmp.
cat > /etc/kea/kea-ctrl-agent.conf << "EOF"
// Begin /etc/kea/kea-ctrl-agent.conf
{
// This is a basic configuration for the Kea Control Agent.
// The RESTful interface will be available at http://127.0.0.1:8000/
"Control-agent": {
"http-host": "127.0.0.1",
"http-port": 8000,
"control-sockets": {
"dhcp4": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
},
"dhcp6": {
"socket-type": "unix",
"socket-name": "/run/kea/kea6-ctrl-socket"
},
"d2": {
"socket-type": "unix",
"socket-name": "/run/kea/kea-ddns-ctrl-socket"
}
},
"loggers": [
{
"name": "kea-ctrl-agent",
"output_options": [
{
"output": "/var/log/kea/kea-ctrl-agent.log",
"pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
// End /etc/kea/kea-ctrl-agent.conf
EOF
Configuration du serveur DHCP IPv4
Un fichier de configuration d'exemple est créé dans etc/kea/kea-dhcp4.conf. Ajustez le fichier à
vos besoin ou remplacez-le en exécutant la commande suivante en
tant qu'utilisateur root (vous
devrez modifier ce fichier de toute façon : au moins le
champ interfaces, le champ
ddns-qualifying-suffix et
presque tous les champs de Subnet4) :
cat > /etc/kea/kea-dhcp4.conf << "EOF"
// Begin /etc/kea/kea-dhcp4.conf
{
"Dhcp4": {
// Add names of your network interfaces to listen on.
"interfaces-config": {
"interfaces": [ "eth0", "eth2" ]
},
"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea4-ctrl-socket"
},
"lease-database": {
"type": "memfile",
"lfc-interval": 3600,
"name": "/var/lib/kea/kea-leases4.csv"
},
"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,
// Enable DDNS - Kea will dynamically update the BIND DNS server
"ddns-send-updates" : true,
"ddns-qualifying-suffix": "your.domain.tld",
"dhcp-ddns" : {
"enable-updates": true
},
"subnet4": [
{
"id": 1001, // Each subnet requires a unique numeric id
"subnet": "192.168.56.0/24",
"pools": [ { "pool": "192.168.56.16 - 192.168.56.254" } ],
"option-data": [
{
"name": "domain-name",
"data": "your.domain.tld"
},
{
"name": "domain-name-servers",
"data": "192.168.56.2, 192.168.3.7"
},
{
"name": "domain-search",
"data": "your.domain.tld"
},
{
"name": "routers",
"data": "192.168.56.2"
}
]
}
],
"loggers": [
{
"name": "kea-dhcp4",
"output_options": [
{
"output": "/var/log/kea/kea-dhcp4.log",
"pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
// End /etc/kea/kea-dhcp4.conf
EOF
Configuration du serveur DHCP IPv6
La configuration pour l'IPv6 est similaire à la configuration
pour l'IPv4. Le fichier de configuration est /etc/kea/kea-dhcp6.conf.
Configuration du DNS dynamique
Si un serveur BIND-9.20.16 est lancé, ISC Kea peut mettre à jour les entrées DNS
lorsqu'il donne une adresse IP à un client. Un fichier de
configuration d'exemple est créé dans /etc/kea/kea-dhcp-ddns.conf. Ajustez le fichier
pour qu'il corresponde à vos besoins ou remplacez-le en exécutant
la commande suivante en tant qu'utilisateur root :
cat > /etc/kea/kea-dhcp-ddns.conf << "EOF"
// Begin /etc/kea/kea-dhcp-ddns.conf
{
"DhcpDdns": {
"ip-address": "127.0.0.1",
"port": 53001,
"control-socket": {
"socket-type": "unix",
"socket-name": "/run/kea/kea-ddns-ctrl-socket"
},
"tsig-keys": [
{
"name" : "rndc-key",
"algorithm" : "hmac-sha256",
"secret" : "1FU5hD7faYaajQCjSdA54JkTPQxbbPrRnzOKqHcD9cM="
}
],
"forward-ddns" : {
"ddns-domains" : [
{
"name" : "your.domain.tld.",
"key-name": "rndc-key",
"dns-servers" : [
{
"ip-address" : "127.0.0.1",
"port" : 53
}
]
}
]
},
"reverse-ddns" : {
"ddns-domains" : [
{
"name" : "56.168.192.in-addr.arpa.",
"key-name": "rndc-key",
"dns-servers" : [
{
"ip-address" : "127.0.0.1",
"port" : 53
}
]
}
]
},
"loggers": [
{
"name": "kea-dhcp-ddns",
"output_options": [
{
"output": "/var/log/kea/kea-ddns.log",
"pattern": "%D{%Y-%m-%d %H:%M:%S.%q} %-5p %m\n"
}
],
"severity": "INFO",
"debuglevel": 0
}
]
}
}
// End /etc/kea/kea-dhcp-ddns.conf
EOF
Note
La valeur de secret n'est qu'un
exemple. Générez la clé pour votre installation en exécutant la
commande rndc-confgen
-a ou la commande tsig-keygen qui sont toutes
deux fournies par BIND-9.20.16.
Dans cette configuration d'exemple nous supposons que le
serveur DNS tourne sur la même machine que Kea (accessible via
127.0.0.1) et que cette machine a
l'adresse IP 192.168.56.2.