如何让 Windows 接受来自同一子网上不同路由器的连接?

如何让 Windows 接受来自同一子网上不同路由器的连接?

我有一个 ADSL 连接和一个 4G 备份连接,每个连接在同一个子网上都有自己的调制解调器/路由器192.168.0.0/24192.168.0.1(ADSL)和192.168.0.2(4G)
默认网关是192.168.0.1(ADSL),因此备份路由器从不用于传出连接。

我在每个路由器上都打开了 TSE/RDP 端口,以便访问本地网络上的多台计算机。

使用旧的 Windows 2003 和旧的 Windows XP,无论使用哪种路由器,传入连接都可以正常进行:当我通过 ADSL 或 4G 连接时,我可以与这些旧的 Windows 计算机交互。
因此,这些 Windows 通过原始路由器发回数据包。这可能不是一种“好”的行为,但对于我的需求来说,这非常好。

使用 Windows 2012,数据包仅通过默认网关发送回,这是合乎逻辑的做法。
如何告诉 Windows 2012 将数据包发送回原始路由器,就像 Windows 2003 一样?

我以为这被称为“源路由”,但这似乎不是确切的表达。

答案1

答案How to tell Windows 2012 to send packets back to the originating router, à la Windows 2003?很简单:不能。

Windows 的网络堆栈比 Linux 的更简单,并且目前尚未解决这里描述的罕见需求。

答案2

较新的 Windows 安装默认使用强主机模型。您需要操作接口设置以通过返回弱主机模型来消除此行为。要查找的注册表或 netsh 值是weakhostsend 和weakhostreceive。

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostsend=enabled

netsh interface ipv4 set interface [InterfaceNameOrIndex] weakhostreceive=enabled

答案3

老实说,我会更关注网络层,然后是注册表调整...如果注册表调整,它不会在重新安装等情况下持久存在...

4G(我假设是某个路由器,因为它有自己的 IP)- 如果您要为与此内部网络的连接设置 sNAT,则所有连接看起来都像源自 192.168.0.2,因此所有回复都将返回到 192.168.0.2,而无需对 Windows 机器进行任何更改。然后路由器将 NAT 回原始 IP。此机器上将有 2x NAT - sNAT 用于内部方向,sNAT/MASQUERADE 用于外部方向(到互联网)。

此解决方案的“缺点”是您将丢失有关连接的真实源 IP 的信息。正如您提到的,它是备份连接,我猜它可以在所有情况下/所有设置下原则上正常工作。

答案4

@KamilJ 指出这最好在网络层实现,这是正确的。您正在寻找的是将默认网关故障转移到活动 ISP 的冗余。

由于网关(内部端口)和主机都位于同一子网中,因此使用 NAT(如 @KamilJ 指出的)非常容易。而且它具有 100% 处于网络中的优势。

如果您可以设置 ADSL 调制解调器/路由器,使其在互联网连接中断时禁用其内部端口,那么您还有另一种选择。只需在主机的 IP 配置中设置辅助网关即可。它们将尝试使用主网关,但该接口关闭(ADSL 路由器交换机端口上的灯每当 ADSL 连接断开时,主机将无法联系网关,并转到下一个网关(LTE 调制解调器/路由器)。

这一切都取决于您的路由器。在 consumer@home 路由器中,这种功能并不常见,但在商务级(以及企业级)路由器中却更为常见。

另一个选项(同样取决于您的硬件)是,如果您有独立的调制解调器和路由器(而不是一体式设备)。如果调制解调器可以与路由器分开,那么您可以将两个调制解调器插入一个路由器;这将允许您在路由器中进行路由跟踪和故障转移(使解决方案再次 100% 联网)。但这往往要求您有一个“高于平均水平”的路由器。

相关内容