Wie kann ich den Windows VPN-Routing-selektiven Datenverkehr (nach Zielnetzwerk) erstellen?

Ich möchte ein Windows-VPN verwenden, aber nur für ein bestimmtes Netzwerk, damit es nicht meine gesamte Netzwerkverbindung übernimmt.

ZB, Anstatt dass das VPN zur Standardroute wird, machen Sie es nur zur Route für 192.168.123.0 / 24

(Ich kann sehen, dass es in dieser Frage eine Lösung für Ubuntu gibt, aber manchmal muss ich das auch unter Windows tun)

Kann dies automatisiert werden, sodass dies bei jeder Verbindung zum VPN der Fall ist?

Author: Community, 2009-07-24

13 answers

Sie können die Übernahme Ihrer gesamten Verbindung deaktivieren, indem Sie zu den Eigenschaften des VPN gehen, Registerkarte Networking, Internet Protocol (TCP/IP) Eigenschaften, Advanced, untick Use default gateway on remote network. Dies kann je nach Einrichtung des VPN-Servers eine Route zu 192.168.123.0/24 hinterlassen oder auch nicht. Wenn dies nicht der Fall ist, müssen Sie die Route jedes Mal manuell hinzufügen, obwohl Sie sie in eine Batchdatei einfügen können.

Um die Route manuell hinzuzufügen, führen Sie (als Administrator) aus:

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

In diesem Beispiel wird eine persistente (es ist nicht notwendig, den Befehl auszuführen nach einem Neustart) Route zur IP 192.168.0.12 über das VPN Gateway 10.100.100.254.

Mehr dazu unter http://technet.microsoft.com/en-us/library/bb878117.aspx

 158
Author: TRS-80,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-03-14 14:57:46

Ich habe erfolgreich die Technik von @TRS-80 verwendet, um dies zu erreichen.

Ich arbeite von zu Hause aus und muss VPN auf das Unternehmensnetzwerk für meine E-Mail (Ich hasse Webmail!!).

Gleichzeitig muss ich ständig nach Informationen surfen und brauche auch Youtube für meine Hintergrundmusik... Jetzt möchten Sie YouTube definitiv nicht von einem VPN streamen, da es sich so anhört, als würde ein Roboter singen!!! :)

Alles, was ich getan habe, war @TRS-80 zu folgen:

Eigenschaften des VPN, Registerkarte Netzwerk "Internet Protocol (TCP/IP)" eigenschaften, Erweitert, deaktivieren Sie "Standardgateway im Remote-Netzwerk verwenden"

Und dann mein eigenes gemacht:

Kreuzen Sie auf der Registerkarte DNS "Diese Verbindungsadressen im DNS registrieren" an

Alles funktioniert nahtlos!

 21
Author: bPratik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-02-28 16:05:03

Verwenden Sie das Cmdlet Add-VpnConnectionRoute in Windows 8+.

Add-VpnConnectionRoute -ConnectionName 'My VPN Connection' -DestinationPrefix 192.168.123.0/24
 20
Author: Der_Meister,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2018-01-26 07:11:32

Zugegeben, diese Antwort spiegelt nicht Ihre Anfrage wider, aber ich verwende eine VM speziell für diesen Zweck. Auf diese Weise wird nur das Netzwerk innerhalb der VM durch die Routen eingeschränkt.

Sie können einige bessere Antworten von anderen Leuten finden, aber zumindest kann dies Ihnen etwas geben, da es eine einfache Lösung ist, nachdem die VM erstellt wurde.

 10
Author: Wayne,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2009-07-24 10:09:15

Ein "kurzer" Leitfaden für Noobs wie mich, die nicht viel über Netzwerke wissen. Nicht viel Neues hier, aber eine Zusammenfassung aller guten Optionen, die in früheren Antworten und in anderen verwandten Threads beschrieben wurden. Das gesamte Verfahren besteht aus 3 grundlegenden Schritten:

1) Machen Sie alle Verkehr nicht über VPN gehen. Dazu müssen Sie das Kontrollkästchen Use default gateway on remote network in den VPN-Einstellungen deaktivieren. Deaktivieren Sie dieses Kontrollkästchen für IPv4 und IPv6. Normalerweise deaktiviere ich das IPv6-Protokoll einfach vollständig für VPN Verbindung.

(!) Es ist (manchmal) möglich, dass das Deaktivieren dieses Kontrollkästchens für die normale Arbeit ausreicht - meiner Erfahrung nach können notwendige Routen (die den erforderlichen Datenverkehr über VPN leiten) automatisch hinzugefügt werden, nachdem eine VPN-Verbindung hergestellt wurde. Ich weiß nicht genau, wo und wie diese Regeln konfiguriert sind, aber ein solches Szenario existiert - wahrscheinlich ist es eine Magie, die von VPN-Netzwerkadministratoren ausgeführt wird.

