181 votes

Comment puis-je faire en sorte que le VPN Windows achemine un trafic sélectif (par réseau de destination) ?

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

Par exemple, au lieu que le VPN devienne la route par défaut, faites en sorte qu'il ne soit que la route pour 192.168.123.0/24.

(Je peux voir qu'il y a une solution pour cela pour Ubuntu dans cette question mais il m'arrive aussi de devoir le faire sous Windows).

Est-ce que cela peut être automatisé pour que chaque fois que je me connecte au VPN, il fasse cela ?

1voto

Xantippe Points 19

Cela ne peut être fait dans 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 exécuter le VPN.

Il semble étrange que quelque chose d'aussi facilement explicable soit si difficile à réaliser. Comment pourrait-il être difficile de simplement acheminer le trafic d'un programme vers l'interface VPN et de tous les autres programmes vers l'interface NIC par défaut ? Pourquoi aurions-nous besoin de configurer une machine virtuelle entière pour cela ? Avec Linux, c'est possible, mais sa solution n'est pas très élégante non plus.

Il est aussi très recherché : Je suis tombé sur des dizaines de fils de discussion sur le même sujet. J'espère seulement que quelqu'un se rendra compte du caractère ridicule de cette situation et fera quelque chose pour y remédier. (Sous Windows 8 !)

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

Instructions pour Windows 7

Le script se connectera et acheminera le trafic à travers votre VPN jusqu'à un redémarrage - vous pouvez remplacer route add con route -p add pour que le changement soit persistant, 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 le bouton Networking onglet
  4. Pour les deux IPv4 et 6 :
    1. Cliquez sur Properties
    2. Cliquez sur Advanced
    3. Décochez Use default gateway[...]
  5. Fermez tout ce qui a été ouvert lors des étapes précédentes
  6. Editez et sauvegardez le lot script trouvé ci-dessous
  7. Exécutez-le en tant qu'administrateur

Vous devez remplacer ce qui suit dans le script :

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

Note : Si vous ne voulez pas sauvegarder le mot de passe dans le fichier, remplacez <PASS> con %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

1voto

Andy Points 11

Vous pouvez utiliser quelque chose comme netcatcher - il suffit d'ajouter toutes les routes dont vous avez besoin une fois et de l'oublier. Il ajoutera et supprimera automatiquement les routes lorsque vous connectez ou déconnectez votre session VPN. Si votre adresse IP VPN est obtenue dynamiquement (DHCP), netcatcher le détectera et mettra à jour les routes correctement.

1voto

shibormot Points 231

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

sauvegarder comme fichier (ex : vpn_route.vbs) et après avoir connecté le vpn 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

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