Introduction
Si vous êtes l’heureux.se propriétaire d’un domaine chez Gandi, vous pouvez tout à fait utiliser l’API mise à disposition afin de mettre à jour vos enregistrements de manière automatisée et ainsi reproduire le fonctionnement d’un DNS dynamique (sans recours à un service tiers).
Pour ce faire, nous utiliserons le projet “Gandi Live DNS” disponible sur GitHub (https://github.com/arichnad/gandi-live-dns fork supportant Python 3 de https://github.com/cavebeat/gandi-live-dns).
Chez Gandi
Tout d’abord, il faut créer une clef d’API auprès de Gandi.
- Se rendre sur https://account.gandi.net/fr/ et s’authentifier,
- Aller dans la section
Sécurité, - Générer une clé clef d’API de production.
Il faut ensuite créer les enregistrements DNS pour les sous-domaines que vous souhaitez utiliser.
Sur votre serveur
Installation
Depuis une session SSH
- Installation des modules python nécessaires :
$ apt install python-requests python-args python-simplejson
- Création d’un répertoire
scriptsdans le home de l’utilisateur :
$ cd ~
$ mkdir scripts
$ cd scripts
- Téléchargement du script :
$ wget https://github.com/arichnad/gandi-live-dns/archive/refs/heads/master.tar.gz
$ tar xzvf master.tar.gz
$ mv master-gandi-live-dns gandi-live-dns
$ rm master.tar.gz
$ cd gandi-live-dns/src
- Modifier le fichier de configuration :
$ cp example.config.py config.py
$ vim config.py
-
Ajuster les paramètres suivants :
api_secret: l’API LiveDNS généré plus haut,domain: le domaine principal des sous-domaines qui seront à mettre à jour,subdomains: liste du ou des sous-domaines à mettre à jour,ifconfig: l’URL du service de lookup IP.
-
Il est désormais possible de lancer le script pour mettre à jour l’enregistrement
$ ./scripts/gandi-live-dns/src/gandi-live-dns.py
Automatisation
Afin de vérifier de manière périodique si l’IP du serveur correspond à l’enregistrement, il sera nécessaire de planifier une exécution du script via cron.
- Lancer l’éditeur
cronpour l’utilisateur :
$ crontab -e
- Ajouter la ligne suivante pour exécuter le script toutes les 20 minutes :
*/20 * * * * /usr/bin/python /home/<nom d'utilisateur>/scripts/gandi-live-dns/src/gandi-live-dns.py >/dev/null 2>&1
Pour un NAS Synology
Dans le cas d’un serveur NAS Synology, les sections précédentes (Gandi et installation) restent valables, néanmoins, 2 éléments diffèrent :
-
Prérequis :
- Depuis la console SSH, installer
pip:$ sudo python -m ensurepip --upgrade $ sudo pip3 install --upgrade pip - Et les modules Python nécessaires :
$ sudo pip3 install requests args simplejson
- Depuis la console SSH, installer
-
Automatisation :
- Éditer le fichier
/etc/crontab - Ajoute la ligne suivante :
*/20 * * * * <nom d'utilisateur> python /volume1/homes/<nom d'utilisateur>/scripts/gandi-live-dns/src/gandi-live-dns.py >/dev/null 2>&1(Attention à bien séparer les colonnes par des tabulations et non des espaces.) - Recharger la configuration du service
cron:$ sudo synosystemctl reload crond
- Éditer le fichier