Serveur DHCP Kea 2.4.1

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.

This package is known to build and work properly using an LFS 12.1 platform.

Informations sur le paquet

  • Téléchargement (HTTP) : https://downloads.isc.org/isc/kea/2.4.1/kea-2.4.1.tar.gz

  • Téléchargement (FTP) :

  • Somme de contrôle MD5 : ad23d02b3ce0475eb077da05b0ae2429

  • Taille du téléchargement : 10 Mo

  • Estimation de l'espace disque requis : 1,5 Go (332 Mo installés, plus 4 Go pour les tests)

  • Estimation du temps de construction : 4,1 SBU (avec parallélisme = 4, plus 12 SBU pour les tests)

Dépendances de Kea

Requises

Boost-1.84.0 et log4cplus-2.1.1

Facultatives

MIT Kerberos V5-1.21.2, Valgrind-3.22.0 ; pour la documentation : Doxygen-1.10.0, Graphviz-10.0.1 et sphinx_rtd_theme-2.0.0 ; pour les tests : GoogleTest

Moteurs de base de données facultatifs

MariaDB-10.11.7 ou MySQL et PostgreSQL-16.2

Configuration du noyau

Vous devez avoir la prise en charge de Packet Socket. La prise en charge d'IPv6 est facultative.

[*] Networking support --->                                                [NET]
  Networking options --->
    <*/M> Packet socket                                                 [PACKET]
    [*]   TCP/IP networking                                               [INET]
    <*>     The IPv6 protocol --->                                        [IPV6]

Installation de ISC Kea DHCP Server

Tout d'abord, corrigez la détection de Python-3.12 par le système de construction :

sed -e 's/:3/:4/' \
    -i configure

Supprimez une étape d'installation qui utiliser un module python obsolète :

sed -e '/dlist="/d' \
    -i src/bin/shell/Makefile.in

INstallez ISC Kea DHCP Server en exécutant les commandes suivantes :

./configure --prefix=/usr        \
            --sysconfdir=/etc    \
            --localstatedir=/var \
            --enable-shell       \
            --with-openssl       \
            --disable-static     \
            --docdir=/usr/share/doc/kea-2.4.1 &&
make

Pour tester les résultats, vous devez avoir installé GoogleTest et gardé ses sources. Vous devriez également avoir passé --with-gtest-source=/chemin/vers/les/sources/de/googletest à configure plus haut. Exécutez les tests avec make check. Trois tests dans la suite TLSTest sont connus pour échouer.

Pour installer la suite ISC Kea DHCP Server, lancez les commandes suivantes en tant qu'utilisateur root :

make -j1 install

Explication des commandes

--enable-shell : permet de construire kea-shell, une interface en ligne de commande à l'agent de contrôle.

--with-openssl : permet d'utiliser OpenSSL pour communiquer avec l'agent de contrôle et pour les mises à jour DNS.

--disable-static : Ce paramètre empêche l'installation des versions statiques des bibliothèques.

--with-pgsql ou --with-mysql : 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.

--enable-generate-docs : si la documentation doit être reconstruite, ajoutez cette option. Plusieurs dépendances doivent être installées pour générer la documentation.

make -j1 install : ISC recommande de n'utiliser aucune forme de parallélisme ou de serveur de tâches pour l'installation.

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 conviviale.

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 peut fonctionner pour de petits réseaux avec peu de clients et peu de traffic. 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-20240209 :

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 ne voulez pas de service DHCP pour l'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 ne voulez pas de service DHCP pour l'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 il nécessite des dépendances qui ne sont pas couvertes dans le livre BLFS actuel.

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 mais 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.
  // RESTful interface to 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/kea4-ctrl-socket"
      },
      "dhcp6": {
        "socket-type": "unix",
        "socket-name": "/run/kea6-ctrl-socket"
      },
      "d2": {
        "socket-type": "unix",
        "socket-name": "/run/kea-ddns-ctrl-socket"
      }
    },

    "loggers": [
      {
        "name": "kea-ctrl-agent",
        "output_options": [
          {
            "output": "/var/log/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/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,

    // Enable DDNS - Kea will dynamically update the DNS
    "ddns-send-updates" : true,
    "ddns-qualifying-suffix": "your.domain.tld",
    "dhcp-ddns" : {
      "enable-updates": true
    },

    "subnet4": [
      {
        "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-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.18.24 est lancé, ISC Kea peut mettre à jour le 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-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-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]

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.18.24.

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.

Contenu

Programmes installés: keactrl, kea-admin, kea-ctrl-agent, kea-dhcp4, kea-dhcp6, kea-dhcp-ddns, kea-lfc, kea-shell
Bibliothèques installées: libkea-asiodns.so, libkea-asiolink.so, libkea-cc.so, libkea-cgfclient.so, libkea-cryptolink.so, libkea-d2srv.so, libkea-database.so, libkea-dhcp_ddns.so, libkea-dhcp++.so, libkea-dhcpsrv.so, libkea-dns++.so, libkea-eval.so, libkea-exceptions.so, libkea-hooks.so, libkea-http.so, libkea-log.so, libkea-process.so, libkea-stats.so, libkea-tcp.so, libkea-util.so et libkea-util-io.so
Répertoires installés: /etc/kea, /usr/include/kea, /usr/lib/kea, /usr/lib/python3.12/site-packages/kea, /usr/share/kea, /usr/share/doc/kea-2.4.1 et /var/lib/kea

Descriptions courtes

keactrl

Outil pour contrôler (démarrer/arrêter) les processus des serveurs.

kea-admin

kea-admin est un script shell qui permet la maintenance de la base de données.

kea-ctrl-agent

Démon qui expose une interface de contrôle RESTful pour gérer les serveurs Kea.

kea-dhcp4

Le démon du serveur qui fournit des adresses IPv4.

kea-dhcp6

Le démon du serveur qui fournit des adresses IPv6.

kea-dhcp-ddns

Le démon du serveur qui effectue des mises à jour DNS dynamiques.

kea-lfc

Le processus du service kea-lfc supprime les informations redondantes des fichiers utilisés pour fournir le stockage persistant pour le moteur de base de données memfile. Il est exécuté par le serveur DHCP Kea.

keashell

client RESTful pour les services d'ISC Kea.