[tuto] Comment utiliser un VPN distant comme route par défaut

Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[tuto] Comment utiliser un VPN distant comme route par défaut

Message par Zedoune »

Bonjour

Je vais vous expliquer dans ce topic comment faire pour utiliser votre serveur vpn distant comme route par défaut (donc tout le traffic internet sera vu comme venant du serveur vpn)
On peut même utiliser ça derrière un wifi d'université s'il permet l'accès à ssh (ce qui est le cas de l'université de bourgogne ^^)

Tout d'abord, mettez en place un serveur vpn avec openvpn (ça doit pouvoir marcher avec d'autres serveurs vpn, mais faudra adapter).
Activez l'ip_forwarding sur le serveur VPN, sous linux il faut faire en root "echo 1 > /proc/sys/net/ipv4/ip_forward".
Il faut apporter une petite modification au fichier de configuration de votre vpn en ajoutant ces deux lignes permettant d'utiliser le vpn comme connexion distante:

(voir en-dessous pour savoir ce qu'est IP_VPN)
push "route IP_VPN 255.255.255.0"
push "redirect-gateway def1 bypass-dhcp"
Voila, votre openvpn est bien configuré.

Données

On va dire que l'adresse ip distante du serveur vpn est IP_VPN.
Que l'adresse ip du routeur pour sortir vers internet depuis notre réseau local est IP_ROUTEUR
Que l'adresse ip du routeur dans le réseau vpn est ROUTEUR_VPN.
Dans tout le tuto il faudra remplacer les occurences du mot clé par l'ip qui y correspond.


Le principe consiste à retirer la route par défaut attribuée par le dhcp, mettre une route pour atteindre le serveur vpn, se connecter au serveur vpn et ajouter la route par défaut sur l'interface vpn.

Sous windows, je ne connais pas la syntaxe de la commande route, mais cela devrait toujours être plus ou moins pareil selon le système.

Sous FreeBSD cela donne les commandes suivantes, pour Linux il me semble que l'on doit ajouter le mot "gw" entre les deux adresses ip (par exemple route add -net default gw ROUTEUR_VPN).
route del default
route add -host IP_VPN IP_ROUTEUR
Lancer openvpn, normalement vous devriez être connecté au vpn
route add -net default ROUTEUR_VPN

Maintenant, tout ce que vous faites passe par votre vpn, sauf si c'est en réseau local :)


Si vous êtes derrière un réseau vous laissant utiliser le port 22 mais bloquant le reste, vous pouvez faire un tunnel local vers l'ip du vpn, et ensuite modifier la configuration du client vpn pour qu'il se connecte en local. Ce qui donnerait à peu près ceci (après la modification de la ligne remote dans la config du vpn pour que cela pointe sur localhost). Attention, il faut que votre serveur utilise le protocole TCP car ssh ne peut faire que des tunnels TCP
route del default
route add -host IP_VPN IP_ROUTEUR
ssh -L 1194:IP_VPN:1194 login@IP_VPN
Lancer openvpn, normalement vous devriez être connecté au vpn
route add -net default ROUTEUR_VPN
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[tuto] Comment utiliser un VPN distant comme route par défaut

Message par Zedoune »

Apparement si on configure le vpn dans le network manager sous gnome (donc ça marche pas sous mac ou windows :o ) et ben par défaut il fait tout ce que j'ai mis plus haut :D
Avatar de l’utilisateur
Zedoune
Messages : 15343
Inscription : ven. 12 janv. 2018 17:44

[tuto] Comment utiliser un VPN distant comme route par défaut

Message par Zedoune »

Ne pas oublier de router les deux interfaces sur le serveur vpn !

J'ai passé 6 h à chercher pourquoi j'arrivais pas à utiliser la route par défaut de mon serveur vpn, et ben fallait faire un NAT :D

avec PF
sysctl net.inet.ip.forwarding=1
nat on re0 from tap0:network to any -> re0 (dans /etc/pf.conf)

sous linux
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t -nat -A POSTROUTING -o eth0 -s 192.168.0.254 -j MASQUERADE
iptables -t nat -A FORWARD -in-interface tun0 -j ACCEPT
iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
Répondre