Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 20/02/2015, à 11:32

debmac

M.A.J. facile de l'IP nom de domaine Gandi avec gandyn et Livebox play

Bonjour à tous,

Comment récupérer l'IP dynamique dans sa LIVEBOX PLAY (3) et réaliser une routine avec gandyn et une tâche cron ,réponse ci-dessous...

Orange avec la Livebox Play nous délivre une adresse IP Dynamique qui change en début de semaine d’où la difficulté de maintenir constamment à jour l'IP lors de la redirection de son nom de domaine chez Gandi.

LES INGRÉDIENTS:
La Livebox Play (3ème génération)
Gandi nous offre une API qui permet de mettre à jour son IP.
Gandyn est un script Python qui réalise un dialogue d'échanges entre XML-RPC de l'Api Gandi et un Serveur,Nas ,PC,etc...

Le script Gandyn a été écrit par Charly Caulet dont l'url est: https://githun/b.com/Chralu/gandy
À la suite d'un premier script python écrit ici: http://gerard.geekandfree.org/blog/2012 … -de-gandi/
Lorsque vous avez un Serveur,c'est mon cas (Debian Wheezy et OpenMediaVault) et que vous portez un intérêt particulier à la sécurité,ce script va vous posez un problème important !
C'est adapter.py situé dans le répertoire ipretriever, qui va collecter votre IP dynamique à cette url :  http://ipecho.net/plain , sur un serveur c'est une porte non sécurisée ouverte sur la toile selon la fréquence éditée dans le fichier crontab.

La solution pour que gandyn s'exécute en interne  c'est Benoît Meunier qui nous la  donne !
Son site : https://deftcode.eu/wiki/public/documen … nux/dyndns
Benoît Meunier a modifié le script gandyn.py, supprimé le répertoire ipretriever avec son script adapter.py ,remplacé celui-ci par un deuxième script,getLB3WanIP.py qui permet de récupérer son IP dynamique directement dans sa Livebox play, ça c'est très cool merci…

Il manque les fichiers setup.py et gandyn.conf qu'il faudra modifier,très facile à réaliser, et qui seront édités un peu plus bas sur cette page.

Voici l’ensemble des opérations ,en espérant que celles-ci soient compréhensibles de tous.
J'ai réalisé ce test d'installation sur mon PC de bureau équipé de Ubuntu LTS 14.04
Python 3.4 est installé d'office sur Ubuntu LTS.
Télécharger les deux fichiers python gandyn.py et getLB3WanIP.py sur le site de B.Meunier à l'adresse citée ci-dessus ,au passage un peu de lecture ce n'est pas perdre son temps !

Modifier l’entête des deux scripts selon la version de python3 installée sur votre machine,ici pour l'exemple python3.4 .
GetLB3WanIP.py :
Sur la ligne 17 ,supprimer  + passwd si vous ne voulez pas avoir une erreur du genre bad livebox….
Puis insérer après le signe = le mot de passe de son interface admin Livebox play .
Exemple:

urlAuth = 'http://192.168.1.1/authenticate?username=admin&password=' + passwd

devient :

urlAuth = 'http://192.168.1.1/authenticate?username=admin&password=mon_password'

Créer un fichier  <setup.py>  avec votre éditeur préféré ,insérer  les lignes ci-dessous.

#!/usr/bin/env python3.4 
from distutils.core import setup 
setup(name='gandyn', 
          version='0.1b', 
          description='Dynamic record update client for the Gandy DNS service.', 
          author='inconnu', 
          author_email='inconnu', 
          url='inconnu', 
          scripts=['gandyn.py', 'getLB3WanIP.py'], 
          )

