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.