dynhost-ovh-pour-raspberry-pi-ou-nimporte-quelle-machine-linux

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.

1. Configuration OVH

La configuration de DynHost chez OVH est simple et se compose de plusieurs étapes :

  1. Se connecter à l’espace client
  2. Sélectionner son domaine (dans le menu de gauche)
  3. Cliquer sur l’onglet « DynHost »
  4. Cliquer sur « Gérer les accès » (bouton à droite)
  5. Créer un identifiant (bouton à droite)
  6. Créer un DynHost (bouton « Ajouter un DynHost » à droite)
  7. Saisir le nom de sous-domaine et y insérer une adresse IP (une adresse IP bidon suffit pour le moment)

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.

2. Comment ça marche

Le script qui permettra de mettre à jour automatiquement votre adresse IP sur votre DynHost sera composé de X parties :

  1. on récupère l’adresse IP configurée sur le DynHost
  2. on récupère l’adresse IP courante
  3. on les compare
  4. on met à jour le DynHost s’il y a besoin

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"

3. Script complet et CRON

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.

Source

Commentaires