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.

  1. Se rendre sur https://account.gandi.net/fr/ et s’authentifier,
  2. Aller dans la section Sécurité,
  3. 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

  1. Installation des modules python nécessaires :
$ apt install python-requests python-args python-simplejson
  1. Création d’un répertoire scripts dans le home de l’utilisateur :
$ cd ~
$ mkdir scripts
$ cd scripts
  1. 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
  1. Modifier le fichier de configuration :
$ cp example.config.py config.py
$ vim config.py
  1. 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.
  2. 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.

  1. Lancer l’éditeur cron pour l’utilisateur :
$ crontab -e
  1. 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 :

  1. 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
      
  2. 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

Sources

dns  gandi  tech