是否可以仅通过 VPN 路由出站/传出流量,同时直接接受入站流量,绕过 VPN 连接?我最感兴趣的是路由 UDP 数据包。
我只见过关于 linux/unix 的一个问题,其中使用路由表非常方便。我研究了多个服务和客户端,但似乎都没有提供此功能。它只是一个非常小众的功能,还是在技术上在 Windows 机器上不可行?
答案1
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 客户端之前启动此程序可能会起作用(或不起作用)
- 将此程序绑定到物理接口。如果您不是其开发者,您可以尝试免费的
强制绑定IP,一款免费的 Windows 应用程序,它将自身注入另一个应用程序并改变某些 Windows 套接字调用的执行方式,从而允许您强制应用程序使用特定的网络接口/IP 地址。
另请参阅文章 3 ForceBindIP GUI 轻松将 Windows 应用程序绑定到特定网络适配器。
该解决方案的可行性在很大程度上取决于您的硬件(主要是路由器)和软件(VPN 驱动程序和操作系统)。