08/01/2025

Services

Stork : une interface web pour surveiller son serveur DHCP Kea sous Linux

I. Présentation

Vous recherchez une interface graphique pour administrer votre serveur DHCP sous Linux ? Cela tombe bien, dans dans ce tutoriel, nous allons voir comment installer et configurer Stork, une solution proposée par l'ISC, déjà à l'origine des services Kea DHCP Server et Bind9.

Stork est une solution développée depuis plusieurs années, qui est gratuite, et que vous pouvez utiliser pour superviser vos serveurs DHCP sous Linux. Certaines fonctionnalités, notamment pour l'administration pure à distance (modifier la configuration) nécessitent de passer sur la version payante, via un package "Kea Premium".

Voici certaines fonctionnalités accessibles via Stork, sans débourser un centime :

  • Avoir une vue d'ensemble sur l'état des services DHCP et DNS
  • Surveiller l'utilisation des ressources : RAM, CPU, charge système
  • Visualiser l'uptime des machines
  • Assurer un suivi des versions des paquets (par exemple, constater que le service Kea DHCP Server n'est pas à jour sur telle machine)
  • Surveiller l'état des étendues DHCP : combien d'adresses IP sont disponibles dans chaque étendue ? Les statistiques répondent à ce genre de question
  • Effectuer une recherche dans la liste des baux DHCP
  • Visualiser la configuration globale du serveur et la liste des réservations DHCP
  • Interfacer Stork Server avec Grafana pour bénéficier d'un suivi plus précis et avoir un historique.

Dans le cadre de ce tutoriel, nous allons installer le serveur Stork sur une machine nommée "SRV-DEB", sous Debian 12. L'agent Stork quant à lui sera installé sur une autre machine qui est à la fois DNS et DHCP (via les paquets d'ISC). Pour accéder au site du projet :

Fonctions limitées à la version payante (notamment des hooks)

Si vous êtes prêt à commencer, il ne vous reste plus qu'à lire la suite de cet article !

II. Installer Stork Server sur Debian

A. Installation du paquet isc-stork-server

Nous allons commencer par installer le paquet "isc-stork-server" sur le serveur destiné à héberger l'application Stork Server. Avant cela, nous allons installer le paquet "curl" afin de pouvoir ajouter le dépôt à notre machine.

sudo apt install curl
curl -1sLf 'https://dl.cloudsmith.io/public/isc/stork/cfg/setup/bash.deb.sh' | sudo bash

Ensuite, lancez l'installation du paquet :

sudo apt update
sudo apt install isc-stork-server
Installer Stork Server sur Debian 12

Cette première étape est très simple, mais indispensable.

B. Installation et préparation de PostgreSQL

Nous allons passer à l'installation de PostgreSQL puisque Stork Server en a besoin pour sa base de données. Exécutez la commande suivante :

sudo apt install postgresql postgresql-contrib

Pour configurer et activer PostgreSQL, commencez par exécuter la commande "sudo postgresql-setup --initdb", qui initialise le moteur de base de données et génère les fichiers nécessaires. Ensuite, lancez le service avec "sudo systemctl start postgresql", puis exécutez la commande "sudo systemctl enable postgresql" pour que le service démarre automatiquement à chaque redémarrage du système.

sudo systemctl start postgresql
sudo systemctl enable postgresql

La commande suivante permet de créer une nouvelle base de données PostgreSQL appelée "db_stork", en utilisant l'utilisateur système "postgres" pour exécuter l'opération avec les droits nécessaires. Elle associe cette nouvelle base de données à un nouvel utilisateur nommé simplement "user_stork", qui pourra ensuite interagir avec la base. Cela permet d'initialiser la base de données que l'on utilisera ensuite avec notre serveur Stork.

sudo -u postgres stork-tool db-create --db-name db_stork --db-user user_stork

Un mot de passe aléatoire sera généré (vous pouvez préciser un mot de passe personnalisé via le paramètre "--db-password"). Vous devez copier ce mot de passe pour le conserver, car nous en aurons besoin par la suite.

C. Connecter le serveur Stork à la base de données

La base de données étant prête, nous devons indiquer à Stork comment il doit s'y connecter. Pour cela, éditez le fichier de configuration suivant :

sudo nano /etc/stork/server.env

Il contient un ensemble de variables d'environnements que nous allons pouvoir personnaliser. Voici les lignes à décommenter et à modifier :

# Adresse IP de l'hôte PostgreSQL, puisque c'est sur la même machine, indiquez l'IP de boucle locale
STORK_DATABASE_HOST=127.0.0.1
# Nom de la base de données Stork
STORK_DATABASE_NAME=db_stork
# Nom de l'utilisateur pour la base de données Stork
STORK_DATABASE_USER_NAME=user_stork
# Mot de passe de cet utilisateur
STORK_DATABASE_PASSWORD=CHq0OLy6Obxdmu0ftCZfddLTyGN5S6Rp

