Gérer ses routes IP pour ses VPN (via NetworkManager et route)

Plop à tous …

Juste pour faire un autre article ce mois-ci ^^ … Je vais parler des routes IP, pour gérer par exemple plusieurs VPN ou plusieurs connexions à internet. Rien de compliqué bien sûr, juste un truc que j’oubli assez souvent et que j’utilise assez rarement …

Mon accès à internet ce fait généralement par des VPNs (mon dédié pour les trucs top secret, itsHidden, IPRED et co. pour les choses pas très orthodoxe), malheureusement, la latence est trop élevé pour pouvoir jouer à des FPS/MMORPG, il a donc fallut ajouter quelques règles de routages pour utiliser mon routeur comme gateway pour l’accès à mes jeux favoris …

Dans le cas le plus simple (celui que je vais présenter), on veut gérer une connexion à internet + une connexion VPN, deux solutions sont possible pour le routage :

  1. Utiliser notre connexion à internet comme gateway et rediriger le traffic nécessitant le chiffrement par routage (sympa si l’on ne veut pas tout chiffrer)
  2. Utiliser le VPN comme gateway et router le traffic nécessitant une latence plus faible (sympa si l’on veut tout chiffrer)

Je vais utiliser l’interface du Network Manager qui permet de sauvegarder nos routes pour chaque configurationVPN différentes, ce qui peut s’avérer utile si vous en avez plusieurs. Sinon, je présenterai rapidement les commandes routes pour ajouter une route pour un host ou un subnet (mais il faudra les ré-exécuter à chaque fois).

Le premier cas

Par défaut, si l’on utilise le NetworkManager pour la gestion des VPN, il remplace directement la route par défaut par celle du VPN(si il est configuré pour être un gateway), ce que nous ne voulons pas … on peut ignorer les routes fournit par le service de VPN en allant dans le menu « configuration de VPN » de NM, et suivre les séquences de clic ci-dessous ou l’on peut forcer à n’utiliser que le VPN pour les ressources de son réseaux en cliquant sur la checkBox en dessous du 3  :
Ce qui nous permettra de garder nos routes et l’ip fournit par notre FAI pour notre connexion à internet en général : ATTENTION, LE VPN NE SERA PAS UTILISé jusqu’à ce que vous ayez configuré vos routes …

Imaginons maintenant que nous voulons utiliser les services du VPN pour certaines IP en particulier genre pour notre test : utiliser l’ip du VPN pour se connecter à mon-ip.com (80.247.226.90), ajouter la route en ligne de commande ce fait comme suit :

sudo route add -host 80.247.226.90 gw [ip du gateway du serveur VPN]

On peut bien sûr utiliser une plage IP en remplaçant -host par -net et fournir un netmask assez large (selon la taille du réseau généralement).

Network Manager n’étant pas trop mal foutu, on peut gérer nos routes par l’interface que nous avons vu sur l’image ci-dessus, ce qui donne, pour le cas de mon-ip.com via 10.0.0.1 qui est l’ip de mon VPN :

Il faudra ensuite se connecter au service de VPN pour que les changements soient valides, et l’accès à mon-ip.com passera donc par notre VPN (les modifications ne sont pas prises directement en compte …). C’est bien entendu un cas bidon … généralement, on utilise ce type de configuration pour un accès au réseau locale d’entreprises pour accéder à des services bien particulier, tout en gardant notre connexion à internet pour le reste.
On peut supprimer cette configuration par ligne de commande :
sudo route del -host 80.247.226.90 gw [ip du gateway du serveur VPN]

Ou en cliquant sur supprimer dans l’interface ci-dessus …

Cas numéro deux

On veut faire l’inverse, utiliser notre VPN pour toutes les connexions à internet, et notre connexion à internet pour accéder à mon-ip.com … En fait c’est le cas le plus simple si l’on à très peu de services à utiliser avec notre véritable IP (c’est mon cas …), on reprend donc notre interface de configuration du VPN :
On vérifie que les deux checkbox soient décochés, et on remplace la passerelle par celle de notre réseau, chez moi 192.168.0.1. On valide, on se connecte au VPN (se déconnecter si on l’était déjà), et l’accès à mon-ip.com se fait par notre IP à nous, alors que si l’on accède à www.whatismyip.com, l’accès se fera pas notre VPN …

Cas pratique

Bien sûr les cas représentés ici étaient bidon et appliqués aux VPN, un cas pratique d’utilisation des routes sur une connexion « normale » peut être l’utilisation du réseau wifi du voisin pour dl comme un porc (utilisation de sa passerelle comme passerelle par défaut) et définir des règles de routages pour utiliser notre connexion à internet (par rj45 ou …) pour les FPS et les accès privés qui seront beaucoup plus rapide ;).
Bien entendu je n’incite personne à faire ça (sans l’autorisation du voisin ^^).

5 réflexions sur « Gérer ses routes IP pour ses VPN (via NetworkManager et route) »

  1. Bonjour,

    Super blog que vous nous avez fait ici !

    J’ai un p’tit problème sur lequel vous pourriez peut-être m’aider (j’ai pas une grande expérience d’iptable et de tout ces mystères)

    J’avais posté sur le forum d’ubuntu : http://forum.ubuntu-fr.org/viewtopic.php?id=405227

    mais personne ne semble avoir de solution !

    Le problème que j’ai est simple j’aimerai pouvoir monter un VPN PPTP dont mon serveur est le client (offre classique sur le net), mais pouvoir accèder à ce serveur via une connexion OpenVPN depuis n’importe où sur internet) il y a un schéma sur le lien que j’ai posté plus haut pour mieux comprendre.

    J’espère que vous pourrez m’aider !

    Bonne Journée

  2. Je suis pas sur d’avoir tout compris, mais ce serait plus des routes et non des règles iptables qu’il faudrait mettre en place.

    Si j’ai bien compris, le pptp prend la main et se met en default gateway (arrêtant ainsi l’utilisation du tun0, ou plutôt l’envoi du traffic par l’interface en question), il faut donc spécifier les routes à ignorer via NetworkManager, pour que tun0 garde la main sur son traffic.

  3. Salut,

    Merci de ta réponse mais je vois pas bien comment faire parce que mon interface tun0 n’est pas dans le network-manager vu que c’est pas une connexion type cliente (je me connecte sur un autre server) mais type server.

    Du coup je vois pas comment faire pour spécifier les routes à ignorer ???

    merci de ton aide

  4. La solution la plus simple, serait de ne plus mettre le VPN ppp0 en default gateway, une autre solution serait de spécifier la route du vpn tun0 via l’interface eth1.
    Il faudrait savoir quelle VPN a besoin de se connecter à plus d’IP différente et de là, spécifier l’un ou l’autre en default gateway et de spécifier les routes de l’autre en statique.

    à ma connaissance en routage statique (j’ai jamais été bon en réseau), il n’est pas possible d’ignorer une route, il faut spécifier les plages IP accessible pour chacun des sous-réseaux, pour leur faire ‘ignorer’ le default gateway.

Les commentaires sont fermés.