Fabriquer son propre DynDns (ou presque)

Le but initial de ma manœuvre est de pouvoir connaitre l’IP externe de la maison à tout moment, afin d’accéder à un service quelconque sur une machine de mon réseau local.

Le concept est assez simple :

  1. j’ai un script PHP sur le serveur qui héberge ce blog.
  2. j’envoie régulièrement (disons toutes les 10 minutes) une requête http sur ce script depuis la maison.
  3. le script côté serveur récupère l’IP qui l’appelle, et la stocke quelque part (base de données, fichier…)
  4. depuis une page du serveur, je peux désormais accéder à l’IP de chez moi !

Côté serveur, basiquement voici la chose. Je l’ai appelé ping.php.

C’est tout… Pour le moment. Parce que si jamais un petit rigolo s’amuse à ouvrir cette page, c’est son IP qui va être mémorisée, et du coup ce n’est pas top. Avec une bonne vieille authentification HTTP, le problème sera résolu.

 

Côté client, on va avoir besoin d’un script shell qui va appeler ping.php à intervalles réguliers. Quelque chose comme :

Notez qu’on pourrait tout aussi bien créer une tache cron pour lancer le wget.

A partir de là, nous avons tout ce qu’il faut pour effectuer une redirection vers la maison, depuis une page de notre serveur.

Un peu de PHP :

Et sur la même page, un peu de HTML pour charger la page dans un iframe:

Et en plus, ça fonctionne ! on peut même envisager une redirection http avec un en-tête Location.

Bon, ce n’est pas vraiment du DNS dynamique, car le système se limite à un accès par navigateur. Mais en tout cas, cela me permet de connaître à tout moment l’IP de la maison, et à partir de là, je peux établir une connexion arbitraire (ssh, ftp, ou ce que je veux).