Enregistrez la configuration et validez. Indiquez bien l'adresse IP "127.0.0.1" comme sur l'exemple ci-dessus, sinon vous risquez d'obtenir l'erreur spécifiée ci-dessous (ce qui impliquerait de modifier la configuration de PostgreSQL) :

connection.go:122   Problem connecting to db, trying again in 2 seconds, 1/10  error="unable to connect to the database using provided settings: FATAL #28000 authentification peer échouée...

Ensuite, activez le démarrage automatique du service Stork Server :

sudo systemctl enable isc-stork-server

Puis, démarrez-le dès maintenant :

sudo systemctl start isc-stork-server

Enfin, vérifiez le statut du service :

sudo systemctl status isc-stork-server

D. Connexion à l'interface de Stork

À partir de là, vous devez pouvoir vous connecter à l'interface de Stork. Ouvrez un navigateur, puis indiquez l'adresse IP ou le nom DNS de votre serveur. Par défaut, l'application écoute sur le port 8080. Par exemple :

http://192.168.14.102:8080

Vous devriez arriver sur une page de connexion. Utilisez les identifiants par défaut, à savoir "admin/admin".

Lors de la première connexion, vous serez invité à changer le mot de passe de votre compte. Définissez un mot de passe robuste. Sachez que dans les paramètres de l'application, depuis l'interface web, vous pouvez créer d'autres comptes utilisateurs.

Bienvenue sur le tableau de bord de Stork ! Actuellement, il est vide. C'est normal, nous n'avons pas encore installé le moindre agent.

III. Installer un agent Stork pour KEA DHCP et Bind9

Désormais, nous allons voir comment connecter un serveur équipé de KEA DHCP Server et/ou Bind9 à Stork, afin de pouvoir le superviser à distance. Cela s'appuie sur un agent qu'il va falloir installer sur la machine pour ensuite effectuer l'inscription auprès de Stork.

  • Serveur DHCP KEA : vous devez installer et configurer KEA Control Agent (kea-ctrl-agent), en plus du serveur DHCP, afin de permettre la connexion entre Stork et le serveur DHCP. Cela est à faire en plus de l'installation de l'agent Stork.
  • Serveur Bind9 : vous n'avez pas besoin de l'agent KEA Control Agent, puisque l'agent Stork suffira.

Dans cet exemple, nous allons effectuer la configuration sur un serveur nommé "srv-dns" qui héberge à la fois Bind9 et le DHCP KEA Server. Toute la configuration décrite ci-dessous est à effectuer sur le serveur DHCP / DNS.

Note : vous pouvez installer le serveur Stork et l'agent Stork sur le même serveur, si votre service DHCP/DNS est aussi installé sur le même serveur. Néanmoins, il conviendra de modifier la directive "STORK_AGENT_PORT" du fichier "agent.env", car, par défaut, les deux sont en écoute sur le port 8080.

A. Installer KEA Control Agent

Ce serveur DHCP a besoin du paquet "kea-ctrl-agent" pour qu'il puisse être interrogé à distance par le serveur Stork. De ce fait, vous devez exécuter la commande suivante pour l'installer :

sudo apt update
sudo apt install kea-ctrl-agent

À titre d'information, voici le chemin vers le fichier de configuration de cet agent :

/etc/kea/kea-ctrl-agent.conf

B. Préparer Bind9 ou KEA DHCP Server

Afin que tout fonctionne correctement, vous devez adapter la configuration de Bind9 ou KEA DHCP Server (selon le service que vous utilisez).

  • Pour Bind9

