Question Comment puis-je rendre le trafic sélectif de routage VPN Windows (par réseau de destination)?


Je souhaite utiliser un VPN Windows, mais uniquement pour un réseau particulier, afin qu'il ne prenne pas en charge la totalité de ma connexion réseau.

Par exemple, au lieu que le VPN devienne la route par défaut, faites-en uniquement la route pour 192.168.123.0/24

(Je peux voir qu'il existe une solution pour Ubuntu dans cette question, mais parfois je dois le faire aussi sur Windows)

Est-ce que cela peut être automatisé de sorte que chaque fois que je me connecte au VPN, il le fait?


126
2017-07-24 09:33


origine


Y a-t-il une question connexe pour filtrer un tas de sites via VPN? Il semble que les réponses ne fonctionneront que dans le cas où il y a un seul site derrière le VPN. Je suis en Chine et environ la moitié des sites que je souhaite utiliser sont bloqués et devraient donc passer par le VPN, mais les autres sites sont plus rapides et plus rapides sans VPN. - hippietrail
Je suis allé de l'avant et a posé une nouvelle question: superuser.com/questions/925947 - hippietrail


Réponses:


Vous pouvez désactiver la prise en charge de l'intégralité de votre connexion en vous rendant sur les propriétés du VPN. Networking languette, Internet Protocol (TCP/IP) Propriétés, Advanceddéfaire Use default gateway on remote network. Cela peut ou peut ne pas laisser de route vers 192.168.123.0/24 en fonction de la configuration du serveur VPN. Si ce n'est pas le cas, vous devrez ajouter manuellement l'itinéraire à chaque fois, bien que vous puissiez le placer dans un fichier de commandes.

Pour ajouter manuellement l'itinéraire, exécutez (en tant qu'administrateur):

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

Cet exemple créera une route persistante (il n'est pas nécessaire d'exécuter la commande après un redémarrage) vers l'adresse IP 192.168.0.12 via la passerelle VPN 10.100.100.254.

Plus à ce sujet à http://technet.microsoft.com/en-us/library/bb878117.aspx


125
2017-07-24 11:11



"Vous devrez ajouter manuellement la route" ... comment? Comment quelqu'un force-t-il, disons "192.168.10.123" pour passer par le VPN, mais rien d'autre? - Timothy Khouri
Personnellement, j'ai trouvé que désactiver la case à cocher était suffisant. Je n'ai pas eu à ajouter de routes. J'ai vérifié que tout se passait là où je l'attendais via de nombreux tracerts. - eidylon
Pareil, cette case à cocher était tout ce qui était nécessaire. - Luk
Précisez s'il vous plaît. Quel trafic est routé sur le VPN? Est-ce juste du trafic ciblé sur l'adresse IP du serveur VPN? Par exemple, si la connexion VPN va à "my.domain.com", cela signifie-t-il que tout le trafic sur le client vers "my.domain.com" passe par le VPN et que tout le reste passe à la passerelle par défaut? - Triynko
J'ai utilisé la commande "route print" et vérifié que les itinéraires générés par Windows 7 étaient erronés. Il n'envoyait pas le trafic adressé à l'adresse IP de mon VPN au VPN ... au lieu de cela, il l'envoyait à ma passerelle locale. Il y avait aussi quelques entrées circulaires dans le tableau. J'ai supprimé l'itinéraire créé par Windows, puis ajouté manuellement le bon itinéraire afin que l'entrée de l'adresse IP de mon serveur VPN utilise la passerelle du VPN et l'adresse IP locale du client pour l'interface. Le trafic sur mon serveur VPN a ensuite été acheminé avec succès via le tunnel VPN, et tout le reste du trafic n’a pas été affecté comme prévu. Fonctionne bien. - Triynko


J'ai utilisé avec succès @ TRS-80technique pour y parvenir.

Je travaille de chez moi et je dois VPN sur le réseau d'entreprise pour mon email (je déteste le webmail !!).

Dans le même temps, j'ai besoin de surfer en permanence pour obtenir des infos et aussi pour ma musique de fond sur YouTube ... Maintenant, vous ne voulez certainement pas diffuser YouTube depuis un VPN, car cela donne l'impression d'être un chant de robot !!! :)

Tout ce que j'ai fait était de suivre TRS-80:

propriétés du VPN, onglet Réseau, "Internet Protocol (TCP / IP)"   Propriétés, Avancé, décochez "Utiliser la passerelle par défaut sur le réseau distant"

et ensuite fait le mien:

sous l'onglet DNS, cochez "enregistrer ces adresses de connexions dans DNS"

Tout fonctionne parfaitement!


18
2018-02-28 16:05





Certes, cette réponse ne reflète pas votre demande mais j'utilise une VM spécifiquement à cette fin. De cette façon, seul le réseau à l'intérieur de la VM est limité par les routes.

Vous trouverez peut-être de meilleures réponses par d’autres personnes, mais au moins cela peut vous aider à trouver une solution simple après la création de la machine virtuelle.


8
2017-07-24 10:09



C'est une bonne solution à condition que votre matériel puisse le gérer correctement. - Enigma


J'ai trouvé qu'il fallait diriger directement l'interface dans la commande route. Sans cela, Windows va utiliser l'interface principale de la carte réseau, au lieu du VPN. Dans mon cas, cela ressemble à

route -p add 192.168.10.187 mask 255.255.255.255 0.0.0.0 IF 26
::           ^destination        ^mask           ^gateway   ^interface

notez le 'IF 26'.


7
2017-09-25 05:41