2) Machen Sie nur notwendigen Verkehr über VPN. Dazu müssen Sie Routen definieren. Hier haben Sie 3 Optionen:

2.1) Permanente Route über VPN Gateway hinzufügen:

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

Wobei 'VPN gateway' = 'Ihre IP im VPN-Netzwerk' = w.x.y.z und Zieladresse/Netzwerk = a.b.c.d. Sie können w.x.y.z finden, indem Sie ipconfig ausführen und nach Ihrem VPN-Verbindungsnamen suchen, oder, wenn Sie PowerShell verwenden, können Sie eine kompakte Ausgabe erhalten, indem Sie ipconfig | grep -A5 PPP ausführen (die 5 Zeilen ausgibt, nachdem Sie jede PPP-Verbindung gefunden haben).

Nachteile: Sie müssen erstellen Sie Routen neu, wenn sich Ihre VPN-IP ändert.

2.2) Permanente Route über VPN-Netzwerkschnittstelle hinzufügen:

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

Wobei a.b.c.d die Zieladresse/das Netzwerk und interface number die Kennung Ihrer VPN-Verbindung ist. Diese ID kann durch Ausführen von netstat -rn oder für eine kompaktere Ausgabe von netstat -rn | grep -A10 'Interface List' gefunden werden.

Vorteile: Sie müssen nichts ändern, wenn sich Ihre VPN-Adresse (w.x.y.z) ändert.

Nachteile: Sie müssen Routen mit einer neuen ID neu erstellen, wenn Sie Ihr VPN löschen Verbindung.

2.3) Verwenden Sie das PowerShell-Cmdlet:

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

Vorteile: Notwendige Routen werden jedes Mal hinzugefügt, wenn eine VPN-Verbindung hergestellt und jedes Mal gelöscht wird, wenn sie getrennt wird.

Nachteile: Es gibt kein Get-VpnConnectionRoutes Cmdlet, daher kann es schwierig sein, diese Regeln zu verwalten.

3) Überprüfen und sicherstellen, dass das Routing wie erwartet funktioniert!

Wenn Sie persistente Routen hinzugefügt haben, können Sie diese durch Ausführen von netstat -rn | grep -A10 'Persistent Routes' überprüfen.

Und schließlich ein paar tracert Befehle ausführen gegen beide IP-Adressen, auf die über VPN zugegriffen werden soll, und gegen diejenigen, die ohne VPN funktionieren sollten.

 8
Author: o.v,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2019-08-07 13:42:20

Ich habe festgestellt, dass die Schnittstelle direkt im Routenbefehl angezeigt werden muss. Ohne sie wird Windows Hauptnetzwerkkartenschnittstelle anstelle von VPN verwenden. In meinem Fall sieht es aus wie

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

Beachten Sie das 'IF 26'.

 7
Author: Dmitry Petrov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2017-04-21 13:11:15

Wenn Sie sowohl IPV4 als auch IPV6 haben, müssen Sie an beiden Stellen das Kontrollkästchen "Standardgateway im Remote-Netzwerk verwenden" deaktivieren, auch wenn Sie nur IPV4 verwenden

 4
Author: Dave,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-07-29 09:03:55

Wenn Sie den CMAK verwenden und eine Routingdatei einrichten, die der Client herunterladen kann... windows lädt die Routingdatei herunter und passt die Routen entsprechend an. Es gibt Optionen zum Entfernen der Standardroute... und fügen Sie verschiedene statische Routen und solche hinzu. Dies wird als Split-Tunnel btw bekannt.

Hier gibt es eine gute Anleitung: http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx

 3
Author: TheCompWiz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2011-03-28 18:32:39

Ich möchte meine Lösung zum Mix hinzufügen. Es läuft auf einer Cygwin-basierten UNIX-Shell unter Windows 7 oder neuer, sollte aber auch mit MSYS2, Bash-on-Windows [WSL] nach Build 14986 oder Busybox für Windows funktionieren). Muss mit Administratorrechten ausgeführt werden.

Es hat einige Einstellungen und versucht einige der Dinge zu erkennen, die Sie nicht explizit festgelegt haben. Es setzt auch die Schnittstellennummer (IF) explizit, um einigen Problemen entgegenzuwirken, die einige Benutzer (wie ich) mit den anderen Lösungen hier hatten.

#!/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

