我有一个 ADSL 连接和一个 4G 备用连接,每个连接在同一子网上都有自己的调制解调器/路由器192.168.0.0/24
:192.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?
我认为这被称为“源路由”,但似乎这不是确切的表达方式。
默认情况下,较新的 Windows 安装使用强主机模型。您需要通过返回到弱主机模型来操作接口设置以消除此行为。要查找的注册表或 netsh 值是weakhostsend 和weakhostreceive。
答案
How to tell Windows 2012 to send packets back to the originating router, à la Windows 2003?
很简单:你不能。Windows 的网络堆栈比 Linux 的网络堆栈更简单,并且目前还没有解决此处描述的罕见需求。
老实说,我会更多地关注网络层,然后是注册表调整...如果注册表调整,它将不会持续存在,例如重新安装...
4G(我假设某些路由器有自己的 IP) - 如果您设置 sNAT 以连接到此内部网络,所有连接看起来都来自 192.168.0.2,因此所有回复都将返回到 192.168.0.2 而没有任何Windows 框上的更改。然后路由器将 NAT 回原始 IP。这个盒子上有 2x NAT - sNAT 用于内部方向,sNAT / MASQUERADE 用于外部方向(到互联网)。
该解决方案的“阴暗面”是您将丢失有关什么是连接的真实源 IP 的信息。正如您所提到的,它是备份连接,我想它可以在所有情况/所有设置中原则上工作是可以接受的。
从逻辑上讲,如果您的 Windows 2012 默认路由器是 ADSL 路由器,那么无论原始请求来自何处都无关紧要,在所有情况下,响应都将始终发送到默认路由器。
所以让我们讨论一些案例:
案例1)当ADSL Internet宕机==>WAN接口宕机
这是一个简单的案例:只需在通过 4G 路由器的 ADSL 路由器中添加另一个默认路由。当 Wan 接口关闭时,第一个默认路由被禁用,流量将被重定向到 4G
案例1)当ADSL Internet down ==> WAN接口可以up
这种情况很难,因为您的流量将被路由到 ADSL 提供商并在那里丢失。添加另一个默认路由不会解决问题
如果您希望流量响应从其来源返回,您始终可以使用路由器的内部 IP 地址对原始流量进行源 NAT(此选项并不总是可用)。缺点是你会丢失源信息
@KamilJ 正确地指出这最好在网络层提供。您正在寻找的是将默认网关故障转移到活动 ISP 的冗余。
由于网关(内部端口)和主机都在同一个子网上,因此@KamilJ 指出的 NAT 的使用非常容易。它的好处是 100% 在网络中。
如果您可以将您的 ADSL 调制解调器/路由器设置为在互联网连接中断时禁用其内部端口,那么您还有另一个选择。只需在主机的 IP 配置中设置辅助网关即可。他们会尝试使用主接口,但是当该接口关闭时(每当 ADSL 连接中断时,ADSL 路由器交换机上的端口上的灯就会关闭)主机将无法联系网关并转到下一个(LTE 调制解调器/路由器)。
这一切都取决于您的路由器。这样做的能力在 consumer@home 路由器中并不常见,但在企业级(以及企业级的标准)路由器中更为常见。
另一种选择,同样取决于您的硬件,是如果您有分离的调制解调器和路由器(而不是一体机)。如果调制解调器可以与路由器分离,那么您可以将两个调制解调器插入一个路由器;这将允许您在路由器中进行路由跟踪和故障转移(再次使解决方案 100% 在网络上)。但这往往要求您有一个“高于平均水平”的路由器可用。