Complément à l’article Dynamic hostname facile de la rubrique Raspberry, il en partage le même but, à savoir se passer d’un service dédié assez cher.

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.

Le principe est le même. Les différences sont au niveau du script et au fait qu’on va utiliser le Mac et non un Raspberry. Chez OVH, les actions sont strictement les mêmes.

 

Installer une version de Lynx

Ce navigateur internet en version texte est utile pour récupérer facilement une @IP.

Le disque image de la version Lynx pour Mac est disponible sur le net et je vous en propose une version ici. Après le téléchargement, il faut l’installer.

 

Le script

Très proche de la version Raspberrry, il diffère essentiellement par le fait que certains chemins ne sont pas identiques et par l’application Lynx. J’ai également ajouté un changement de droits sur les fichiers de long produits par le script (utile si la crontab utilisée est celle de root, ce que je préconise).

Les scripts sont disponibles ici.

#/bin/sh

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

PATH_APP=/Users/VOUS/scripts/dynhost <== A MODIFIER 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=`/Applications/Lynxlet.app/Contents/Resources/lynx/bin/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
chmod 755 $PATH_LOG $PATH_FILE_OLD_IP

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. Le mieux est d’utiliser la crontab de root.

$su -
$ crontab -e
*/5 * * * * /Users/VOUS/scripts/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.