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

Hoe kan ik de Windows VPN route selectief maken (via bestemmingsnetwerk)?

Ik wil een Windows VPN gebruiken maar alleen voor een bepaald netwerk, zodat het niet mijn hele netwerkverbinding overneemt.

bijv, In plaats van dat de VPN de standaard route wordt, maak het dan alleen de route voor 192.168.123.0/24

(ik zie dat hier een oplossing voor is voor Ubuntu in deze vraag , maar soms moet ik dit ook op Windows doen)

Kan dit geautomatiseerd worden, zodat wanneer ik verbinding maak met het VPN dit ook gebeurt?

Antwoorden (13)

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

U kunt uw gehele verbinding uitschakelen door naar de eigenschappen van het VPN, Networking tabblad, Internet Protocol (TCP/IP) eigenschappen, Advanced, untick Use default gateway on remote network te gaan. Dit kan al dan niet een route naar 192.168.123.0/24 achterlaten, afhankelijk van de instelling van de VPN-server. Als dit niet het geval is, moet u elke keer handmatig de route toevoegen, hoewel u deze in een batchbestand zou kunnen zetten.

Om de route handmatig toe te voegen, voert u (als beheerder):

route -p add 192.168.0.12 mask 255.255.255.255 10.100.100.254

Dit voorbeeld maakt een blijvende (het is niet nodig om de opdracht na een herstart uit te voeren) route naar de IP 192.168.0.12 via de VPN-gateway 10.100.100.254.

Meer hierover op http://technet.microsoft.com/en-us/library/bb878117.aspx

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

Ik heb met succes @TRS-80‘s techniek gebruikt om dit te bereiken.

Ik werk vanuit huis en moet VPN op het bedrijfsnetwerk voor mijn e-mail (ik haat webmail!!).

Tegelijkertijd moet ik constant surfen voor info en heb ik ook youtube nodig voor mijn achtergrondmuziek… Nu wil je zeker niet youtube streamen van een VPN, want dat laat het klinken als een Robot Singing!!! :)

Het enige wat ik deed was @TRS-80 volgen:

eigenschappen van de VPN, tabblad Netwerken, “Internet Protocol (TCP/IP)” eigenschappen, Advanced, vink “Use default gateway on remote network”

aan en doe dan mijn eigen:

onder DNS tab, vink “registreer deze verbindingen adressen in DNS” aan

Alles werkt naadloos!

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

Toegegeven dit antwoord geeft niet uw verzoek weer, maar ik gebruik een VM specifiek voor dit doel. Op die manier wordt alleen het netwerk in de VM beperkt door de routes.

U vindt misschien wat betere antwoorden van andere mensen, maar in ieder geval kan dit u iets geven om te overwegen, omdat het een gemakkelijke oplossing is nadat de VM is gemaakt.

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

Ik vond dat het nodig was om de interface in het routecommando direct te richten. Zonder dat gaat Windows de hoofdnetwerkkaartinterface gebruiken, in plaats van VPN. In mijn geval lijkt het op

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

let op de ‘IF 26’.

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

Gebruik Add-VpnConnectionRoute cmdlet in Windows 8+.

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

als u zowel IPV4 als IPV6 hebt, moet u het vinkje bij “Gebruik standaardgateway op een extern netwerk” op beide plaatsen verwijderen, zelfs als u alleen IPV4 gebruikt.

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

Als u het CMAK gebruikt en een routingbestand instelt dat de klant kan downloaden… dan zal Windows het routingbestand downloaden en routes aanpassen waar nodig. Er zijn opties om de standaard route te verwijderen… en verschillende statische routes toe te voegen. Dit staat bekend als een split-tunnel btw.

Er is een goede how-to hier: http://blogs.technet.com/b/rrasblog/archive/2007/06/11/split-tunnelling-using-cmak.aspx ](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

Ik wil mijn oplossing aan de mix toevoegen. Het draait op een Cygwin aangedreven UNIX-shell op Windows 7 of nieuwer, maar zou ook moeten werken met MSYS2, Bash-on-Windows [WSL] na build 14986, of Busybox voor Windows). Moet worden uitgevoerd met admin-rechten.

