blog:dyndns_deux_noms_une_seule_adresse

DynDNS, deux noms, une seule adresse

DynDNS permet d'avoir un nom FQDN pointant sur une adresse IP dynamique (ADSL par exemple). Il existe plusieurs sociétés proposant un tel service gratuitement pour un ou deux noms. Parmi elles, DynDNS. J'ai un compte DynDNS depuis… pfff… longtemps, associé au nom kabs.homeunix.org. Ma box ADSL a un client DynDNS et gère très bien les mises à jour, je n'ai donc pas à m'en soucier.

Problème : j'ai un deuxième hôte qui doit pointer sur la même adresse or la box ADSL ne sait pas gérer ça.

Solution : utiliser ddclient. Ce script Perl permet de mettre à jour un enregistrement. Il sait gérer différent fournisseurs dont celui qui nous intéresse. Il sait utiliser plusieurs méthodes pour récupérer l'adresse IP à renseigner :

  • interrogation d'une page Web
  • interrogation d'un modem / routeur
  • interrogation d'un script
  • utilisation d'une adresse IP fixe
  • utilisation de l'adresse d'une interface réseau

Ma box ADSL se gère via une interface Web. Plusieurs solutions s'offrent alors dont en particulier :

  1. interroger l'interface Web pour récupérer l'adresse publique
  2. faire confiance au client DynDNS de la box ADSL pour qu'il ait correctement mis à jour le premier enregistrement kabs.homeunix.org

Étant flemmard de nature, j'ai choisi la seconde solution. Le script trivial :

#!/bin/sh
/usr/bin/host kabs.homeunix.org |/usr/bin/egrep -o "[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+"

récupère donc l'adresse telle qu'enregistrée par le client sur ma box (script stocké dans /usr/local/scripts/dyndns-foobar.sh). Plus qu'à l'indiquer au client Perl ; dans le fichier de configuration ddclient.conf, indiquer :

syslog=yes
pid=/var/run/ddclient.pid
cache=/var/db/ddclient.cache

use=cmd
cmd=/usr/local/scripts/dyndns-foobar.sh

protocol=dyndns2
server=members.dyndns.org
login=plop
password=xxx

server=members.dyndns.org,              \
 protocol=dyndns2                       \
 foobar.dyndns-wiki.com

Lancer :

# ddclient -daemon 500 -syslog

et on voit apparaître dans le journal (/var/log/messages chez moi) :

ddclient[2617]: SUCCESS:  updating foobar.dyndns-wiki.com: good: IP address set to 83.202.88.23

On vérifie que l'adresse est correctement changée.

L'autre solution eut été de récupérer (wget(1), curl(1), etc.) sur ma box ADSL puis d'extraire du code HTML l'adresse publique avec sed(1) ou awk(1) ou… et de l'afficher. Un jour, si je suis courageux…

Mise à jour C'est trivial :

#!/bin/ksh
/usr/bin/ftp -o /tmp/i http://r.local/ >/dev/null
/usr/bin/egrep -o "\<[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+\>" /tmp/i
  • blog/dyndns_deux_noms_une_seule_adresse.txt
  • Dernière modification : 2011/09/06 06:50
  • de pc