2009-07-24 09:33:51 +0000 2009-07-24 09:33:51 +0000
143
143

Comment puis-je faire en sorte que le VPN Windows achemine le trafic de manière sélective (par réseau de destination) ?

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

par exemple, Au lieu que le VPN devienne la route par défaut, faites-en la route 192.168.123.0/24

(je vois qu'il y a une solution pour Ubuntu dans cette question , mais parfois je dois aussi le faire sous Windows)

Peut-on automatiser cela de sorte que chaque fois que je me connecte au VPN, il le fasse ?

Réponses (13)

143
143
143
2009-07-24 11:11:52 +0000

Vous pouvez désactiver la prise en charge de toute votre connexion en allant dans les propriétés du VPN, onglet Networking, Internet Protocol (TCP/IP) propriétés, Advanced, décocher Use default gateway on remote network. Cela peut ou non laisser une route vers 192.168.123.0/24 selon la configuration du serveur VPN. Si ce n'est pas le cas, vous devrez ajouter manuellement la route à chaque fois, bien que vous puissiez la mettre dans un fichier de lot.

Pour ajouter manuellement la route, exécutez (en tant qu'administrateur) :

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

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

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

20
20
20
2011-02-28 16:05:03 +0000

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

Je travaille à la maison et je dois utiliser le VPN sur le réseau de l'entreprise pour mon courrier électronique (je déteste le webmail !!).

En même temps, je dois surfer constamment pour trouver des informations et j'ai aussi besoin de youtube pour ma musique de fond… Maintenant, vous ne voulez certainement pas diffuser youtube sur un VPN puisque cela fait penser à un robot qui chante ! !! :)

Tout ce que j'ai fait, c'est suivre @TRS-80 :

propriétés du VPN, onglet “Networking”, propriétés “Internet Protocol (TCP/IP)”, “Advanced”, décocher “Use default gateway on remote network”

et ensuite faire le mien :

sous l'onglet DNS, cocher “register this connections addresses in DNS”

Tout fonctionne sans problème !

9
9
9
2009-07-24 10:09:15 +0000

Il est vrai que 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 pouvez trouver de meilleures réponses auprès d'autres personnes mais au moins cela peut vous donner quelque chose à considérer comme une solution facile après la création de la VM.

7
7
7
2013-09-25 05:41:53 +0000

J'ai constaté qu'il devait pointer directement l'interface dans le commandement de l'itinéraire. Sans cela, Windows va utiliser l'interface de la carte réseau principale, au lieu du VPN. Dans mon cas, il semble que

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

notent le ‘IF 26’.

6
6
6
2018-01-26 07:11:32 +0000

Utilisez Add-VpnConnectionRoute cmdlet sous Windows 8+.

Add-VpnConnectionRoute -ConnectionName 'My VPN Connection' -DestinationPrefix 192.168.123.0/24
4
4
4
2011-07-29 09:03:55 +0000

si vous disposez à la fois d'IPV4 et d'IPV6, vous devez décocher la case “Utiliser la passerelle par défaut sur le réseau distant” aux deux endroits, même si vous n'utilisez qu'IPV4

3
3
3
2011-03-28 18:32:39 +0000

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 diverses routes statiques, etc. C'est ce qu'on appelle un “split-tunnel” btw.

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

2
2
2
2015-10-26 15:29:33 +0000

Je veux ajouter ma solution au mélange. Elle fonctionne sur un shell UNIX alimenté par Cygwin sous Windows 7 ou plus récent, mais devrait également fonctionner avec MSYS2, Bash-on-Windows [WSL] après le build 14986, ou Busybox pour Windows). Il doit être exécuté avec les privilèges d'administrateur.

Il possède certains paramètres et tente de détecter certaines choses que vous n'avez pas explicitement définies. Il définit également le numéro d'interface (IF) explicitement pour contrer certains problèmes que certains utilisateurs (comme moi) ont eu 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 est également à noter qu'il peut être nécessaire de définir manuellement une métrique basse ou sinon la route par défaut correspondra avant le trafic destiné au VPN. Pour ce faire, allez dans le paramètre de l'adaptateur où vous ouvrez le menu “… Properties” de l'adaptateur VPN → “Networking” onglet → “Internet Protocol Version 4 (TCP/IP)” Properties → “Advanced” → et là vous décochez la case “Automatic metric” (en plus de “Use default gateway …” bien sûr) et réglez la valeur dans le champ “Interface metric :” à une valeur inférieure à la route par défaut (voir ROUTE.EXE -4 print output).

1
1
1
2010-04-20 19:46:26 +0000

Un peu vieux, mais j'ai trouvé un moyen de le faire en utilisant une autre machine. J'ai un ordinateur portable où j'ai établi la connexion VPN et là, j'ai configuré FreeProxy avec Socks5…

Puis j'ai configuré firefox sur ma machine cliente pour utiliser le serveur proxy de l'ordinateur portable… le résultat est que si j'utilise FireFox ou tout ce qui est configuré pour utiliser ce proxy Socks5, il utilisera le VPN, sinon il utilise le routage standard…

1
1
1
2011-08-30 09:23:19 +0000

Vous pouvez utiliser quelque chose comme netcatcher - il suffit d'ajouter tous les itinéraires dont vous avez besoin une fois et de l'oublier. Il ajoutera et supprimera automatiquement les routes lorsque vous vous connecterez ou déconnecterez votre session VPN. Si votre adresse IP VPN est obtenue de manière dynamique (DHCP), netcatcher l'enregistrera et mettra à jour les routes de la bonne manière.

1
1
1
2013-02-18 16:37:51 +0000

du forum russe : http://forum.ixbt.com/topic.cgi?id=14:43549

enregistrer comme fichier (ex : vpn_route.vbs) et après vpn connecté exécuter la commande

cscript vpn_route.vbs

vpn_route.vbs :

strComputer = "."
strMACAddress = "MAC of VPN interface here (example 00:45:55:00:00:00)"
strTarget = "route target here (example 192.168.123.0)"
strMask = "mask here (example 255.255.255.0)"
Set objWMIService = GetObject("winmgmts:\" & strComputer & "\root\cimv2")

Set colItems = objWMIService.ExecQuery _
    ("Select * From Win32_NetworkAdapterConfiguration Where MACAddress = '" & strMACAddress & "'")
For Each objItem in colItems
strIP = objItem.IPAddress(0)
Next
Set objShell = CreateObject("WScript.Shell")
objShell.Run "route add " & strTarget & " mask " & strMask & " " & strIP
1
1
1
2019-08-07 13:42:20 +0000

Un “petit” guide pour des gens comme moi, qui ne savent pas grand-chose des réseaux. Pas grand chose de nouveau ici, mais un résumé de toutes les bonnes options décrites dans les réponses précédentes et dans d'autres fils de discussion connexes. L'ensemble de la procédure se compose de 3 étapes de base :

1) Faites en sorte que tout le trafic ne passe pas par le VPN. Pour cela, vous devez décocher la case Use default gateway on remote network dans les paramètres du VPN. Veillez à décocher cette case pour IPv4 et IPv6. En général, je désactive simplement le protocole IPv6 pour la connexion VPN.

( !) Il est (parfois) possible que le fait de décocher cette case suffise pour le travail normal - selon mon expérience, les routes nécessaires (qui dirigeront le trafic nécessaire via VPN) peuvent être ajoutées automatiquement après l'établissement de la connexion VPN. Je ne sais pas exactement où et comment ces règles sont configurées, mais un tel scénario existe - c'est probablement de la magie faite par les administrateurs de réseau VPN.

**2) Pour cela, vous devez définir des itinéraires. Vous avez trois options :

