GNU/Linux : faire un tunnel VPN ethernet via SSH entre 2 machines
But : établir une connexion VPN en utilisant SSH en Ethernet entre 2 machines : serveur1 et client1
Pré-requis : un serveur OpenSSH installé sur une machine nommée serveur1 et bien configuré pour autoriser une autre machine nommée client1 à se connecter en tant qu’utilisateur USER_XXX
How-To :
– sur serveur1, en tant que root, mettre dans le fichier /etc/network/interfaces
auto tap9 iface tap9 inet static pre-up tunctl -u USER_XXX -t $IFACE post-down tunctl -d $IFACE address 10.1.9.1 netmask 255.255.255.0
– sur client1, en tant que root, mettre dans le fichier /etc/network/interfaces
auto tap9 iface tap9 inet static pre-up tunctl -u USER_XXX -t $IFACE post-down tunctl -d $IFACE address 10.1.9.2 netmask 255.255.255.0
– sur serveur1, en tant que root
. rajouter dans le fichier /etc/ssh/sshd_config
PermitTunnel ethernet UsePrivilegeSeparation no
. redémarrer le serveur openssh
– sur client1, en tant qu’utilisateur USER_XXX
. rajouter dans le fichier /etc/ssh/ssh_config
Tunnel ethernet
. se connecter sur le serveur1 via openssh par la commande : ssh -w 9:9 serveur1
=> un tunnel VPN a bien été créé en utilisant les interfaces ethernet tap9 à la fois côté client et serveur (cf. la déclaration de ces interfaces dans les fichiers /etc/network/interfaces correspondants), avec côté serveur1 l’adresse IP 10.1.9.1 et côté client1 l’adresse IP 10.1.9.2
– les commandes ping 10.1.9.2 effectuée côté serveur1 et ping 10.1.9.1 effectuée côté client1 permettent de vérifier le fonctionnement de bout en bout du tunnel.