Jan.01

DynDNS/DynHost auto-update

Accéder à ses données depuis n’importe où, c’est un concept plutôt fun, non ? Par contre, accéder à des dizaines de To de données depuis n’importe où, ça devient un peu plus compliqué…

Il y a peu, il m’a été demandé par une grosse boîte de mettre en oeuvre ce concept, sur base de serveurs existants, tournants sous ubuntu, et présents dans les bureaux de l’entrprise en question.

Vu le volume de données, et le matériel dont disposait l’entreprise; à savoir serveurs samba redondants (cfr cet article), j’ai décidé d’utiliser ces machines directement depuis internet.

Par contre, l’entreprise était reliée à internet par un modem avec adresse IP dynamique, et il fallait donc mettre en place un système type DynDNS/équivalent. En l’occurrence, l’entreprise disposait d’un site hébergé chez OVH, qui propose un type de champs « DynHOST » dans la zone DNS, ce que nous allons utiliser pour permettre aux utilisateurs de se connecter via « intranet.mon-entreprise.be » au lieu de xxx.xxx.xxx.xxx (une ip compliquée et qui change souvent: berk!). Assez parlé; au boulot !

Pour mettre à jour l’adresse ip sur les serveurs DNS, nous utiliserons updatedd (téléchargeable ici), en version 2.6 (ça date, mais ça marche toujours aussi bien !).

Téléchargement de l’archive:

wget http://nongnu.askapache.com/updatedd/updatedd_2.6.tar.gz

Extraction:

tar xvf updatedd_2.6.tar.gz
cd updatedd_2.6

Première chose à faire; corriger une petite erreur présente dans le fichier src/plugins/libovh.h, où l’adresse des serveurs d’OVH contient une petite faute:

vi src/plugins/libovh.h #ajouter www. devant ovh.com

de façon à obtenir:

#define DYNDNSHOST "www.ovh.com"

Il ne reste donc qu’à installer updatedd:

./configure
make
sudo make install

Enfin, vous pouvez tester le tout grâce à la commande:

updatedd ovh -- --ipv4 ip user:pass domain

Vous remarquez ici qu’il vous faut renseigner un utilisateur, mot de passe, et domaine. Les deux premiers correspondent à l’utilisateur DynHost créé via votre manager OVH, et le domaine correspond lui à l’enregistrement concerné. intra.mon-entreprise.be dans notre cas.

Have fun.

Edit 13/11/2013:

Comme j’ai reçu beaucoup de demandes pour automatiser la chose, voici un petit script pouvant le faire, et comment demander à cron de le lancer périodiquement:

#!/bin/bash
#OVH credentials:
user=utilisateur_DynHost
pass=mot_de_passe_DynHost
dom=sous-somaine_DynHost
#-------------------------------------------
touch /tmp/ip_old
ip=`w3m -dump http://www.monip.org/ | awk -F': ' '/IP/ { print $2 }'`
ip_old=`cat /tmp/ip_old`
echo ${ip_old} > /tmp/ip_old
if [ "${ip}" != "${ip_old}" ] then
updatedd ovh -- --ipv4 ${ip} ${user}:${pass} ${dom}
fi

Je sais qu’il n’est pas parfait, je l’ai refait de tête (et un peu en vitesse, j’avoue) vu que je n’avais plus accès aux machines sur lesquelles j’ai déployé cette astuce… si quelqu’un y voit une faute, n’hésitez pas à m’en avertir, je me ferai un plaisir de corriger ça !

Pour ce qui est de l’endroit où placer ce fichier, j’avoue avoir oublié le répertoire exact, mais cela doit être du coté de /usr/loca/bin ou quelque chose du genre (pas très important en fait).

Enfin, voici comment demandez à Cron de le lancer périodiquement:

sudo crontab -e

Un éditeur va s’ouvrir avec le fichier de configuration de cron; ajoutez-y la ligne:

0 * * * * /chemin/vers/votre/fichier/dynHostUpdate.sh
# ce paramètre lancera le fichier toutes les minutes... à vous de voir pour la temporisation !

Enfin, redémarrez cron, et c’est terminé !

sudo service cron restart

Tech&Dev

Leave a comment

Comment