Het heeft een aantal instellingen en probeert een aantal dingen te detecteren die je niet expliciet hebt ingesteld. Het stelt ook het interface nummer (IF) expliciet in om sommige problemen die sommige gebruikers (zoals ik) hadden met de andere oplossingen hier tegen te gaan.

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

Het is ook de moeite waard om op te merken dat het misschien nodig is om handmatig een lage metrische waarde in te stellen of anders zal de standaard route overeenkomen voordat het verkeer dat bestemd is voor het VPN. U doet dit door naar de instelling van de adapter te gaan waar u het “… Eigenschappen” menu-item voor de VPN-adapter opent → “Netwerken” tabblad “Internet Protocol Versie 4 (TCP/IP)” Eigenschappen → “Geavanceerd” en daar vinkt u het “Automatisch metrisch” selectievakje uit (naast de “Standaard gateway gebruiken…” natuurlijk) en stelt u de waarde in het “Interface metrisch:” veld in op een waarde die lager is dan de standaard route (zie ROUTE.EXE -4 print-uitvoer).

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

Een beetje oud, maar ik heb een manier gevonden om dit te doen met behulp van een andere machine. Ik heb een laptop waar ik de VPN verbinding heb opgezet en daar heb ik FreeProxy opgezet met Socks5…

Dan stel ik firefox in op mijn client machine om de proxyserver van de laptop te gebruiken… het resultaat is dat als ik FireFox gebruik of iets dat is ingesteld om die Socks5 proxy te gebruiken, het de VPN zal gebruiken, anders gebruikt het standaard routing.

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

U kunt zoiets als netcatcher gebruiken - voeg gewoon alle routes toe die u nodig hebt en vergeet het. Het zal automatisch routes toevoegen en verwijderen wanneer u verbinding maakt of uw VPN-sessie verbreekt. Als uw VPN IP-adres dynamisch wordt verkregen (DHCP) zal netcatcher het opvangen en de routes op de juiste manier updaten.

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

van het russische forum: http://forum.ixbt.com/topic.cgi?id=14:43549 ](http://forum.ixbt.com/topic.cgi?id=14:43549)

opslaan als bestand (ex: vpn_route.vbs) en na vpn verbonden uitvoeren commando

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

Een ‘korte’ gids voor noobs zoals ik, die niet veel weten over netwerken. Niet veel nieuws hier, maar een samenvatting van alle goede opties die in eerdere antwoorden en in andere gerelateerde threads zijn beschreven. De hele procedure bestaat uit 3 basisstappen:

1) Maak alle verkeer dat NIET via VPN gaat. Hiervoor moet u in VPN-instellingen het selectievakje Use default gateway on remote network uitschakelen. Zorg ervoor dat u dit selectievakje uitvinkt voor zowel IPv4 als IPv6. Meestal schakel ik het IPv6-protocol gewoon volledig uit voor de VPN-verbinding.

(!) Het is (soms) mogelijk dat het uitvinken van dat selectievakje voldoende is voor het normale werk - in mijn ervaring kunnen noodzakelijke routes (die het noodzakelijke verkeer via VPN leiden) automatisch worden toegevoegd nadat de VPN-verbinding tot stand is gebracht. Ik weet niet precies waar en hoe deze regels zijn geconfigureerd, maar zo'n scenario bestaat - waarschijnlijk is het een beetje magisch gedaan door VPN-netwerkbeheerders.

2) Maak alleen noodzakelijk verkeer dat via VPN verloopt. Hiervoor moet u routes definiëren. Hier heeft u 3 opties:

2.1) Voeg een permanente route toe via VPN gateway:

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

waarbij ‘VPN gateway’ = ‘uw IP op VPN netwerk’ = w.x.y.z en doeladres / netwerk = a.b.c.d. U kunt w.x.y.z vinden door ipconfig uit te voeren en te zoeken naar de naam van uw VPN-verbinding of, als u PowerShell gebruikt, kunt u compacte uitvoer krijgen door ipconfig | grep -A5 PPP uit te voeren (die 5 lijnen zal uitvoeren na het vinden van elke PPP-verbinding).

