Simuler une ip fixe depuis une ip dynamique

Ou comment associer l'adresse ip dynamique fournie par votre FAI à un nom de domaine et rendre votre ordinateur accessible depuis le net.

Cette méthode explique comment publier son adresse ip dynamique sur le web, un peu comme dyndns.org.
Pour cela il est nécessaire de disposer d'un hébergement capable d'interpréter du PHP. La plupart des hébergements gratuit tel que free.fr le propose.

Les fichiers .php

Sur un hébergement web disposant d'un nom de domaine (www.jojo.free.fr pour l'exemple)
créer 3 fichiers:

ping.php

<?php
if(isset($_GET['key']) && $_GET['key'] == 'mot_de_passe') //seul l'ordinateur locale doit pouvoir exécuter cette condition
{
       $srvadress = fopen("pong.php", "w+");
       fputs($srvadress, "<?php"."\n");
       fputs($srvadress, '$ip = \''.$_SERVER['REMOTE_ADDR'].'\';';
       fclose($srvadress);
}

Nottez la variable $_GET['key'] == 'mot_de_passe' ou mot_de_passe devra évidement être remplacé par votre mot de passe.
Si cette variable n'existait pas, quiconque appèlerait ping.php attribuerait sa propre adresse ip à pong.php

pong.php: le fichier est vide lors de sa création, c'est ping.php qui le remplira

// ne mettez rien dans pong mais n'oublier pas de lui donner les droits en écriture

index.php

<?php
include('pong.php'); // pong.php n'a qu'une variable: $ip
if( preg_match("#([0-9]{1,3}\.){3}[0-9]{1,3}#", $ip) ){ //on s'assure que $ip est bien du type attendu
    header("Location: http://$ip/");
}
else echo "Adresse invalide!";

Voila pour la partie php. Désormais chaque appèle de la page ping.php agrémenté de la bonne variable get "key" écrira l'adresse ip de l'ordinateur appelant dans pong.php.

Vous pouvez tester cela depuis votre navigateur: http://jojo.free.fr/ping.php?key=mot_de_passe

Automatiser la tache (Linux)

ces modifications sont à faire sur l'ordinateur qui veut être accessible

Depuis une console, nous allons modifier la crontab pour ajouter une tâche répétée toutes les 30mn

ATTENTION, la plupart des distributions utilise [Vi|vim] comme éditeur par défaut. Si vous ne savez pas utiliser Vi je vous invite à changer pour Nano.

Pour savoir quel est l'éditeur par défaut de votre système exécutez cette commande

$ echo $EDITOR

Pour définir Nano comme éditeur par défaut exécutez ceci

$ echo "export EDITOR=nano" >>  ~/.bashrc

Enfin, on ouvre la crontab

$ crontab -e

l'option -e pour "edit" utilisez -l pour lire

et on ajoute cette ligne pour que ping soit appelé toutes les 30mn

*/30 * * * * wget -q --spider http://jojo.free.fr/ping.php?key=mot_de_passe

Remarque

Tout ceci ne rendra sans doute pas votre ordinateur réellement accessible. Ce qui se passera sans doute c'est que vous allez arriver sur votre box/routeur. C'est ce dernier qu'il faudra paramétrer afin qu'il redirige là ou vous le souhaitez.

^