2.1) Ajouter une route permanente via la passerelle VPN :

route -p add a.b.c.d/<CIDR> w.x.y.z ou route -p add a.b.c.d mask e.f.g.h w.x.y.z

où “passerelle VPN” = “votre IP sur le réseau VPN” = w.x.y.z et adresse/réseau cible = a.b.c.d. Vous pouvez trouver w.x.y.z en exécutant ipconfig et en cherchant le nom de votre connexion VPN ou, si vous utilisez PowerShell, vous pouvez obtenir une sortie compacte en exécutant ipconfig | grep -A5 PPP (qui produira 5 lignes après avoir trouvé chaque connexion PPP).

Contre : vous devrez recréer des routes si votre IP VPN change.

2.2) Ajouter une route permanente via l'interface de réseau VPN :

route -p add a.b.c.d/<CIDR> 0.0.0.0 IF <interface number>

a.b.c.d est l'adresse/réseau cible et interface number est l'identifiant de votre connexion VPN. Cet identifiant peut être trouvé en exécutant netstat -rn, ou, pour une sortie plus compacte, netstat -rn | grep -A10 'Interface List'.

Avantages : pas besoin de changer quoi que ce soit si votre adresse VPN (w.x.y.z) change.

Inconvénients : nécessité de recréer des routes avec un nouvel identifiant si vous supprimez votre connexion VPN.

  1. 3) Utilisez le cmdlet PowerShell :