Nadelen: u zult opnieuw routes moeten aanmaken als uw VPN IP zal veranderen.

2.2) Voeg een permanente route toe via VPN netwerkinterface:

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

waarbij a.b.c.d het doelwit is van de adres/het netwerk en interface number de identificatie van uw VPN-verbinding is. Dit ID kan worden gevonden door netstat -rn uit te voeren, of, voor compactere uitvoer, netstat -rn | grep -A10 'Interface List'.

Pros: u hoeft niets te veranderen als uw VPN adres (w.x.y.z) zal veranderen.

Cons: u moet routes opnieuw creëren met een nieuw ID als u uw VPN-verbinding verwijdert.

  1. 3) Gebruik PowerShell cmdlet:

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

Pro’s: noodzakelijke routes worden toegevoegd elke keer dat de VPN-verbinding tot stand komt en verwijderd elke keer dat deze wordt verbroken.

Nadelen: er is geen Get-VpnConnectionRoutes cmdlet dus het kan moeilijk zijn om deze regels te beheren.

*3) Controleer en zorg ervoor dat de routering werkt zoals verwacht *

Als u persistente routes hebt toegevoegd, kunt u deze controleren door netstat -rn | grep -A10 'Persistent Routes'.

uit te voeren en, ten slotte, een paar tracert-commando’s uit te voeren tegen zowel IP-adressen die via VPN moeten worden benaderd als tegen de adressen die zonder VPN zouden moeten werken.

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

Dit kan niet worden gedaan in Windows zonder gebruik te maken van extra programma’s, batch-bestanden of de opdrachtregel. Een alternatief is om een virtuele (of fysieke) machine te krijgen waarop je de VPN kunt draaien.

Het lijkt vreemd dat iets wat zo makkelijk te verklaren is als dit, zo moeilijk te bereiken is. Hoe moeilijk kan het zijn om het verkeer van het ene programma naar de VPN interface en alle andere programma’s naar de standaard NIC interface te routeren? Waarom zouden we daar een hele virtuele machine voor moeten opzetten? En met Linux is het mogelijk, maar de oplossing is ook niet erg elegant.

Het is ook erg gewild: Ik kwam tientallen threads tegen over hetzelfde onderwerp. Dus ik hoop alleen dat iemand zich het belachelijke hiervan realiseert en er iets aan doet. (In Windows 8!)

Deze oplossing komt uit een unattributed batch file . Het is enigszins aangepast.

Instructies voor Windows 7

Het script zal verbinding maken met en verkeer routeren via je VPN tot een reboot - je kunt route add vervangen door route -p add om de verandering te laten voortduren, maar als je geen persistent IP hebt met je VPN, zal het uiteindelijk stoppen met werken wanneer je VPN IP verandert.

  1. 1. Open het Network and Sharing Center
  2. 2. Open de eigenschappen voor uw VPN-verbinding
  3. Open het Netwerk en Sharing Center . 3. Klik op het tabblad Networking
  4. Klik op de knop Properties. Voor zowel IPv4 als 6:
  5. Klik op het tabblad Advanced. Klik op Use default gateway[...]
  6. 2. Klik op <VPN>
  7. Klik op het tabblad <USER>
  8. Schakel <PASS> uit 5. Sluit alles wat geopend is vanuit de vorige stappen
  9. Bewerk en sla het batch-script op dat u hieronder vindt
  10. Voer het uit als beheerder

U dient het volgende te vervangen in het script:

  • <TARGET> met de naam van de VPN verbinding die u hebt gemaakt
  • <PASS> met de VPN gebruikersnaam
  • %password% met het VPN wachtwoord
  • set password= Input password: met het IP adres dat u wilt laten routeren via het VPN (als u meer adressen wilt routeren, dupliceer dan simpelweg de drie regels waar het doelwit wordt gebruikt)

_Note: _Als u het wachtwoord niet in het bestand wilt opslaan, vervang &007 dan door &007 en voeg na de eerste regel van het script het volgende toe: &007.

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