Chez de nombreux opérateurs internet (les FAI), l’@IP fixe n’est pas la règle. Elle change en général toute les 24h. Ce qui ne facilite pas les choses si on en a besoin pour un serveur web, un cloud privé ou un besoin d’intervenir à distance. Heureusement, il existe une solution pour y parvenir malgré tout, celle de l’adresse DNS dynamique.

Le principe est simple. Une société met à votre disposition un nom (en fait un sous domaine) et un petit script va détecter le changement d’@IP et mettre à jour leur DNS. Gros avantage alors puisque vous disposerez d’un nom qui restera toujours le même. Malheureusement pour de nombreuses personnes, la majeure partie des sociétés qui proposait ces solutions les ont rendu payante. Le tarif étant excessif, des solutions alternatives ont été recherché. Je vous en propose une.

 

Un dyndns gratuit… ou presque !

Presque car il faut disposer d’un nom de domaine chez OVH. Il est possible que d’autres hébergeurs disposent de cette fonctionnalité également, mais je n’ai pas regardé.

Dans mon cas, cela tombe bien, car cela fait quelques années que j’ai transféré mon support Web chez eux.

Quand on voit combien coute un domaine et combien coute le service ailleurs (DynDNS par exemple), le calcul est très rapide, surtout qu’un domaine permet d’abriter de nombreux sous-domaines et donc, de nombreuses adresses dynamiques…

L’investissement le plus important est un Raspberry PI, un petit ordinateur de la taille d’un paquet de cigarette. Il fonctionne sous Linux (dans une version dédiée). On peut faire avec lui plein de choses, comme de la vidéo surveillance ou de la sauvegarde distante.

Cet article va décrire comment utiliser un Raspberry comme client dynhost.

Chez OVH

Dans votre espace client, choisissez l’onglet DynHost

1-Onglet Dynhost

Cliquez sur « Gérer les accès » puis sur l’icône « Créer un identifiant »

2-Creer_ID

Remplissez les champs suivants :

  • identifiant
  • le sous domaine que l’identifiant va pouvoir gérer (attention, il faudra ensuite créer le sous-domaine)
  • un mot de passe (attention, il sera en clair dans les scripts, il conviendra donc d’en créer sécurisé mais qui ne soit pas un de vos mots de passe habituel)

3-Creer_ID suite

N’oubliez pas de valider pour enregistrer.

Retour à la page d’administration d’OVH et cliquez sur « Ajoutez un DynHost ».

Remplissez le sous-domaine et une adresse IP valide (la votre par exemple). Et validez.

4-Creer_dyndns

Une chose à savoir, c’est que l’on peut créer un identifiant qui va pour gérer tous les sous-domaines. Il suffit pour cela mettre une * dans le libellé « sous domaine ».

On peut également créer un ID spécifique à chaque sous-domaine dynhost. Cela me semble plus sécurisé.

Nous en avons terminé pour la partie OVH.

 

Coté Raspberry

En premier, il va falloir récupérer lynx, un antique navigateur web tout en texte.

Dans le terminal, il faudra taper :

sudo apt-get install lynx

Ensuite, dans votre home directory, créer un dossier script dans lequel vous pourrez mettre les scripts qui vont permettre ce dynamique DNS.

Tout est basé sur un service fourni par OVH dont on peut récupérer les ressources sur leur site. Je vous propose un autre lien comprenant tout ce qui est nécessaire. Il suffira ensuite de transférer le dossier dynhosts dans le dossier script (via ftp) et apporter quelques modifications.

Tout va reposer sur 2 scripts. Le premier est écrit en sh. C’est celui dont il faudra personnaliser les variables. Le second est écrit en python et sera appelé automatiquement par le premier. Il ne faut pas le modifier (sauf si OVH modifiait un jour sa façon de procéder).

Que fait le script ?

Dans la première partie, il faut personnaliser les variables HOST, LOGIN et PASSWORD avec les éléments soumis dans l’interface d’administration d’OVH (cf ci-dessus). Les autres variables sont modifiables si vous le souhaitez, mais ce n’est pas nécessaire si vous conservez l’arborescence proposée .

Ensuite, le script va récupérer, via Lynx, votre adresse IP auprès du site web monip.org et la mettre dans une variable. Après comparaison, si l’@IP a été modifié, un script python va être appelé pour effectuer la mise à jour auprès de OVH. Si l’@IP n’a pas été modifié, aucune mise à jour auprès d’OVH ne s’effectuera ce qui évitera de tomber en abuse.

#/bin/sh
# ++++++++++++++++++++++++++++++++++++++++++++++++++++
# DynHost - © fyve 01/2015
# Recuperation de l'@IP externe et MAJ service OVH
# ++++++++++++++++++++++++++++++++++++++++++++++++++++
#
# Config variables
HOST=sous-domaine.nom_de_domaine
LOGIN=nom_de_domaine-identifiant
PASSWORD=votre_mdp

PATH_APP=/home/pi/script/dynhost
PATH_LOG=$PATH_APP/log
PATH_FILE_OLD_IP=$PATH_APP/old_ip

# ----------------------------------------------------
# Prevent error when ipcheck.err exists
rm -f $PATH_APP/ipcheck.err

# Recuperation @IP
IP=`lynx -dump http://monip.org | grep 'IP' | sed 's/.*: //;'`
OLD_IP=`cat $PATH_FILE_OLD_IP`

echo > $PATH_LOG
echo "Run dynhost" >> $PATH_LOG
date >> $PATH_LOG

echo "Actuelle IP" >> $PATH_LOG
echo "$IP" >> $PATH_LOG
echo "Ancienne IP" >> $PATH_LOG
echo "$OLD_IP" >> $PATH_LOG

if [ -z $IP ]; then
echo "Aucune IP detectee" >> $PATH_LOG
else
if [ "$OLD_IP" != "$IP" ]; then
echo "IP modifie" >> $PATH_LOG
RESULT=""
RESULT=`$PATH_APP/ipcheck.py -a $IP $LOGIN $PASSWORD $HOST`
echo "ipcheck returns : $RESULT" >> $PATH_LOG
if [ -z "$RESULT" ]; then
echo "Success" >> $PATH_LOG
echo -n "$IP" > $PATH_FILE_OLD_IP
else
echo "Error : $RESULT" >> $PATH_LOG
fi
else
echo "No IP change" >> $PATH_LOG
fi
fi

Vérifiez que le script dynhost.sh possède bien les droits d’exécution. Si ce n’est pas le cas, un petit chmod +x et le tour sera joué.

Pour finir, il est nécessaire d’ajouter une ligne dans la crontab afin que que tout fonctionne automatiquement.

> crontab -e
*/5 * * * * /home/pi/script/dynhost/dynhost.sh

Dans cet exemple, le script sera appelé toutes les 5 minutes.

Il ne vous reste plus qu’à vérifier le fichier de log dynhost.log afin de vérifier que les appels s’effectuent correctement. Une vérification dans l’interface vous permettra de vérifier les changements d’@IP.

Petite astuce. Pour forcer la mise à jour auprès d’OVH, il suffit de mettre une adresse fictive dans le fichier old_ip.