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 :
Côté serveur, basiquement voici la chose. Je l'ai appelé ping.php.
[php]
//Récupère l'IP du client :
$clientIp = $_SERVER["REMOTE_ADDR"];
//Enregistre l'IP dans un fichier texte. $f = fopen("ip", "w"); fwrite($f, $clientIp); fclose($f);
[/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 :
[shell]
while [ 1 -ne 0 ] do
wget http://dirtymarmotte.net/redir/ping.php
rm ping.php
sleep 600s done
[/shell]
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 :
[php] <?php //Lit l'adresse de la maison $ip = file_get_contents("ip");
//Construit l'URL pour pointer sur la webcam $url = "http://$ip:8081";
?> [/php]
Et sur la même page, un peu de HTML pour charger la page dans un iframe:
[html] <html> <body>
<div><?php echo $url ?></div> <iframe width="100%" height="100%" src="<?php echo $url ?>"> </iframe>
</body> </html> [/html]
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).