samedi 26 avril 2014

Socat quel outil formidable.. avec un tunnel ssh

Socat est vraiment un outil formidable qui permet, dans un registre augmenté à ncat, de faire des "bidouilles" en communication réseau bien sympas.

Personnellement je l'utilise pour monter un réseau virtuel sur SSH (un VPN en somme).

Imaginons deux PC sur l'Internet:
  •  PC1 d'adresse IPv4 86.22.32.30
  • PC2 d'adresse IPv4 88.32.24.52
Sur le PC2 fonctionne un serveur SSH sur le port 8269 (le port normalisé étant 22, le port utilisé ici est donc une configuration "personnelle").

La 1ère étape est donc d'établir le pont SSH, donc depuis le PC1 nous faisons:
ssh -p 8269 userX@88.32.24.52 -L 5702:localhost:5702

userX est le login d'un compte utilisateur connu sur le PC2. C'est utilisateur est autorisé à ce connecté via SSH au PC2.

Afin de créer notre réseau virtuel (via socat), nous avons besoin de permettre une inter-connexion entre deux instances de socat; l'une fonctionnant sur le PC2 comme serveur, l'autre sur le PC1 comme client, qui établira la connexion.

Pour cela, il nous faut utiliser la redirection de port (port forwarding) offerte par SSH afin que le port d'écoute du serveur socat sur le PC2 soit redirigé sur le PC1. Ceci est l'objet des paramètres " -L 5702:localhost:5702", ainsi le port 5702 local au PC2 est redirigé sur le port équivalent du PC1 (donc 5702).

Nous démarrons, sur le PC2 le serveur socat qui va accepter la connexion du client PC1 et qui va créer un tunnel (sous réseau).
sudo socat TCP4-LISTEN:5702 TUN:193.168.0.1/24,up &

Les paramètres TUN:193.168.0.1/24,up vont permettre de créer une interface réseau d'adresse IPv4 193.168.0.1 et de masque 24 (255.255.255.0).

Côté PC1 (le client socat), nous démarrons la commande suivante:
 sudo socat TCP:127.0.0.1:5702 TUN:193.168.0.2/24,up &

Nous remarquons que la connexion se fait au PC local (127.0.0.1 = PC1) sur le port 5702 qui est le port "forwardé" du serveur PC2 au client PC1.
De même que pour le serveur, il y a création d'une interface réseau IPv4, mais cette fois-ci d'adresse 193.168.0.2/24.

Si tout s'est bien passé, vous pouvez désormais faire un ping entre les deux machines sur le même réseau virtuel 193.168.0.0/24

Sur les deux PC, le ping 193.168.0.1 et le ping 193.168.0.2 doivent fonctionner.

Aucun commentaire:

Enregistrer un commentaire