4 votes

VPN vers le bureau sans acheminer tout le trafic internet

J'utilise le gestionnaire de réseau Gnome pour me connecter au VPN de mon bureau. Il utilise StrongSwan IPSec.

Il se connecte bien, mais tout mon trafic Internet est acheminé par le bureau. Je ne veux pas de ça, Je veux seulement voir les adresses IP de mon bureau. sans tout mon trafic internet passe par le bureau . Il faut également, si possible, utiliser le DNS du bureau pour résoudre les noms des serveurs du bureau (mais ceci est moins important).

Les paramètres suivants sont définis :

  • Adresse de la passerelle : Adresse IP du bureau
  • Certificats : Tout fonctionne, j'utilise "Certificat/clé privée".
  • Options : Toutes les options sont activées.
  • IPv4 : J'ai essayé une vue des paramètres ici, mais actuellement seul "Automatique (DHCP)" est sélectionné.
  • IPv6 : désactivé.

MISE À JOUR : Mon ip -r La sortie est :

default via 192.168.188.1 dev enp3s0 proto dhcp metric 100 
169.254.0.0/16 dev enp3s0 scope link metric 1000 
192.168.2.103 dev enp3s0 proto kernel scope link src 192.168.2.103 metric 50 
192.168.2.103 dev enp3s0 proto kernel scope link src 192.168.2.103 metric 100 
192.168.188.0/24 dev enp3s0 proto kernel scope link src 192.168.188.21 metric 100

3voto

Croften Points 41

L'idée générale est de modifier la table de routage afin que seuls les sous-réseaux connus du bureau (blocs d'adresses) soient acheminés par votre interface VPN (par exemple ppp0) et que tous les autres sous-réseaux soient acheminés par votre interface réseau normale (par exemple en0). Lorsque vous vous connectez au VPN, le gestionnaire de réseau de Gnome ajoute une route par défaut à l'interface VPN (ppp0). Vous devez supprimer cette route et ajouter de nouvelles entrées de routage pour les sous-réseaux connus du bureau.

Tout d'abord, vous devez trouver quels sous-réseaux privés sont utilisés par le réseau de votre bureau. Le moyen le plus simple est de demander aux administrateurs du réseau de votre bureau. Si ce n'est pas possible, vous pouvez le déterminer vous-même en résolvant les noms d'hôtes de votre bureau après vous être connecté au VPN. Par exemple :

$ nslookup service.company.office
Server:     127.0.0.53
Address:    127.0.0.53#53

Non-authoritative answer:
Name:   service.company.office
Address: 192.168.1.22

Dans ce cas, le sous-réseau que vous devez acheminer via votre VPN est 192.168.1.0/24, c'est-à-dire toutes les adresses comprises entre 192.168.1.0 et 192.168.1.255. Votre bureau peut avoir plus d'un sous-réseau que vous devez acheminer.

Deuxièmement, vous devez modifier la table de routage en utilisant ip commande. Imprimez le tableau en tapant ip r et cherchez une entrée qui pointe vers le dispositif VPN :

$ ip r
default dev ppp0 proto static scope link metric 50 
default via 192.168.20.1 dev eno1 proto dhcp metric 100 
...
192.168.20.0/24 dev eno1 proto kernel scope link src 192.168.20.126 metric 100
192.168.100.1 dev ppp0 proto kernel scope link src 192.168.100.89 metric 50 

Donc maintenant vous savez que ppp0 est votre dispositif VPN. Dans mon exemple, il y a deux routes par défaut mais ppp0 a une métrique plus petite, donc tout le trafic va là. Maintenant, ajoutez une route séparée vers le réseau de votre bureau :

$ ip route add 192.168.1.0/24 dev ppp0 proto static scope link

Maintenant, il suffit de supprimer la route par défaut vers ppp0 et vous êtes prêt à partir :

$ ip route delete default dev ppp0

Vous pouvez automatiser cela par le script suivant :

#!/bin/bash

# List your office networks
networks=(
                192.168.1.0/24 
                192.168.2.0/24 
)

# Execute it with sudo
if [ $(id -u) != "0" ]; then
        echo "You must be root to execute this script. Use sudo?"
        exit -1
fi

# Check if VPN is active. You can use ipsec status command 
# if your VPN is not L2TP
tunnel=$(ip l2tp show tunnel 2>&1)
if [ -z "$tunnel" ]; then
        echo "VPN is not active."
        exit -2
fi

# Add office private network routes
for net in ${networks[*]}; do
        ret=$(ip route add $net dev ppp0 proto static scope link 2>&1)
        if [[ $ret =~ "File exists" ]]; then
                echo "routes have been already added."
                exit -3
        fi
done

# Delete default routes so Internet is routed via local ISP
ip route delete default dev ppp0

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X