Windows 7 中的持久路由和 VPN 连接问题

Dyl*_*tie 6 networking windows vpn routing ip

我的家用电脑通过 VPN 连接到我的办公室。办公网络有防火墙,192.168.0.* 上有一个安全区域,10.0.0.* 上有一个 DMZ

从外部,www.mycompany.com 路由到公共 IP - 例如 1.2.3.4。我们的防火墙 NAT 为 10.0.0.4。在办公室 LAN 中,我们使用域控制器上的 DNS 记录将 www.mycompany.com 直接解析为 10.0.0.4,因为我们无法路由到我们自己防火墙的公共接口。

当我从家里连接 VPN 时,我得到了一个通过 DHCP 分配的 192.168.0.* IP,但是因为我没有使用 VPN 作为我的默认网关,所以我无法路由到 10.0.0.* 地址,除非我手动添加路线。

我创建了一个持久路由,通过安全防火墙区域上的默认网关为 10.0.0.* 子网传递流量:

route add -p 10.0.0.0 mask 255.255.255.0 192.168.0.1
Run Code Online (Sandbox Code Playgroud)

这就是问题所在。当我重新启动时,路由仍然出现在路由表中 - 很好。如果我然后连接 VPN,路由会出现,但不起作用 - 我无法路由到 10.0.0.0 子网上的任何内容。但是,如果我在 VPN 连接后删除然后重新添加路由,它工作正常。

我不知道为什么会这样。之前/之后的配置是相同的 - 相同的 IP,相同的路由表 - 但是如果我创建路由然后连接,它会失败;如果我连接 VPN 然后创建路由,它会成功。

寻找有关如何稳定配置或在 VPN 连接时自动创建路由的任何提示?

The*_*Wiz 6

老实说,有一些关于为什么这不能正常工作的原因。但让我们暂时跳过它。

与其向 IP 地址添加任意路由,不如尝试添加具有指定“接口”的路由。

即连接到 VPN 时,如果您执行以下操作:

route print
Run Code Online (Sandbox Code Playgroud)

并在列表中查找“接口”,它应该有一个分配给 VPN 接口的编号。

 19...00 0e 2e 65 ca 61 ......Realtek RTL8139/810x 系列快速以太网网卡
 12...00 26 55 44 95 3c ......Broadcom NetXtreme 千兆以太网
 28...00 00 00 00 00 00 ......MyVPN 接口 Thingie
  1................................软件环回接口 1
 13...00 00 00 00 00 00 00 e0 Microsoft ISATAP 适配器
 11...00 00 00 00 00 00 00 e0 Microsoft Teredo 隧道适配器

在我的例子中...... #28 是我的 vpn。因此,当您添加路线时...请执行以下操作:

route add -p 10.0.0.0 mask 255.255.255.0 192.168.0.1 if 28
Run Code Online (Sandbox Code Playgroud)

应该为您做的是添加路由...仅当该接口启动时。它仍将位于“持久路由”中……但在该接口启动之前不会实际添加到路由表中……并且当接口关闭时它会再次被删除。


小智 5

如果您有多个 VPN,您可能会遇到这样的问题:当它们以随机顺序连接时,它们的接口 ID 会发生变化。在这种情况下,正常ROUTE -P ADD 10.0.0.0 MASK 255.255.0.0 10.0.0.1 IF 42不起作用。下次 VPN 连接时,它可能具有不同的接口编号。

Powershell 有一个 cmdlet 可以在 VPN 连接上添加路由,并在 VPN 断开连接时再次删除它们:Add-VpnConnectionRoute。它无需指定接口 ID 即可工作。

基本语法是这样的:

Add-VpnConnectionRoute -ConnectionName "VPN Connection Name" -DestinationPrefix 10.0.0.0/16
Run Code Online (Sandbox Code Playgroud)

输入此命令后,将在 VPN 连接/断开连接时自动创建/删除路由。