Si vous possédez un raspberry pi chez vous ou même une machine qui tourne sous Linux alors il se peut que vous souhaitiez pouvoir y accéder depuis internet plutôt que par le réseau local. Malheureusement vous n’avez peut-être pas une IP fixe fournie par votre FAI et pour cela il y a une solution : les DNS dynamiques. Bien qu’il existe de nombreuses plateformes proposant cela gratuitement, vous pouvez également utiliser un nom de domaine chez OVH puisque l’option « DynHost » est comprise dans leur offre.
La configuration de DynHost chez OVH est simple et se compose de plusieurs étapes :
Ces étapes sont documentées sur le site de OVH ici donc je ne vais pas les détailler plus que cela, mais je les ai répertorié ici pour que vous puissiez repérer les seules étapes nécessaires pour nous dans cette documentation.
Le script qui permettra de mettre à jour automatiquement votre adresse IP sur votre DynHost sera composé de X parties :
Pour récupérer l’adresse IP configurée actuellement sur le DynHost nous utiliserons la commande dig, si vous ne la possédez pas vous pouvez l’installer par exemple sur debian comme ceci :
sudo apt-get update
sudo apt-get install dnsutils
Une fois installé vous pouvez tester de récupérer cette adresse IP comme ceci :
dig +short votre.url.dynhost
Pour obtenir l’adresse IP courante nous utiliserons tout simplement la commande curl sur le site ifconfig.co, bien pratique pour notre cas :
curl ifconfig.co
Il suffira alors de comparer les valeurs de ces deux commandes et si l’adresse IP enregistrée dans le DynHost est différente de l’adresse IP courante alors on mettra à jour le DynHost.
Il existe différentes méthodes pour mettre à jour le DynHost OVH : des packages debian, des scripts python, etc. Personnellement j’ai trouvé plus simple d’utiliser une bonne vieille commande curl sur le script OVH disponible avec les paramètres nécessaires :
curl --user "user:password" "https://www.ovh.com/nic/update?system=dyndns&hostname=votre.url.dynhost&myip=127.0.0.1"
Maintenant que vous avez compris comment cela fonctionnait, voici le script complet que j’ai réalisé :
#/bin/sh
#
# CONFIG
#
HOST=votre.url.dynhost
LOGIN=votre-login-dynhost
PASSWORD=votre-mot-de-passe
PATH_LOG=/var/log/dyndns
#
# GET IPs
#
HOST_IP=`dig +short $HOST`
CURRENT_IP=`curl ifconfig.co`
#
# LOG
#
echo > $PATH_LOG
echo "Run dyndns" >> $PATH_LOG
date >> $PATH_LOG
echo "Current IP" >> $PATH_LOG
echo "$CURRENT_IP" >> $PATH_LOG
echo "Host IP" >> $PATH_LOG
echo "$HOST_IP" >> $PATH_LOG
#
# DO THE WORK
#
if [ -z $CURRENT_IP ] || [ -z $HOST_IP ]
then
echo "No IP retrieved" >> $PATH_LOG
else
if [ "$HOST_IP" != "$CURRENT_IP" ]
then
echo "IP has changed" >> $PATH_LOG
RES=`curl --user "$LOGIN:$PASSWORD" "https://www.ovh.com/nic/update?system=dyndns&hostname=$HOST&myip=$CURRENT_IP"`
echo "Result request dynHost" >> $PATH_LOG
echo "$RES" >> $PATH_LOG
else
echo "IP has not changed" >> $PATH_LOG
fi
fi
Il vous suffit de modifier les lignes 7, 8 et 9 pour y mettre les paramètres qui correspondent à votre cas.
La ligne 11 peut également être modifiée pour définir le chemin d’accès aux logs de ce script.
Pour que ce script soit exécuté régulièrement, placez le dans le fichier /etc/cron.hourly/dyndns par exemple et exécutez ensuite la commande suivante :
sudo chmod +x /etc/cron.hourly/dyndns
Et voilà toutes les heures ce script s’exécutera et votre nom de domaine DynHost sera mis à jour s’il y a besoin.
Ce script est également disponible et maintenu sur mon GitHub.
Commentaires