我的网络有两个调制解调器/网关,每个都通过不同的线路连接到不同的 ISP。
我的计算机有一个网络适配器。
为了确保一切都清楚,所有这些都设置在一个网络上,每个设备都可以与所有其他设备通信。
通过设置静态路由,我可以轻松选择要使用的互联网连接。现在,我想同时使用两个互联网连接,这样每个程序都会使用不同的连接。我尝试过:
使用 Windows 环回适配器创建虚拟适配器,将其配置为使用与物理适配器不同的网关,并使用 ForceBindIP 启动每个程序。但我无法让它工作(可能是因为虚拟适配器和网络之间没有连接?)。我尝试在两个适配器(物理和虚拟)之间创建一个网络桥,但 Windows 强制它们使用相同的网关,而我希望每个适配器使用不同的网关。
拼命尝试使用 VirtualBox 网络适配器以某种方式完成此操作。但我不知道该怎么做。如果我使用“桥接连接”创建虚拟机,我可以将 VM 配置为使用一个网关,而主机操作系统使用另一个网关。但我不想使用 VM,我希望主机操作系统使用两个网关。
如何使用一个网络适配器连接两个不同的网关,然后选择哪些程序使用哪个网关?
非常感谢!
答案1
我对此进行了尝试。我只是让一个系统连接到两个网关(具有不同的 IP 地址范围),并使用负载平衡代理。
Connectify 调度非常简单地为您完成这项工作,有一个免费版本,以及一个具有更多功能的付费版本。
另一种免费的开源替代方案是调度代理对我来说,这个已经足够好了。它缺少大部分花哨的功能,但它是免费的,并且可以与任何允许使用代理服务器的软件配合使用。我已经在不同子网上使用两个无线连接运行了它,它似乎工作正常。它有点复杂(需要 node.js)并且缺少 dispatch 的一些功能。
在这种情况下,我会为每个连接配置文件运行一个实例,以获得最大的灵活性。我想从理论上讲,如果您不想要非常精细的控制并且选择了代理路由,您可以运行一个绑定到您想要使用的 IP 地址的小型代理,然后执行相同的操作。
第三种选择可能是简单地购买双 WAN 路由器,并将其作为单个网关。
答案2
据我所知,您无法在 Windows 上逐个程序地执行此操作,除非它是一个允许您选择接口的特殊程序(例如 wireshark)。
原因是,大多数在 Windows 上使用网络的应用程序仅使用抽象/共享库,并且不了解物理网络 - 应用程序只是向主机名或 IP 地址发出出站请求。
现在,如果您只有几个应用程序,并且您确切知道它们在做什么以及正在访问哪些站点,那么您可以做的就是设置最常用网关的默认网关,并手动在另一个网关上注入路由。
例如路由器a的ip为192.168.0.1,路由器b为192.168.0.2。
如果我希望所有互联网都通过路由器 a,我会将其设置为我的默认网关。接下来,如果我希望 8.8.8.8 通过路由器 b,我将为其添加一个 /32 静态路由。例如,在 Windows 上:
route add 8.8.8.8 192.168.0.2
(今天刚刚了解到,对于/32,不需要定义子网)。
这将强制 8.8.8.8 通过第二个网关,而其他所有内容都通过路由器 A。
然而,您正在给自己带来一场管理噩梦,我强烈建议您购买一个负载平衡路由器。