Er ist beachten Sie auch, dass möglicherweise manuell eine niedrige Metrik festgelegt werden muss, da sonst die Standardroute vor dem für das VPN bestimmten Datenverkehr übereinstimmt. Dazu gehen Sie in die Adaptereinstellung, wo Sie den Menüpunkt "... Properties" für den VPN-Adapter → "Networking" Tab → "Internet Protocol Version 4 (TCP/IP)" Properties → "Advanced" → öffnen und dort das Kontrollkästchen "Automatic metric" deaktivieren (zusätzlich zu der Option " Use default (..." natürlich) und setzen Sie den Wert im Feld "Schnittstellenmetrik:" auf einen Wert, der unter der Standardroute liegt (siehe Ausgabe ROUTE.EXE -4 print).

 2
Author: phk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2016-12-18 13:01:47

Ein wenig alt, aber ich habe einen Weg gefunden, dies mit einem anderen Computer zu tun. Ich habe einen Laptop, auf dem ich die VPN-Verbindung eingerichtet habe, und dort habe ich FreeProxy mit Socks5 eingerichtet..

Dann richte ich Firefox auf meinem Clientcomputer ein, um den Proxyserver des Laptops zu verwenden.. das Ergebnis ist, dass wenn ich FireFox oder irgendetwas verwende, das für die Verwendung dieses Socks5-Proxys eingerichtet ist, das VPN verwendet wird, andernfalls das Standardrouting verwendet wird..

 1
Author: Lonnie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2010-04-20 19:46:26

Sie können so etwas wie netcatcher verwenden-fügen Sie einfach alle benötigten Routen einmal hinzu und vergessen Sie es. Es wird automatisch Routen hinzufügen und löschen, wenn Sie Ihre VPN-Sitzung verbinden oder trennen. Wenn Ihre VPN-IP-Adresse dynamisch abgerufen wird (DHCP), fängt Netcatcher sie ab und aktualisiert die Routen richtig.

 1
Author: Andy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-07 15:30:20

Aus dem Russischen Forums: http://forum.ixbt.com/topic.cgi?id=14:43549

Als Datei speichern (z.B. vpn_route.vbs) und nach vpn verbunden execute command

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
Author: shibormot,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2013-02-18 16:37:51

Dies kann in Windows nicht ohne zusätzliche Programme, Batchdateien oder die Befehlszeile erfolgen. Eine Alternative besteht darin, eine virtuelle (oder physische) Maschine abzurufen, auf der Sie das VPN ausführen können.

Es scheint seltsam, dass etwas so leicht Erklärbares wie dieses so schwer zu erreichen ist. Wie schwierig könnte es sein, den Datenverkehr von einem Programm zur VPN-Schnittstelle und allen anderen Programmen zur Standard-NIC-Schnittstelle weiterzuleiten? Warum sollten wir eine ganze virtuelle Maschine einrichten müssen für das? Und mit Linux ist es möglich, aber seine Lösung ist auch nicht sehr elegant.

Es ist auch sehr begehrt: Ich bin auf Dutzende von Threads zu demselben Thema gestoßen. Ich hoffe also nur, dass jemand die Lächerlichkeit erkennt und etwas dagegen tut. (In Windows 8!)

Diese Lösung stammt aus einer nicht zugewiesenen Batchdatei . Es wurde leicht angepasst.

Anleitung für Windows 7

Das Skript verbindet sich mit dem Verkehr und leitet ihn weiter durch Ihr VPN bis zu einem Neustart-Sie können route add durch route -p add ersetzen, damit die Änderung bestehen bleibt, aber wenn Sie keine persistente IP mit Ihrem VPN haben, funktioniert sie schließlich nicht mehr, wenn sich Ihre VPN-IP ändert.

  1. Öffnen Sie das Netzwerk-und Freigabecenter
  2. Öffnen Sie die Eigenschaften für Ihre VPN-Verbindung
  3. Klicken Sie auf die Registerkarte Networking
  4. Für IPv4 und 6:
    1. Klicken Sie auf Properties
    2. Klicken Sie auf Advanced
    3. Deaktivieren Sie Use default gateway[...]
  5. Schließen alles geöffnet von den vorherigen Schritten
  6. Bearbeiten und speichern Sie das Batch-Skript unten
  7. Führen Sie es als Administrator aus

Sie müssen Folgendes im Skript ersetzen:

  • <VPN> mit dem Namen der von Ihnen erstellten VPN-Verbindung
  • <USER> mit dem VPN-Benutzernamen
  • <PASS> mit dem VPN-Passwort
  • <TARGET> mit der IP-Adresse, die Sie über das VPN leiten möchten (wenn Sie weitere Adressen weiterleiten möchten, duplizieren Sie einfach die drei zeilen, in denen das Ziel verwendet wird)

Hinweis: Wenn Sie das Kennwort nicht in der Datei speichern möchten, ersetzen Sie <PASS> durch %password% und fügen Sie nach der ersten Zeile des Skripts Folgendes hinzu: set password= Input password:.

Skript

@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
 1
Author: Xantippe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/techietown.info/template/agent.layouts/content.php on line 61
2014-02-05 02:30:18