DPFPIC renaît de ses cendres...
Mes créations vous plaisent
Merci !
Vous êtes ici : accueil » article » Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)
24 mai 2016

Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)

Rédigé par Admin
5/5  (1 avis)     Déposer un avis Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)
Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)
close

Cet article a été publié il y a 7 ans , 9 mois et 26 jours, il est donc possible qu'il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Si vous avez une IP dynamique et un nom de domaine chez Gandi.net, voici une solution pour se passer de services de DNS dynamiques tels que dyn.com ou noip.com. En effet, grâce à l’API de Gandi vous pouvez modifier vôtre zone DNS automatiquement. Et voici un script Python qui fait ça pour vous.

Je me suis inspiré de deux scripts que j'ai trouvé sur le net :

Gandyn Le script a été écrit par Charly Caulet dont l'url est: https://github.com/Chralu/gandyn
Ovh Update Le script a été trouvé sur le site de Seb dont l'url est: http://blog.isorez.fr/

Remarque : Seuls Free et Numéricable proposent une IP fixe et ne sont donc pas concernés.

Le Script updatedns.py permet de mettre à jour votre zone DNS chez Gandi et de recevoir une notification et un email sur votre Nas Synology lors du changement d'adresse IP.

Trêve de bavardages, c'est parti !

 Prérequis généraux

Pour pouvoir mettre en oeuvre ce qui suit, vous devez disposer des éléments suivants :

  • Un nom de domaine hébergé chez Gandi
  • Avoir activer l'API Gandi. (A noter que l'activation de l'API et la génération de la clé s'effectuent depuis l'interface Gandi la première fois, cette dernière permet de s'affranchir d'une authentification par mot de passe). 
  • Mon script Updatedns.py

Installation des logiciels nécessaires

Avant toute chose, il faut disposer de ipkg (un gestionnaire de paquets) sur son NAS Synology. L'installation est automatisée avec le paquet 'Bootstrap d'installation simple' de l'éditeur QTip.

Pour pouvoir utiliser le script, vous aurez besoin de Python et de Cron sur vôtre NAS. Pour l'installer, lancez les commandes suivantes en mode console : 

ipkg install python3

ipkg install cron

Installation du script

Maintenant il faut récupérer le script 'updatedns_1.1b.tar.gz' :

wget http://dpfpic.com/data/telechargements/synology/updatedns_1.1b.tar.gz

Puis,

tar xvzf updatedns_1.1b.tar.gz

et

cd updatedns

et pour finir

python3.4 setup.py install

Le résultat de la commande si tout se passe bien est :

:~/updatedns# python3.4 setup.py install
running install
running build
running build_scripts
creating build/scripts-3.4
copying and adjusting updatedns.py -> build/scripts-3.4
copying and adjusting speedtest.py -> build/scripts-3.4
copying gandierror.sh -> build/scripts-3.4
copying publicipchange.sh -> build/scripts-3.4
copying getpubliciperror.sh -> build/scripts-3.4
changing mode of build/scripts-3.4/updatedns.py from 644 to 755
changing mode of build/scripts-3.4/speedtest.py from 644 to 755
changing mode of build/scripts-3.4/getpubliciperror.sh from 644 to 755
running install_scripts
creating /opt/local
creating /opt/local/bin
copying build/scripts-3.4/updatedns.py -> /opt/local/bin
copying build/scripts-3.4/speedtest.py -> /opt/local/bin
copying build/scripts-3.4/gandierror.sh -> /opt/local/bin
copying build/scripts-3.4/publicipchange.sh -> /opt/local/bin
copying build/scripts-3.4/getpubliciperror.sh -> /opt/local/bin
changing mode of /opt/local/bin/updatedns.py to 755
changing mode of /opt/local/bin/speedtest.py to 755
changing mode of /opt/local/bin/gandierror.sh to 755
changing mode of /opt/local/bin/publicipchange.sh to 755
changing mode of /opt/local/bin/getpubliciperror.sh to 755
running install_egg_info
Creating /opt/local/lib/python3.4/site-packages/
Writing /opt/local/lib/python3.4/site-packages/updatedns-1.1b-py3.4.egg-info
:~/updatedns#

