Intégration domotique Unbound, gratuite et open source

Résolveur DNS Unbound : requêtes, cache, temps de récursion, SERVFAIL, alertes, vider le cache.
Suivez votre résolveur DNS Unbound depuis Gladys, sur votre réseau local : requêtes par minute, taux de réponse du cache, temps de récursion moyen, réponses SERVFAIL et NXDOMAIN, temps de fonctionnement, et une alerte quand il ne répond plus, échoue trop souvent ou reçoit une avalanche de requêtes. Unbound est souvent le résolveur récursif placé derrière Pi-hole, AdGuard Home ou Blocky : eux bloquent les publicités, Unbound répond au reste. Cette intégration surveille le résolveur, pas le blocage.
Testée contre un vrai Unbound 1.25.2 (paquet Alpine, dans Docker, avec les certificats d'
unbound-control-setupet de vraies requêtesdig), pas encore avec une vraie installation de Gladys : vos retours sont les bienvenus. Si quelque chose ne marche pas comme décrit, dites-le sur le forum Gladys ou dans les issues.
Ce qu'il faut
- Gladys Assistant 5.1.0 ou plus récent.
- Unbound avec son contrôle à distance activé, le canal qu'utilise
unbound-control. Gladys envoie les mêmes commandes queunbound-control stats_noresetetunbound-control status: elle ne fait que lire, et ne lance jamaisstats, qui remet les compteurs à zéro. - Pour les chiffres SERVFAIL et NXDOMAIN, les statistiques étendues.
Dans unbound.conf :
server:
extended-statistics: yes
remote-control:
control-enable: yes
# Une adresse de la machine Unbound que Gladys peut atteindre (pas
# 127.0.0.1 : Gladys fait tourner l'intégration dans son propre conteneur).
control-interface: 192.168.1.2
control-port: 8953
Créez ensuite les certificats une fois, sur la machine Unbound, puis redémarrez Unbound :
sudo unbound-control-setup
sudo systemctl restart unbound
unbound-control-setup écrit trois fichiers, en général dans /etc/unbound :
unbound_server.pem, unbound_control.pem et unbound_control.key (plus la
clé du serveur, qui reste là). Vérifiez que sudo unbound-control status
fonctionne sur la machine avant de continuer.
Si statistics-interval est réglé dans unbound.conf, réglez aussi
statistics-cumulative: yes : sinon Unbound remet ses compteurs à zéro à
chaque intervalle et les taux sont faux.
Configuration
Dans Gladys, Intégrations → Unbound → Configuration :
- Adresse : l'adresse IP ou le nom de la machine Unbound, avec
:portsi le port de contrôle n'est pas 8953. - Nom : le nom de l'appareil dans Gladys (facultatif).
- Connexion : TLS avec certificats (par défaut dans Unbound), ou TCP
simple si
unbound.confindiquecontrol-use-cert: no. Le TCP simple n'a aucun mot de passe : quiconque atteint le port peut arrêter Unbound. Ne le gardez que pour un port fermé au reste du réseau. - Certificats : ouvrez chaque fichier avec un éditeur de texte (
sudo cat /etc/unbound/unbound_control.pem) et collez tout son contenu, de-----BEGINà-----END, dans Certificat du serveur (unbound_server.pem), Certificat client (unbound_control.pem) et Clé client (unbound_control.key). Le champ ne garde qu'une ligne : c'est normal, l'intégration remet les retours à la ligne. La clé est conservée comme secret, jamais réaffichée ni écrite dans les logs. - Options : l'intervalle de rafraîchissement (1 minute par défaut), les deux seuils d'alerte, Autoriser à vider le cache (désactivé par défaut), et la langue des noms de fonctionnalités.
- Enregistrez, puis Tester la connexion : elle affiche la version d'Unbound, la connexion utilisée, son temps de fonctionnement et si les statistiques étendues sont actives.
- Dans l'onglet Découverte, ajoutez l'appareil.
L'appareil
Un appareil pour le serveur, avec ces fonctionnalités :
| Fonctionnalité | Ce qu'elle montre |
|---|---|
| Joignable | 1 quand le contrôle à distance répond, 0 sinon |
| Requêtes DNS par minute | Requêtes reçues, entre les deux dernières lectures |
| Taux de réponse du cache | Part des requêtes servies par le cache, 15 dernières minutes (%) |
| Temps de récursion moyen | Temps pour résoudre un nom absent du cache, 15 dernières minutes |
| SERVFAIL par minute | Résolutions en échec (statistiques étendues) |
| NXDOMAIN par minute | Noms qui n'existent pas (statistiques étendues) |
| Temps de fonctionnement | Heures depuis le démarrage d'Unbound |
| Version | Version d'Unbound |
Sans les statistiques étendues, l'appareil n'a ni SERVFAIL ni NXDOMAIN ; activez-les et Gladys propose Mettre à jour dans l'onglet Découverte. Les taux apparaissent à partir de la deuxième lecture. Après un redémarrage d'Unbound, ses compteurs repartent de zéro : les taux reviennent une lecture plus tard.
Tableau de bord
Le widget Unbound montre trois tuiles (requêtes par minute, taux de cache, temps de récursion) et une liste : l'état du résolveur, SERVFAIL et NXDOMAIN par minute (SERVFAIL en orange au-dessus de son seuil d'alerte), temps de fonctionnement et version. Quand Autoriser à vider le cache est activé, il a aussi un bouton Vider le cache.
Scènes
Déclencheurs
- Unbound ne répond plus : deux lectures de suite sans réponse (la deuxième 15 secondes après la première). Variables : nom du serveur, appareil, erreur.
- Unbound répond de nouveau : retour après une panne, avec les minutes sans réponse.
- SERVFAIL d'Unbound au-dessus du seuil : les réponses SERVFAIL par minute atteignent Alerte SERVFAIL de la configuration (20 par défaut, 0 la désactive). Il se déclenche une fois, puis de nouveau seulement après un retour sous le seuil. Statistiques étendues requises.
- Requêtes Unbound qui s'emballent : les requêtes par minute atteignent Alerte d'emballement (2000 par défaut, 0 la désactive), pour un appareil qui boucle ou un logiciel malveillant. Même règle d'une seule fois.
Actions
- Lire les statistiques Unbound : lit Unbound maintenant. Donne une phrase (« Unbound : 120 requêtes par minute, 85 % servies par le cache, 32 ms par récursion. ») pour un message ou une annonce vocale, et les chiffres pour une condition.
- Vider le cache d'Unbound : vide le cache, pour un domaine et tout ce qui est en dessous, ou en entier quand le champ est vide. Refusé tant qu'Autoriser à vider le cache n'est pas activé. Utile après la modification d'un enregistrement DNS à la maison.
Idées de scènes
- Unbound ne répond plus → envoyer un message : « Le DNS de la maison est en panne ». Ajoutez Unbound répond de nouveau pour la bonne nouvelle.
- SERVFAIL d'Unbound au-dessus du seuil → un message avec le taux : le lien Internet ou les serveurs amont ont un problème.
- Chaque matin à 8 h → Lire les statistiques Unbound → envoyer la phrase.
- Requêtes Unbound qui s'emballent → une notification, pour chercher l'appareil qui s'emballe.
Dépannage
- « ne répond pas » : mauvaise adresse ou mauvais port, Unbound arrêté, ou
control-interfaceencore sur127.0.0.1(par défaut). Gladys fait tourner l'intégration dans un conteneur : il lui faut une adresse du réseau, et un pare-feu ouvert sur le port 8953 pour la machine Gladys. - « TLS refusé » : un des trois champs de certificats ne correspond pas aux
fichiers de cet Unbound (ils changent à chaque
unbound-control-setup -r), ou Unbound est en mode simple (control-use-cert: no) : choisissez TCP simple. - « connexion fermée : TLS attendu ? » : TCP simple est choisi mais Unbound attend du TLS : choisissez TLS avec certificats.
- « collez tout le fichier » : un champ de certificat ne contient qu'une
partie du fichier ; copiez tout, lignes
-----BEGINet-----ENDcomprises. - Ni SERVFAIL ni NXDOMAIN : ajoutez
extended-statistics: yessousserver:, redémarrez Unbound, puis Mettez à jour l'appareil dans l'onglet Découverte. - Taux bizarres ou absents : un autre outil lance
unbound-control stats(qui remet les compteurs à zéro), oustatistics-intervalest réglé sansstatistics-cumulative: yes. - Logs : Intégrations → Unbound → Logs. Ajoutez
LOG_LEVEL=debugpour voir chaque lecture.
Limites
- Un seul serveur Unbound par installation de l'intégration.
- Développée avec un vrai Unbound dans Docker, sans vraie installation de Gladys : vos retours sont les bienvenus.
- Les taux par minute sont mesurés entre deux lectures : un pic plus court que l'intervalle de rafraîchissement est lissé.
- Le taux de cache et le temps de récursion couvrent les 15 dernières minutes ; juste après le démarrage de l'intégration, ils couvrent le temps depuis le démarrage d'Unbound.
- Par un socket Unix seulement (
control-interface: /run/unbound.ctl), Unbound est injoignable depuis le conteneur de Gladys : utilisez une adresse réseau. - Sans lien avec NLnet Labs.
Paramètres de configuration
Voici les paramètres demandés par Unbound dans son écran de configuration dans Gladys.
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| Votre serveur Unbound | section | Non | Gladys lit Unbound par son contrôle à distance (remote-control: dans unbound.conf, port 8953) : control-enable: yes, et control-interface sur une adresse que Gladys atteint. |
| Adresse | string | Oui | Adresse IP ou nom du serveur, avec :port si ce n'est pas 8953. |
| Nom | string | Non | Nom de l'appareil dans Gladys. Vide : « Unbound » suivi de l'adresse. |
| Connexion | select | Non | TLS avec les certificats d'unbound-control-setup (par défaut dans Unbound), ou TCP simple si unbound.conf indique control-use-cert: no. |
| Certificats (TLS) | section | Non | Ouvrez chaque fichier créé par unbound-control-setup (souvent dans /etc/unbound) et collez tout son contenu, de -----BEGIN à -----END. Inutile en TCP simple. |
| Certificat du serveur (unbound_server.pem) | string | Non | |
| Certificat client (unbound_control.pem) | string | Non | |
| Clé client (unbound_control.key) | secret | Non | Conservée par Gladys, jamais réaffichée ni écrite dans les logs. |
| Options | section | Non | |
| Intervalle de rafraîchissement | select | Non | Fréquence de lecture d'Unbound. Les taux par minute sont mesurés entre deux lectures. |
| Alerte SERVFAIL (par minute) | number | Non | L'événement de scène se déclenche quand les réponses SERVFAIL atteignent ce rythme (extended-statistics: yes requis). 0 : désactivé. |
| Alerte d'emballement (requêtes par minute) | number | Non | L'événement de scène se déclenche quand les requêtes atteignent ce rythme : un appareil qui s'emballe, une boucle. 0 : désactivé. |
| Autoriser à vider le cache | boolean | Non | Désactivé par défaut : Gladys ne fait alors que lire Unbound. Activé : l'action de scène et le bouton du widget peuvent vider le cache (flush_zone). |
| Langue des noms de fonctionnalités | select | Non | Noms donnés aux fonctionnalités à l'ajout de l'appareil, et textes des événements et actions de scène. |
Comment installer Unbound dans Gladys
- Dans Gladys, ouvrez Intégrations : Unbound apparaît dans le catalogue, aux côtés des intégrations natives, avec un badge communautaire.
- Cliquez sur Installer. Gladys télécharge l'image Docker (
ghcr.io/guim31/gladys-unbound:1.0.0), la démarre dans un bac à sable isolé du cœur, et génère l'interface de l'intégration (appareils, découverte et configuration). - Ouvrez l'écran Configuration de l'intégration, remplissez les paramètres, puis enregistrez.
- Vous pouvez aussi l'installer directement depuis l'URL de son dépôt : https://github.com/guim31/gladys-unbound.
Unbound nécessite Gladys >=5.1.0. Le catalogue dans Gladys se rafraîchit toutes les heures : une nouvelle version est donc disponible au plus tard une heure après sa sortie.
Vous n'utilisez pas encore Gladys ? C'est gratuit et open source : suivez le guide d'installation pour démarrer.
À propos des intégrations externes
Unbound est une intégration externe : une intégration communautaire empaquetée dans un conteneur Docker et publiée sur GitHub, que Gladys installe en un clic et exécute dans un bac à sable isolé de son cœur. Elle est publiée et maintenue par guim31, et non par l'équipe cœur de Gladys.
- Parcourir toutes les intégrations, natives et communautaires
- Créer et publier votre propre intégration externe
- Code source sur GitHub — source de cette documentation