Dans un de mes nombreux projets, j'avais besoin d'accéder à un réseau distant qui ne disposait que d'un serveur SSH. Je savais que les outils SSH permettaient de mettre en place un tunnel VPN, mais je n'avais jamais essayé. C'est finalement assez simple à mettre en œuvre et cela peut être utile dans de nombreux cas.
Dans cet article, je vais donc expliquer étape par étape comment configurer un tunnel VPN temporaire avec OpenSSH.
PermitRootLogin yes
PermitTunnel yes
root@host:~# systemctl restart sshd
Nous avons besoin d'une règle de masquerade pour permettre au client d'accéder au réseau distant. Nous allons voir comment faire cela en utilisant iptables ou nftables.
root@host:~# echo 1 | tee /proc/sys/net/ipv4/ip_forward
root@host:~# iptables -t nat -A POSTROUTING -d 192.168.1.0/24 -o eth0 -j MASQUERADE
root@host:~# nft add table ip NAT
root@host:~# nft add chain ip NAT my_masquerade '{ type nat hook postrouting priority 100; }'
root@host:~# nft add rule NAT my_masquerade ip daddr { 192.168.1.0/24 } oifname eth0 counter masquerade
Maintenant que nous avons terminé la pré-configuration de notre serveur Debian, nous devons démarrer le tunnel SSH depuis le client.
root@host:~# ssh -Nf -w 0:0 -p 22 root@1.1.1.1
root@host:~# ip addr add 10.110.0.200/32 peer 10.110.0.100 dev tun0
root@host:~# ip link set tun0 up
root@host:~# ip route add 192.168.1.0/24 via 10.110.0.100
Avec la commande précédente (ssh -Nf -w 0:0) exécutée depuis le client, le périphérique virtuel tun0 devrait apparaître sur le serveur Debian. La dernière étape consiste simplement à l'activer et à le configurer côté Debian.
root@host:~# ip addr add 10.110.0.100/32 peer 10.110.0.200 dev tun0
root@host:~# ip link set tun0 up
Et voilà ! Le réseau 192.168.1.0/24 devrait maintenant être accessible depuis le client.
Contact :