无法使用 VPN 客户端更改路由

Jul*_*ano 11 windows vpn

我的 VPN 连接强制所有互联网流量通过隧道,这非常慢。我希望只能通过隧道传输某些 IP 地址,并在我这边(客户端)执行此操作。

我正在使用FortiSSL Client连接到 VPN ,在建立连接之前,路由表如下所示:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.0.1    192.168.0.101     40
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
      192.168.0.0    255.255.255.0         On-link     192.168.0.101    276
    192.168.0.101  255.255.255.255         On-link     192.168.0.101    276
    192.168.0.255  255.255.255.255         On-link     192.168.0.101    276
    192.168.119.0    255.255.255.0         On-link     192.168.119.1    276
    192.168.119.1  255.255.255.255         On-link     192.168.119.1    276
  192.168.119.255  255.255.255.255         On-link     192.168.119.1    276
    192.168.221.0    255.255.255.0         On-link     192.168.221.1    276
    192.168.221.1  255.255.255.255         On-link     192.168.221.1    276
  192.168.221.255  255.255.255.255         On-link     192.168.221.1    276
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
        224.0.0.0        240.0.0.0         On-link     192.168.119.1    276
        224.0.0.0        240.0.0.0         On-link     192.168.221.1    276
        224.0.0.0        240.0.0.0         On-link     192.168.0.101    276
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
  255.255.255.255  255.255.255.255         On-link     192.168.119.1    276
  255.255.255.255  255.255.255.255         On-link     192.168.221.1    276
  255.255.255.255  255.255.255.255         On-link     192.168.0.101    276
Run Code Online (Sandbox Code Playgroud)

连接后如下所示:

Active Routes:
Network Destination        Netmask          Gateway       Interface  Metric
          0.0.0.0          0.0.0.0      192.168.0.1    192.168.0.101   4265
          0.0.0.0          0.0.0.0         On-link        172.16.0.1     21
        127.0.0.0        255.0.0.0         On-link         127.0.0.1   4531
        127.0.0.1  255.255.255.255         On-link         127.0.0.1   4531
  127.255.255.255  255.255.255.255         On-link         127.0.0.1   4531
       172.16.0.1  255.255.255.255         On-link        172.16.0.1    276
      192.168.0.0    255.255.255.0         On-link     192.168.0.101   4501
    192.168.0.101  255.255.255.255         On-link     192.168.0.101   4501
    192.168.0.255  255.255.255.255         On-link     192.168.0.101   4501
    192.168.119.0    255.255.255.0         On-link     192.168.119.1   4501
    192.168.119.1  255.255.255.255         On-link     192.168.119.1   4501
  192.168.119.255  255.255.255.255         On-link     192.168.119.1   4501
    192.168.221.0    255.255.255.0         On-link     192.168.221.1   4501
    192.168.221.1  255.255.255.255         On-link     192.168.221.1   4501
  192.168.221.255  255.255.255.255         On-link     192.168.221.1   4501
   200.250.246.74  255.255.255.255      192.168.0.1    192.168.0.101   4245
        224.0.0.0        240.0.0.0         On-link         127.0.0.1   4531
        224.0.0.0        240.0.0.0         On-link     192.168.119.1   4502
        224.0.0.0        240.0.0.0         On-link     192.168.221.1   4502
        224.0.0.0        240.0.0.0         On-link     192.168.0.101   4502
        224.0.0.0        240.0.0.0         On-link        172.16.0.1     21
  255.255.255.255  255.255.255.255         On-link         127.0.0.1   4531
  255.255.255.255  255.255.255.255         On-link     192.168.119.1   4501
  255.255.255.255  255.255.255.255         On-link     192.168.221.1   4501
  255.255.255.255  255.255.255.255         On-link     192.168.0.101   4501
  255.255.255.255  255.255.255.255         On-link        172.16.0.1    276
Run Code Online (Sandbox Code Playgroud)

VPN 客户端放置了一条度量标准低于我所有其他路由的全能路由,这将通过隧道路由所有互联网流量。我尝试将默认互联网路由的指标更改为较低的值:

