仅为 Windows 10 上的出站 UDP 流量设置 VPN

Nik*_*ita 6 windows vpn routing openvpn

是否可以仅通过 vpn 路由出站/出站流量,同时直接接受入站流量,绕过 vpn 连接?我最感兴趣的是路由 UDP 数据包。

我只看到一个关于 linux/unix 的问题,其中路由表的使用派上用场。我研究了多种服务和客户端,但似乎没有一个提供此功能。它只是一个非常小众的功能,还是技术上在 Windows 机器上不可行?

har*_*ymc 6

VPN 在 Windows 和 Linux 上的工作方式类似:它创建一个虚拟 TAP 网络适配器,并为其安装驱动程序。驱动程序始终与 VPN 提供商的服务器保持联系,并处理此虚拟适配器上的传出和传入连接 。默认情况下,它会向您计算机上的路由表添加默认规则,这将使所有传出连接默认通过 VPN。

VPN 提供商的功能与您的 ISP 非常相似:它拥有一系列 IP 地址,从中为您的计算机分配一个地址。所有使用此 IP 地址的连接都通过 VPN 提供商。

这意味着您的计算机现在有两个 IP 地址,一个通过您的 ISP,另一个通过 VPN 提供商。

任何到 VPN IP 地址的传入连接都将通过虚拟 TAP 网络适配器到达(要求调用方正确使用兼容的 VPN 客户端)。任何与 ISP IP 地址的传入连接都将到达您的路由器,该路由器将连接到物理适配器。路由器对在您的计算机上创建的 VPN 一无所知(除非路由器本身是连接到 VPN 的那个)。

这意味着默认情况下,情况正是您想要的:默认情况下,传出连接将通过 VPN 的 TAP 适配器,而使用您的公共地址的传入连接将在物理适配器上结束。

唯一的问题是使您的特定程序能够在物理适配器上侦听传入连接。这可以通过两种可能的方法来实现:

  • 在启动 VPN 客户端之前启动此程序可能有效(或无效)
  • 将此程序绑定到物理接口。如果您不是它的开发人员,您可以尝试免费的 ForceBindIP,这是一个免费的 Windows 应用程序,它将自身注入另一个应用程序并改变某些 Windows 套接字调用的方式,允许您强制应用程序使用特定的网络接口/IP 地址。
    另请参阅文章 3 ForceBindIP GUI 以轻松将 Windows 应用程序绑定到特定网络适配器

此解决方案的可行性在很大程度上取决于您的硬件(主要是路由器)和软件(VPN 驱动程序和操作系统)。