Installer gandyn.py & getLB3WanIP.py  (comme dit plus haut,j'utilise Ubuntu,en mode graphique,il faut adapter toutes les commandes en fonction de votre Système.)

sudo python3.4 setup.py install

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

running install 
running build 
running build_scripts 
creating build 
creating build/scripts-3.4 
copying and adjusting gandyn.py -> build/scripts-3.4 
copying and adjusting getLB3WanIP.py -> build/scripts-3.4 
changing mode of build/scripts-3.4/gandyn.py from 644 to 755 
changing mode of build/scripts-3.4/getLB3WanIP.py from 644 to 755 
running install_scripts 
copying build/scripts-3.4/gandyn.py -> /usr/local/bin 
copying build/scripts-3.4/getLB3WanIP.py -> /usr/local/bin 
changing mode of /usr/local/bin/gandyn.py to 755 
changing mode of /usr/local/bin/getLB3WanIP.py to 755 
running install_egg_info 
Writing /usr/local/lib/python3.4/dist-packages/gandyn-0.1b.egg-info

Ajouter les droits d’exécution pour gandyn.py & wetLB3WanIP.py

sudo chmod +x /usr/local/bin/gandyn.py getLB3WanIP.py

Tester la récupération de l'IP sur la Livebox Play,vous pouvez taper soit admin ou votre mot de passe,les deux fonctionnent.
La commande est :

getLB3WanIP.py admin

Le résultat : L' IP dynamique de la Livebox Play doit s'afficher.

xxx.xxx.xxx.xxx

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

#Récupération de l'IP dynamique directement dans la Livebox play 
LIVEBOXPW = 'admin' 
urlWanIP = 'http://192.168.1.1/sysbus/NeMo/Intf/data:luckyAddrAddress'
 
#Le Nom du domaine qui doit être mis à jour 
DOMAIN_NAME = 'mon_domaine.com' 
#La clé API de production généré par Gandi pour mon_domaine.com 
API_KEY = 'La clé API production du domaine' 

#l'intervalle de temps entre deux exécutions de la tâche cron ,récupération et mise à jour IP de la Livebox à API Gandi (ci-dessous 300 est une valeur en seconde soit 5mn,n'est actif que si une tâche cron est éditée. 
TTL = 300 

#Filtres utilisés pour l'enregistrement à mettre à jour. 
#Par défaut,la valeur mise à jour est « @ A xxx.xxx.xxx.xxx » 
#Où 'xxx.xxx.xxx.xxx' est la valeur actualisée 
RECORD = {'type':'A', 'name':'@'} 

#Log level du script.Les valeurs sont : 
# logging.DEBUG 
# logging.INFO 
# logging.WARNING 
# logging.ERROR 
# logging.CRITICAL 
LOG_LEVEL = logging.DEBUG 

#Chemin du fichier journal Gandyn <Le chemin que vous avez envie de spécifier,dans l'exemple /usr/local/etc/gandyn.log> 
LOG_FILE = '/usr/local/etc/gandyn.log'

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

sudo mv ~/gandyn.conf /usr/local/etc/gandyn.conf               #pour vous ce sera <Le chemin ou se trouve le fichier> vers <le chemin que vous avez envie de spécifier> 

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

sudo /usr/local/bin/gandyn.py --config /usr/local/etc/gandyn.conf

Le résultat est dans le fichier <gandyn.log> à  l'emplacement que vous avez spécifié dans le fichier <gandyn.conf> pour l'exemple ce sera : /usr/local/etc/gandyn.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.

Fri, 20 Feb 2015 06:36:45 DEBUG    DNS record IP address : xxx.xxx.xxx.xxx
Fri, 20 Feb 2015 06:36:45 DEBUG    Current public IP address :xxx.xxx.xxx.xxx
Fri, 20 Feb 2015 06:36:45 DEBUG    Public IP address unchanged. Nothing to do.

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

sudo gedit /etc/crontab

Rajouter cette ligne:

*/5 * * * * root /usr/local/bin/gandyn.py --config /usr/local/etc/gandyn.conf

Activer la tâche en relançant cron

Notes complémentaires :

L'installation est donnée ici à titre d'exemple sur un pc équipée de Ubuntu LTS 14.04,il est évident que sur un Serveur,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…
Le mot de passe de la Livebox n'est pas remplacé,c'est getLB3WanIP encapsulé par gandyn.py qui permet l'utilisation de admin.


Remerciements :

- À Ubuntu.
- À Gerard.
- À C.Caulet.
- À B.Meunier.

Édit modération : merci d’utiliser les balises (code, url) pour améliorer la lisibilité de ton message.

Dernière modification par Ayral (Le 21/02/2015, à 12:02)

Hors ligne