我遇到过这样的情况:我们的 Windows 7 客户端(Windows 10 运行正常)在通过 Checkpoint Endpoint Connect VPN 连接时出现间歇性连接问题。该问题表现为内部网络上特定主机的更具体路由添加,该主机试图将流量路由到 VPN 之外,而实际上不应该这样做。
用户 A 在家中使用私有网络 192.168.1.100。此用户通过上述 Checkpoint VPN 连接到公司网络,为该隧道获取私有网络地址 10.1.7.100。此连接实例是一种混合类型,其中发往公共 IP 空间的流量通过 192.168.1.0/24 网络流出并被 NAT 到公共 IP 空间,而发往我们私有资源的流量则通过 VPN 流动。这适用于我们使用的几乎所有东西,除了一个 .net 应用程序。该应用程序使用 HTTP REST 与 10.1.4.50 的内部服务器进行通信。
VPN 客户端配置中我们有一条针对 10.1.4.0/24 的路由,该路由会将所有 10.1.4 流量以度量 1 的形式从隧道另一侧的 VPN 网关地址发送出去。
问题发生时,我们会看到路由表发生变化,该变化会为目标服务器 IP(本例中为 10.1.4.50)插入更具体的路由,度量值为 11,网关为 192.168.1.1(这是隧道所处基础接口的默认网关)。当此路由激活时,该目标服务器的所有功能都会失败,因为它被路由到隧道外。发往我们任何内部网络上其他主机的其他流量仍可正常运行,包括 10.1.4.0/24 上的其他主机。
我们咨询了 Checkpoint,他们说一旦隧道建立,他们的客户就不会像这样将虚假路由插入 IP 堆栈,所以一定是别的原因。但要找出插入该路由的原因和原因却非常困难。
我一直在使用 NirSoft 的一些实用程序来查看实时路线变化,并且我也探索了一些使用 NotifyRouteChange 来显示路线变化活动的 C++ 实用程序,但这些都没有给我真正需要的细节级别,即找出哪个进程实际插入了路线。
有人能告诉我如何找到正在修改路由的进程名称或 ID 吗?或者推荐一种替代方法来确定哪个进程实际上正在对我的路由表做坏事?如果它真的是 Checkpoints VPN 软件,我可以强制他们解决这个问题。但没有其他证据,我有点不知所措。
谢谢你的帮助!