Vous devez modifier le fichier de configuration de Bind9 pour ajouter la publication des statistiques (elles seront accessibles en local à l'agent Stork). Ouvrez ce fichier de configuration :

sudo nano /etc/bind/named.conf

Puis, à la suite, ajoutez ces trois lignes :

statistics-channels {
    inet 127.0.0.1 port 8053 allow { 127.0.0.1; };
};

Enregistrez et fermez le fichier. Relancez le service Bind9 :

sudo systemctl restart named

Voilà, c'est bon pour Bind9. Sans cela, vous allez obtenir l'erreur suivante : "Cannot parse BIND 9 statistics-channels clause. Unable to gather statistics.".

  • Pour KEA DHCP Server

Concernant KEA DHCP Server, il est nécessaire de modifier la configuration pour lancer un "control-socket" que pourra solliciter l'agent installé précédemment. Pour cela, il convient d'ouvrir le fichier de configuration principal (ici, c'est le DHCP IPv4 qui est utilisé).

sudo nano /etc/kea/kea-dhcp4.conf

Puis, dans le bloc "Dhcp4", ajoutez ce bout de code :

        "control-socket": {
                "socket-type": "unix",
                "socket-name": "/run/kea/kea4-ctrl-socket"
        },

Ici, j'ai repris le même nom de socket que celui déclaré dans le fichier "/etc/kea/kea-ctrl-agent.conf". C'est important pour que tout fonctionne.

En complément, vous devez aussi charger 2 hooks pour assurer le suivi des baux DHCP et des statistiques à partir de Stork. Ajoutez ces lignes à la suite du code ajouté précédemment :

        "hooks-libraries": [
                {
                        "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_stat_cmds.so"
                },
                {
                        "library": "/usr/lib/x86_64-linux-gnu/kea/hooks/libdhcp_lease_cmds.so"
                }
        ],

Ce qui donne :

Enregistrez et fermez le fichier. Relancez le service :

sudo systemctl restart kea-dhcp4-server

Voilà, vous pouvez passer à la suite.

C. Installer l'agent Stork

Pour récupérer l'agent Stork, il y a deux méthodes :

  • Le récupérer depuis les dépôts officiels de Cloudsmith (comme nous l'avons fait pour la partie serveur).
  • Le récupérer depuis le serveur Stork, à partir de l'adresse "http://192.168.14.102:8080/stork-install-agent.sh", mais par défaut, cela retourne une erreur (Problem reading '/usr/share/stork/www/assets/pkgs' directory with packages) car le paquet n'est pas présent sur le serveur. C'est à vous de le télécharger et de le positionner dans ce répertoire, si vous souhaitez utiliser cette méthode.

Ici, nous allons utiliser les dépôts officiels. Donc, nous devons l'ajouter sur la machine :

curl -1sLf 'https://dl.cloudsmith.io/public/isc/stork/cfg/setup/bash.deb.sh' | sudo bash

Procédez à l'installation de l'agent :

sudo apt install isc-stork-agent

Puis, modifiez le fichier "agent.env" pour personnaliser la configuration de l'agent.

sudo nano /etc/stork/agent.env

Dans ce fichier, vous devez modifier plusieurs lignes :

# Nom de l'agent Stork, c'est-à-dire de l'hôte local
STORK_AGENT_HOST=srv-dns.it-connect.local
# Ecouter pour les connexions Stork, utile si vous n'utilisez pas Grafana
STORK_AGENT_LISTEN_STORK_ONLY=true
# Indiquer le chemin complet vers le serveur Stork
STORK_AGENT_SERVER_URL=http://192.168.14.102:8080

Quand c'est fait, enregistrez et fermez ce fichier. Puis, activez le démarrage automatique du service de l'agent et lancez-le dès maintenant.

sudo systemctl enable isc-stork-agent
sudo systemctl start isc-stork-agent

Vérifiez le statut de l'agent :

sudo systemctl status isc-stork-agent

C'est important pour voir s'il y a une éventuelle erreur, mais aussi pour voir si l'agent parvient bien à récupérer les données de nos services ISC.

D. Valider l'inscription sur le serveur Stork

Basculez sur l'interface web de Stork. À partir du menu "Services", cliquez sur "Machines" (1) afin de pouvoir cliquer sur "Unauthorized" (2). En principe, ici, vous devriez voir un hôte en attente d'approbation. Cliquez sur le menu burger (3) pour valider la connexion.

IV. Aperçu de l'interface de Stork

Désormais, tout est en place ! Les informations vont remonter dans Stork, et vous allez pouvoir suivre l'état de vos services DHCP et DNS basés sur les solutions ISC. Vous retrouverez notamment les fonctionnalités évoquées en début d'article.

Le tableau de bord DHCP permet d'avoir une vue d'ensemble sur tous vos serveurs DHCP : nombre d'étendues, statistiques d'utilisation, état du service, etc...

Vous pouvez également rechercher un bail DHCP à partir d'un nom d'hôte, d'une adresse MAC, etc.

Vous pouvez afficher des détails sur les subnets (étendues) de vos serveurs DHCP. En cliquant sur un subnet, il est possible d'obtenir un graphique mettant en évidence l'utilisation de l'étendue (nombre d'IP disponibles, nombre d'IP utilisées, etc.).

Vous pouvez aussi afficher la configuration d'un subnet, comme le montre l'image ci-dessous.

V. Conclusion

En suivant ce tutoriel, vous devriez être en mesure d'installer la solution Stork sur un serveur Linux, tout en déployant et configurant un premier agent sur un serveur DHCP et/ou DNS. Ici, nous avons utilisé des machines différentes, mais comme je l'ai évoqué, il est possible d'installer Stork sur le serveur DHCP/DNS en lui-même, si ce n'est qu'il faudra ajuster les ports d'écoute.

Pour aller plus loin, vous pouvez vous intéresser à l'intégration avec Grafana afin de bénéficier de statistiques et graphes plus précis, et un suivi dans le temps. Voici le lien vers la documentation de Stork :

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.