Les bouts du tunnel
Par davux, lundi 8 mars 2004 à 20:39 :: geekeries :: #258 :: rss
Bon, je viens de découvrir un truc pas mal qui devrait
intéresser pas mal de monde, par exemple les étudiants de
l'INSIA.
Ce merveilleux protocole qu'est SSH
comporte une fonctionnalité que je ne connaissais pas : le
port-forwarding dynamique. Autrement dit, le client ssh transforme
votre machine en proxy SOCKS (4 ou 5).
Comment ça marche : ssh -D nnnn
login@machine_distante
Et ça fait quoi ? Ça permet d'utiliser localhost:nnnn comme serveur
SOCKS quand on en a envie. Petit exemple.
Je suis sur une machine qui s'appelle par exemple "pfff" (on ne
rigole pas). Je fais les opérations suivantes :
davux@pfff% ssh -D 1080 dammouia@ssh.insia.org- J'ouvre mon browser web préféré que j'ai préalablement configuré pour toujours passer par le serveur localhost sur le port 1080 (c'est juste pour l'exemple, il faut bien sûr le configurer de manière moins catégorique)
- J'essaie de charger une page sur 10.43.43.1 (oui oui, c'est bien une IP non routable)
Que se passe-t-il ? La page demandée est chargée : le browser l'a demandée au serveur SOCKS en local qui est allé demander à sa mère ssh.insia.org parce que tout seul il y connaît rien. Et pour ssh.insia.org, 10.43.43.1 ça répond, donc il fait passer. En plus, ce qui est cool c'est que la partie internet du voyage se fait sur une connexion chiffrée.
Total : on se retrouve avec la même chose que les tunnels SSH classiques, mais en mieux : chaque requête peut s'adresser à une machine différente (c'est un tunnel avec une entrée et plusieurs sorties en fait).
Alors y'a quand même un problème, qu'on connaissait avec le port-forwarding classique : si la machine en face est un serveur web qui bosse avec des virtual hosts, c'est pas cool de lui filer juste une IP. Le problème, c'est que c'est l'OS local qui essaie de résoudre le nom, et que forcément, il connaît pas la machine qu'on cherche, par exemple machinelocale.insia.org. Une solution est alors de mettre la correspondance entre 10.43.43.1 et machinelocale.insia.org dans le fichiers /etc/hosts (sous unix). Une autre solution serait que le DNS de insia.org (dans notre exemple) réponde aux requêtes qui demandent machinelocale.insia.org. Ça ne poserait pas de problème de sécurité énorme de dévoiler quelques noms de machines internes (puisqu'elles sont internes justement, donc inaccessibles), et ça permettrait d'éviter de maintenir une liste de mappings.
Enfin donc voilà : cette méthode devrait permettre d'éviter de configurer plein de tunnels SSH dans tous les sens. Un seul tunnel dynamique et ça roule...
Commentaires
1. Le mardi 9 mars 2004 à 09:06, par oz :: site
2. Le mardi 16 mars 2004 à 20:18, par manu :: site
Ajouter un commentaire