C:\Windows\system32>route change 0.0.0.0 mask 0.0.0.0 192.168.0.1 metric 10 if 13
OK!
Run Code Online (Sandbox Code Playgroud)

但什么都没有改变。

然后我尝试删除 VPN 的“catch-all”路由,即上面的指标为 21 的路由:

C:\Windows\system32>route delete 0.0.0.0 mask 0.0.0.0 if 50
OK!
Run Code Online (Sandbox Code Playgroud)

它打破了一切:

C:\Windows\system32>ping 8.8.8.8

Pinging 8.8.8.8 with 32 bytes of data:
PING: transmit failed. General failure.
Run Code Online (Sandbox Code Playgroud)

我也尝试更改适配器上的指标,但 FortiSSL 客户端在连接时会覆盖所有设置,因此没有帮助。

修复必须来自我这边,因为另一边的人需要几天时间才能做出回应。

如果有帮助,我正在运行 Windows 7 x64。

-- 更新 (2013-12-24) --

感谢mbrownnyc的提示,我检查了Rohitab的问题,并发现 FortiSSL 客户端通过NotifyRouteChangeIP Helper API 调用监视路由表。

我在NotifyRouteChange调用之前设置了一个断点,并使用“跳过调用”选项成功地阻止了 FortiSSL 重置路由指标,现在我有:

有利于我的 Wifi 适配器的指标的路由

然而,当我运行 tracert 时,我的路由仍然通过 VPN:

C:\Windows\system32>tracert www.google.com

Tracing route to www.google.com [173.194.118.83]
over a maximum of 30 hops:

  1    45 ms    47 ms    45 ms  Jurema [172.16.0.1]
Run Code Online (Sandbox Code Playgroud)

即使路由打印的指标另有说明,Windows 网络是否有任何我不知道的方面可以支持某个路由?

bra*_*ded 2

请注意,我在这里没有使用常规的网络符号来寻址(例如 CIDR 甚至host/mask符号,以免使询问者感到困惑)。

不要删除“默认网关”路由 ( 0.0.0.0 mask 0.0.0.0),以免网络堆栈不知道将大多数数据包发送到哪里,而是尝试将 VPN 路由的度量提高到低于默认路由的度量(在本例中为4265)。

与Fortigate客户端连接后:

route change 0.0.0.0 mask 0.0.0.0 172.16.0.1 metric 4266 if N
Run Code Online (Sandbox Code Playgroud)

fortissl其中 N 是以开头返回的接口的接口号route print

网络堆栈应该正确处理这个问题:

  • “包含目标地址”的路由将处理数据包(该路由告诉网络堆栈发送发往 的数据包以this IP进行this gateway进一步路由)。
  • 所有带有目的IP的数据包172.16.*.*都会被发送到VPN;因为 Windows 网络堆栈知道,如果某个接口附加了一个地址,那么该接口就是您访问该地址范围内其他 IP 的方式。如果您发布 的“子网掩码”,我可以更明确地了解范围172.16.0.1

您必须确定需要通过 VPN 访问的资源的 IP 地址。您可以通过nslookup [hostname of resource]连接时使用轻松完成此操作,而无需调整路线。

[咆哮]

我对允许通过 VPN 进行分割隧道没有任何问题,特别是因为您引用的使用问题。如果您的 IT 部门考虑将分割隧道作为一种安全机制,他们需要重新考虑他们正在做的事情:

  • VPN 客户端对资源的访问应进行隔离并严格限制,就像通过 Internet 访问一样(因为您不主张完全控制的资产比您可以主张完全控制的资产存在更高的风险)。
  • 他们应该为 VPN 客户端集成网络访问控制机制。这可以允许他们在客户端计算机上强制执行一些策略(例如“防病毒定义是最新的吗?”等)。
  • 考虑使用严格的解决方案,例如Fortigate SSL VPN 虚拟桌面(它相当容易配置,[我认为]使用 SSL VPN 许可证是免费的)。

[/咆哮]