Cela a fonctionné pour moi aussi. Pour savoir quelle interface il vous suffit d'exécuter la commande "route print" et vérifier les premières lignes affichant la liste des interfaces disponibles (trouvez votre VPN là-bas et vérifiez son IF - il sera dans la première colonne). - Funbit
Il y a un article brillant à ce sujet: lien. En utilisant 0.0.0.0 comme passerelle par défaut, l’IP semble bien fonctionner aussi, il n’a donc pas besoin d’être ajusté au moment du changement. Ce serait génial d'intégrer dans cette réponse, car imo c'est beaucoup plus utile que le premier. - lpd


Si vous avez à la fois IPV4 et IPV6, vous devez décocher l'option "Utiliser la passerelle par défaut sur le réseau distant" aux deux endroits, même si vous utilisez uniquement IPV4.


4
2017-07-29 09:03





Si vous utilisez le CMAK et configurez un fichier de routage que le client peut télécharger, Windows téléchargera le fichier de routage et ajustera les itinéraires en conséquence. Il existe des options pour supprimer la route par défaut ... et ajouter divers itinéraires statiques et autres. C'est ce qu'on appelle un tunnel fractionné.

Il y a un bon comment faire ici: http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx


3
2018-03-28 18:32





Je veux ajouter ma solution au mélange. Il s'exécute sur un shell UNIX basé sur Cygwin sous Windows 7 ou version ultérieure, mais doit également fonctionner avec MSYS2, Bash-on-Windows [WSL] après la version 14986 ou Busybox pour Windows). Doit être exécuté avec des privilèges d'administrateur.

Il a des paramètres et essaie de détecter certaines des choses que vous n'avez pas définies explicitement. Il définit également le numéro d'interface (IF) explicitement pour contrer certains problèmes rencontrés par certains utilisateurs (comme moi) avec les autres solutions ici.

#!/bin/sh

# these three settings are required
adapter_name='VPN Connection'
username=
password=

# This setting here might be important because it's about the target network
# and in some cases it can't be properly determined automatically so this might
# be then worth setting.
# Format is in CIDR notation with the network address and a forward slash and
# the amount of network bits
target_network=192.168.0.0/24

# the IP you will get on the target network, also the VPN gateway on your
# local machine, you normally don't need to set this as the script tries to
# detect it
ip=

# optional setting for metric which normally shouldn't be necessary,
# except in te very rare cases where it should be set to a value lower than all
# other routes that might match the target network
metric=

# experimental setting to delete routes to the target network prior and after
# should normally not be needed unless this script fails and you get error
# messages like 'The route addition failed: The object already exists.'
route_cleanup=F

prog_name=${0##*/}

msg() {
  printf '%s: %s\n' "$prog_name" "$*"
}

die() {
  msg "$*" >&2
  exit 1
}

[ "$adapter_name" ] || die "Adapter name not set!"
[ "$username" ]     || die "Username not set!"
[ "$password" ]     || die "Password not set!"

if [ "$(uname -o)" != 'MS/Windows' ]; then
  id -G | grep -qE '\<0|544\>' || die 'Not running with admin rights.'
fi

msg "Disconnecting any existing connection that might exist."
rasdial.exe "$adapter_name" /d

msg "Connecting"
rasdial.exe "$adapter_name" "$username" "$password"

if [ ! "$ip" ]; then
  msg "Getting IP address on target network."
  ip=$(netsh.exe interface ip show config name="$adapter_name" |
    grep -a 'IP Address' | awk -F'[: ]+' '{print $4}')

  [ "$ip" ] || die 'Could not get IP! Exiting.'

  msg "Detected IP address as '$ip'."
fi

if [ ! "$target_network" ]; then
  msg "Getting target network."
  target_network=$(netsh.exe interface ip show config name="$adapter_name" |
    grep -a 'Subnet Prefix' | awk -F'[: ]+' '{print $4}')

  [ "$target_network" ] || die 'Could not get target network! Exiting.'

  msg "Detected target network as '$target_network'."
fi

msg "Getting VPN interface number."
if=$(ROUTE.EXE print -4 | grep -a "$adapter_name" |
  awk -F. '{gsub(" ", "");print $1}')

[ "$if" ] || die 'Could not get interface number! Exiting.'

msg "Detected VPN interface number as '$if'."

if [ "$route_cleanup" = T ]; then
  msg "Deleting any potentially already existing routes for the target network."
  ROUTE.EXE delete "$target_network"
fi

msg "Adding route for target network."
if [ "$metric" ]; then
  ROUTE.EXE add "$target_network" "$ip" IF "$if" Metric "$metric"
else
  ROUTE.EXE add "$target_network" "$ip" IF "$if"
fi

msg "VPN should be up now."
msg "Press enter to make it stop."
read -r _

if [ "$route_cleanup" = T ]; then
  msg "Deleting route."
  ROUTE.EXE delete "$target_network"
fi

msg "Disconnecting."
rasdial.exe "$adapter_name" /d

# msg "Press enter to exit."
# read -r _

exit 0

Il convient également de noter qu'il peut être nécessaire de définir manuellement une métrique faible ou que la route par défaut correspond au trafic destiné au VPN. Vous faites cela en allant dans le paramètre de l’adaptateur où vous ouvrez le "… Propriétés" élément de menu pour l'adaptateur VPN → "La mise en réseau" onglet → "Protocole Internet version 4 (TCP / IP)" Propriétés → "Avancée" → et là vous décochez la "Métrique automatique" case à cocher (en plus du "Utiliser la passerelle par défaut ..." bien sûr) et définir la valeur dans le "Métrique d'interface:" champ à une valeur inférieure à la route par défaut (voir ROUTE.EXE -4 print sortie).


2
2017-10-26 15:29