当我从家里连接到公司 VPN 时,所有网络流量(包括互联网流量)都会通过 VPN(图 1)。VPN 比我家里的互联网慢得多,所以我只想通过 VPN 路由对内联网数据的请求(图 2)。
我的路线表开始如下:
IPv4 Route Table
================
Active Routes:
Network Destination Netmask Gateway Interface Metric
0.0.0.0 0.0.0.0 192.168.1.1 192.168.1.2 4000
0.0.0.0 0.0.0.0 On-link 10.0.0.142 26 <-appears when VPN connects
10.0.0.0 255.255.255.0 On-Link 10.0.0.142 26 <-appears when VPN connects
我对路由表的理解是,0.0.0.0 条目描述了流量如何到达互联网。第一个条目表示我的家用路由器在 VPN 断开连接时充当网关。第二个条目表示通过 VPN 路由的流量。
我努力了:
- 和NirSoft NetRouteView,从路由表中删除 0.0.0.0 On-Link 条目。执行此操作后,尽管 0.0.0.0 192.168.1.1 条目仍然存在,但我还是失去了互联网连接。
- 和NirSoft NetRouteView,将 0.0.0.0 On-Link 条目的度量值更改为 5000,以通过我的家用路由器优先上网。这没有任何效果。对 www.google.com 的 Tracert 显示连接仍然通过我的公司 VPN 进行。
VPN 通过 Windows 10 内置 SSTP 连接。
我正在尝试的事情能完成吗?下一步我应该尝试什么?
答案1
我发现足够的信息 https://security.stackexchange.com/questions/13900/if-i-use-a-vpn-who-will-resolve-my-dns-requests制定解决方案。
我进入控制面板 > 所有控制面板项 > 网络连接,然后编辑 VPN 连接的属性。
在“网络”选项卡中,我编辑了 TCP IPv4 设置。我将设置更改为使用远程网络上的默认网关,并将度量值更改为较大的数字。
由于这些设置保存在 VPN 连接定义中,因此它们应该是持久的但易于更改。
进行这些更改后,我仍然可以访问公司网络,但tracert
访问 www.google.com 则需要通过我的 ISP。
最初,访问使用不同 IP 范围的公司网络区域分支时遇到了一些问题。我尝试使用指向 VPN 网关 IP 的路由命令访问这些分支。尽管route print
将 VPN 网关列为“On-Link”,但 Nirsoft NetRouteView 给出了实际 IP,导致出现如下命令
route -p ADD 192.168.50.0 MASK 255.255.255.0 10.0.0.50
然而,VPN 网关偶尔会发生变化,因此找到了一种更强大的解决方案,使用Add-VpnConnectionRoute
在 PowerShell 中,例如
Add-VpnConnectionRoute -ConnectionName "VPN" -DestinationPrefix 192.168.50.0/24
要检查路线是否已添加,可以使用以下 Powershell 命令:
$conn = Get-VpnConnection -Name "VPN"
$conn.routes