jeudi 8 septembre 2011

Modifier l'adresse ip d'un host en fonction du réseau sur lequel on se trouve

Ce petit truc ne servira pas à tout le monde, mais en ce qui me concerne il me fait gagner quelques secondes tous les jours...

J'ai un serveur de mail pour mon travail, qui est donc accessible depuis l'extérieur par une adresse ip publique. Quand je suis sur le réseau du travail, par contre, il n'est plus accessible par cette adresse ip, mais par son adresse ip du réseau local.

Pour pouvoir me connecter à ma messagerie quelque soit le réseau sur lequel je me trouve, il faut donc que l'adresse ip du serveur change en fonction de ce réseau.

Voila donc la solution :
Imaginons que ce serveur s'appelle serveur.mail.com, qu'en externe il ait l'adresse 123.123.123.123, et qu'en interne, il ait l'adresse 192.168.0.1 :

1) créer un petit script qui va tester sur quel réseau on est et changer la résolution de nom en fonction du resultat :

#!/bin/bash
# pour changer l'adresse ip de [serveur.mail.com] en fonction de si on est dedans ou dehors du réseau professionnel

ping -c 3 192.168.0.1

if [ $? -eq 1 ] ; then
    echo "on est a l'exterieur" ;
    sed -i "s/192.168.0.1 serveur.mail.com/123.123.123.123 serveur.mail.com/g" /etc/hosts ;
else
    echo "on est a l'interieur" ;
    sed -i "s/123.123.123.123 serveur.mail.com/192.168.0.1 serveur.mail.com/g" /etc/hosts ;
fi

2) éditer le fichier /etc/hosts pour initialiser les choses, en ajoutant soit la ligne
123.123.123.123 serveur.mail.com, soit 192.168.0.1 serveur.mail.com

3) Ajouter dans la crontab de l'utilisateur root (sudo crontab -e)

*/5 * * * * /home/moi/bin/[nom du script défini au point 1]

Et voilà... Pas besoin de reconfigurer thunderbird en fonction du réseau où l'on se trouve.


Aucun commentaire:

Enregistrer un commentaire