DynHost OVH, box 4G Bouygues, Raspberry Pi et Gladys

DynHost est un service fourni « gratuitement » par OVH quand vous possédez un nom de domaine chez eux.
Ce service permet de relier une IP dynamique à un nom de domaine. En gros, ça va vous servir à relier vos installations connectées de la maison au monde extérieur avec un nom de domaine (une adresse internet du genre monsite.com).

J’ai à la maison un Raspberry Pi (petit ordinateur qui sert généralement de serveur) qui s’occupe de Gladys : la solution domotique que j’ai choisi pour gérer tous mes gadgets connectés à la maison.
C’est sympa de voir localement les informations de tous les capteurs et d’interagir avec eux mais c’est encore mieux de pouvoir le faire depuis le monde extérieur, à distance.

C’est pourquoi j’ai décidé de relier ma box domotique, Gladys sur Raspberry Pi, au monde extérieur.
Ca passe par plusieurs phases dont quelques unes de sécurité mais aussi la mise en place de DynHost pour pouvoir simplement accéder au Raspberry depuis l’extérieur. Je tiens à préciser que ma machine est reliée en ethernet (enfin pas vraiment : j’ai un câble ethernet sur le Raspberry Pi relié à un relais Wifi mais matériellement parlant, pour Le Raspberry Pi, c’est de l’ethernet).

D’abord, il faut faire en sorte que l’IP locale de la machine hébergeant Gladys (le Raspberry Pi) ne soit pas elle aussi dynamique, comme l’IP de la maison avec la box 4G de Bouygues. Ce que je vais décrire ci-dessous marche avec la box 4G de Bouygues qui ne permet pas de fixer l’IP locale du Raspberry Pi dans ses réglages. Sur certaines box internet, il me semble que c’est possible via l’interface d’administration.
Pour faire ça, je suppose que vous savez vous connecter en SSH à votre Raspberry Pi, que vous êtes connectés en ethernet sur la machine (en wifi, je ne sais pas trop comment faire, sûrement un wlan0 à la place de eth0) et que vous êtes à l’aise avec les lignes de commande et le terminal.

sudo nano /etc/dhcpcd.conf

Et à la fin, vous rajoutez ces quelques lignes

# Custom static IP address for eth0.
interface eth0
static ip_address=192.168.1.123/24
static routers=192.168.1.1
static domain_name_servers=192.168.1.1

Remplacez « 192.168.1.123/24 » par l’IP que vous souhaitez attribuer. Laissez le « /24« , cela correspond à un réglage (obscur pour moi, je l’avoue) qui définit l’adresse IP.
Les autres IPs en dessous sont normalement identiques si vous êtes sur la box 4G de Bouygues : vous avez compris, c’est l’adresse IP de votre box internet. Vous pouvez adapter à l’IP locale de votre box.
Un petit reboot de votre machine (sudo reboot) et votre IP locale devrait être fixe.

On va s’occuper maintenant de rediriger les requêtes d’information issues du web sur le Raspberry Pi depuis l’interface d’administration de la box 4G de Bouygues. Direction http://192.168.1.1 !

Administration box 4G Bouygues

Le port 80 sert à rediriger toutes les requêtes du web en http://monsite.com vers l’IP locale du Raspberry et son port 80. Le port 443 fait la même chose avec le https (c’est ma configuration, ça permet de faire une sorte de tunnel entre la machine locale et le navigateur qui fait la requête et évite bien des choses…). Le port 8443, c’est parce que la box 4G redirige automatiquement les requêtes sur son IP externe sur ce port, il faut donc lui dire que ça va vers le port 443 (https) de Gladys. Et en dessous, c’est mon port personnalisé pour le protocole SSH à distance…

Maintenant, direction OVH et votre interface d’administration pour s’occuper de DynHost, au niveau de votre nom de domaine. Tout est intuitif, il suffit de se laisser guider.

Administration OVH

Il faut cliquer sur « Ajouter un DynHost ». La fenêtre vous invitera à créer un identifiant qui permettra la gestion à distance de la mise à jour de votre IP externe associée au sous-domaine que vous aurez attribué. Allez sur le site ifconfig.co si vous souhaitez mettre votre IP actuelle pour le démarrage de la configuration. (Vous pouvez mettre n’importe quoi, le script ci-dessous fera la mise à jour mais autant partir sur quelque chose de bon).

DynHost OVH
Ensuite direction à nouveau le Raspberry pour mettre en place le magnifique petit script ci-dessous avec vos valeurs

#/bin/sh

#
# CONFIG
#

HOST=votre.url.dynhost
LOGIN=votre-login-dynhost
PASSWORD=votre-mot-de-passe

PATH_LOG=/home/pi/scripts/logs/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

Moi, je l’ai stocké dans ce chemin : /home/pi/scripts/dyndns.sh.
On va rentrer dans une phase un peu complexe pour ceux qui ne sont pas à l’aise avec les lignes de commande, ce sont des commandes de base et je ne vais pas trop m’attarder dessus…

Il faut se rendre dans le dossier du script :

cd  /home/pi/scripts/

Le rendre exécutable :

chmod +x dyndns.sh

Et le tester avant de le mettre en tâche cron (tâche régulière automatique) :

./dyndns.sh

Normalement, ça va créer un log dans le fichier défini en haut du script (que vous pouvez changer). Un petit coup de :

nano /home/pi/scripts/logs/dyndns

Et vous devriez voir que ça n’a rien fait puisque normalement, le temps de faire toutes ces manipulations, votre IP devrait être la même qu’au départ.

Ensuite, il va falloir automatiser tout cela, on va pas exécuter nous-même ce script toutes les heures par exemple…

crontab -e

Ca va ouvrir votre fichier de tâches, ou le créer si vous n’avez pas encore joué avec (et je vous conseille de le faire, c’est une petite merveille ce truc et d’une simplicité effarante). Et on va rajouter l’exécution du script à faire régulièrement, ici, toutes les heures.

0 * * * * /home/pi/scripts/dyndns.sh

Allez donc faire un tour sur crontab.guru et vous allez comprendre la syntaxe et surtout la puissance de ce petit fichier.

Voilà !
Vous avez maintenant votre Raspberry Pi relié automatiquement à DynHost d’OVH et avec la box 4G de Bouygues (mais ça marche avec les autres hein…).

Sources :
https://yann.me/dynhost-ovh-pour-raspberry-pi-ou-une-machine-linux/
http://fr.sizious.com/2015/08/28/configurer-une-ip-fixe-sur-le-raspberry-pi-avec-raspbian-20150505/

P.S. : n’essayez pas d’accéder à votre DynHost depuis votre IP, la box 4G de Bouygues ne veut pas et vous redirige vers l’administration de la box (j’ai passé quelques heures/jours avant de comprendre…). Pour tester, essayez avec votre téléphone ou si vous avez un VPN…
Hamtaro Écrit par :

Geek trentenaire bientôt papa.

Soyez le premier à commenter

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.