Créer un fichier de configuration  <updatedns.conf>  et insérer dedans les lignes suivantes : 

#API key generated by Gandi
API_KEY = 'your key'
#Name of the domain to update
DOMAIN_NAME = 'your domain'

#Time to live of the updated record
TTL = 300

#Filters used to find the record to update.
#By default, the updated record is "@ A xxx.xxx.xxx.xxx"
#Where 'xxx.xxx.xxx.xxx' is the updated value
RECORD = {'type':'A', 'name':'@'}

#Log level of the script. Values are :
# logging.DEBUG
# logging.INFO
# logging.WARNING
# logging.ERROR
# logging.CRITICAL
LOG_LEVEL = logging.DEBUG

#Path of the log file
LOG_FILE = '/var/log/updatedns.log'

 Placer  le fichier <updatedns.conf> dans un répertoire de préférence à l'abri des regards indiscrets,dans l'exemple ce sera :

mv updatedns.conf /opt/etc/updatedns.conf        #pour vous ce sera <Le chemin ou se trouve le fichier> vers <le chemin que vous avez envie de spécifier>

Tester updatedns.py ,dans l'exemple avec le chemin c'est celui que j'ai spécifié,le votre sera peut être différent. La commande est :

/opt/local/bin/updatedns.py --config /opt/etc/updatedns.conf

Le résultat est dans le fichier à l'emplacement que vous avez spécifié dans le fichier pour l'exemple ce sera : /var/log/updatedns.log Si tout a bien fonctionné vous devriez avoir les lignes suivantes dans ce fichier, l'exemple ici une IP représentée par des X est inchangée.

Tue, 24 May 2016 12:13:31 DEBUG DNS record IP address : xxx.xxx.xxx.xxx
Tue, 24 May 2016 12:13:31 DEBUG Current public IP address : xxx.xxx.xxx.xxx
Tue, 24 May 2016 12:13:31 DEBUG Public IP address unchanged. Nothing to do.

Utilisation de Crontab

Créer une tâche cron pour mettre tout ça en auto. Pour obtenir une exécution toutes les 5mn de updatedns.py, ajouter la ligne ci-dessous au fichier crontab (/opt/etc/crontab) Attention au chemin que vous avez spécifié, éditez le fichier, dans l'exemple avec Synology, ce se sera:

SHELL=/bin/sh
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/sbin:/opt/bin
MAILTO=""
HOME=/
# ---------- ---------- Default is Empty ---------- ---------- #
*/5 * * * * root /opt/local/bin/updatedns.py --config /opt/etc/updatedns.conf

Activer la tâche en relançant cron

/opt/etc/init.d/S10cron

Voici un exemple de réception de mail lors du changement d'adresse ip externe :

Cher utilisateur,

L'adresse IP publique sur Svrsokar a changée. 
DNS Gandi travaille sur une nouvelle zone. Ancienne adresse IP publique : xxx.xxx.xxx.xxx Nouvelle adresse IP publique : yyy.yyy.yyy.yyy Débit internet : ---------------- Ping: 22.138 ms Download: 5.81 Mbit/s Upload: 0.73 Mbit/s Sincères salutations, Synology DiskStation

Notes complémentaires :

L'installation est donnée ici à titre d'exemple sur un NAS Synology modèle DS415+, il est évident que sur ce type de NAS, c'est en console que se déroulera l'installation . Il est important que les fichiers soient sécurisés, accessibles que par root, voir chiffrés avec mdp, il ne faut pas oublier qu'il y a des données importantes mais c'est un autre sujet…

Vous avez aimé cet article ? Alors partagez-le avec vos amis en cliquant sur les boutons ci-dessous :

"merci"

    5/55Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)
Comment Configurer Gandi avec une Ip dynamique sur un NAS Synology (Updatedns.py)
Hello,

Merci pour l'article et le script, je m'en suis inspiré pour réaliser la manip sur mon DS 916+, je n'ai pas installé ipkg & cie, en utilisant le python proposé par Syno et le planificateur de taches intégré ça marche nickel.
Je vais enfin pouvoir désactiver QuickConnect :)
Publié le 29-10-2017 22:29 par hot22shot
↓