Add-VpnConnectionRoute -ConnectionName '<VPN connection name>' -DestinationPrefix a.b.c.d/<CIDR>

Avantages : les routes nécessaires sont ajoutées à chaque fois que la connexion VPN est établie et supprimées à chaque fois qu'elle est déconnectée.

Inconvénients : il n'y a pas de cmdlet Get-VpnConnectionRoutes, il peut donc être difficile de gérer ces règles.

3) Vérifiez et assurez-vous que le routage fonctionne comme prévu !

Si vous avez ajouté des routes persistantes, vous pouvez les vérifier en exécutant netstat -rn | grep -A10 'Persistent Routes'.

Et, enfin, exécutez quelques commandes tracert contre les adresses IP qui sont censées être accessibles via le VPN et contre celles qui devraient fonctionner sans VPN.

1
1
1
2010-10-11 21:31:43 +0000

Cela ne peut pas se faire sous Windows sans utiliser des programmes supplémentaires, des fichiers batch ou la ligne de commande. Une alternative est d'obtenir une machine virtuelle (ou physique) sur laquelle vous pouvez faire fonctionner le VPN.

Il semble étrange qu'une chose aussi facilement explicable que celle-ci soit si difficile à réaliser. A quel point pourrait-il être difficile de simplement acheminer le trafic d'un programme vers l'interface VPN et tous les autres programmes vers l'interface NIC par défaut ? Pourquoi faudrait-il mettre en place toute une machine virtuelle pour cela ? Et avec Linux, c'est possible mais sa solution n'est pas très élégante non plus.

C'est aussi très recherché : Je suis tombé sur des dizaines de fils de discussion sur le même sujet. J'espère donc que quelqu'un se rendra compte de l'absurdité de tout cela et fera quelque chose pour y remédier. (Sous Windows 8 !)

Cette solution provient d'un fichier batch non attribué . Elle a été légèrement adaptée.

Instructions pour Windows 7

Le script se connectera à votre VPN et routera le trafic à travers celui-ci jusqu'à un redémarrage - vous pouvez remplacer route add par route -p add pour que le changement persiste, mais si vous n'avez pas d'IP persistante avec votre VPN, il finira par ne plus fonctionner lorsque votre IP VPN changera.

  1. Ouvrez le centre de réseau et de partage
  2. Ouvrez les propriétés de votre connexion VPN
  3. Cliquez sur l'onglet Networking
  4. Pour les deux IPv4 et 6 :
  5. Cliquez sur l'onglet Properties
  6. Cliquez sur Advanced
  7. Décochez Use default gateway[...]
  8. Fermez tout ce qui a été ouvert lors des étapes précédentes
  9. Modifiez et enregistrez le script de traitement par lots qui se trouve ci-dessous
  10. Exécutez-le en tant qu'administrateur

Vous devez remplacer ce qui suit dans le script :

  • <VPN> par le nom de la connexion VPN que vous avez créée
  • <USER> par le nom d'utilisateur VPN
  • <PASS> par le mot de passe VPN
  • <TARGET> par l'adresse IP que vous voulez faire router par le VPN (si vous voulez faire router plus d'adresses, il suffit de dupliquer les trois lignes où la cible est utilisée)

_Note : Si vous ne voulez pas enregistrer le mot de passe dans le fichier, remplacez <PASS> par %password% et ajoutez ce qui suit après la première ligne du script : set password= Input password:.

Script

@echo off
@echo make sure to be disconnected!
rasdial <VPN> /d
@echo start to connect to vpn
rasdial <VPN> <USER> <PASS>
netsh interface ip show config name="<VPN>" | findstr "IP" > ip.dat
set /p ip= < ip.dat
del ip.dat
set ip=%ip:~-12%
@echo VPN IP is %ip%

set target=<TARGET>
@echo Add route for %target%
route add %target% mask 255.255.255.255 %ip%

timeout /T 3 > nul