如何让我的路由器正确转发端口?

Gif*_*guy 5 networking router firewall port-forwarding

我的网络目前看起来像这样(简化):

在此处输入图片说明

请注意,路由器 #2 连接到路由器 #1 的 LAN 接口。任何见过标准静态 IP 设置以及用于住宅或其他小型建筑物的附加防火墙的人都应该熟悉这一点。路由器 #1 实际上是我的电缆网关,但由于它是功能齐全的路由器/防火墙,因此我将其称为路由器。

现在,我需要在两个防火墙中打开各种端口,以便与我的服务器进行传入通信 - 端口 80 就是一个很好的例子。所以我在路由器 #2 中打开了端口 80,到目前为止,公共 IP XXX129 上的所有传入流量都被正确路由。

问题是我还需要我的服务器响应路由器 #1 WAN 接口上公共 IP XXX130 上的传入流量。当然,我不能只告诉路由器 #1 将端口 80 转发到另一个公共 IP。仅当流量被定向到 LAN 子网时才支持端口转发。

如果需要,我愿意在以下条件下重组我的网络拓扑:

Router #1 cannot have its WAN IP reassigned - X.X.X.130 is mandatory.  
Router #1 cannot be moved or disconnected from the cloud.  
The server cannot be given a second IP address.  
I would prefer the server to have a private IP address - e.g. 10.0.0.10  
I'd like to keep Router #2, but it can have a private IP - e.g. 10.0.1.10
Run Code Online (Sandbox Code Playgroud)

遵循这些规则,我需要让我的服务器从两个公共 IP 地址接收端口 80 上的传入流量。SU上有人知道这是否可能吗?到目前为止,我唯一的理论是在任一路由器上设置静态路由,或者以某种方式将我的两个子网合并为一个子网。

编辑:
我已经改变了我的图表来描绘弗雷德的解决方案。看到我将不得不在某处妥协,我认为最小和最简单的妥协将是最有效的。虽然给我的服务器两个 IP 地址肯定会使服务器配置复杂化,但由此产生的网络拓扑结构的简单性将是一个相当公平的权衡。

在此处输入图片说明

此解决方案将允许两个公共 IP 地址保持公开可见,同时允许两个路由器将端口直接转发到我服务器的本地 IP 地址。此外,我的网络上连接到路由器 #2 的所有东西都可以访问路由器 #1 的子网,因此服务器也将保持本地 IP 地址的本地可见性(除了路由器 # 之外,没有其他任何东西连接到路由器 #1 2 和服务器)。

我的服务器主板实际上有一个集成的千兆双网卡,所以我的硬件可以毫无问题地处理这个问题。今天我将尝试配置我的服务器以响应两个 NIC,我们将看到它是如何从那里开始的 - 但在这一点上,我预计不会出现任何更好的解决方案,以及由此引起的任何进一步问题当他们到达时,妥协很可能会得到解决。当然,如果上面的网络布局有任何错误,请告诉我。

非常感谢,伙计们!

小智 1

保留上述设置,但在路由器 1 的 DMZ 中放置一个新的第三个防火墙路由器,并将 .130 流量定向到放置路由器 3 的 DMZ。然后,路由器 3 将传入流量转发到 10.0.0.10 地址。这里的关键是服务器的“仅一个 IP”要求。如果该路径的服务器上没有明确的 IP(通过路由器 3 的流量),您将无法通过路由器 3 发回数据包。服务器的路由表将为单个分配的 IP 有一个默认网关,因此无论流量以哪种方式到达(通过路由器 2 或路由器 3),响应都会从默认网关发出,因此会转换为该服务器的公共 IP路由器。也许 UDP 可以工作(流量转到 0.130,然后从 0.129 返回),但我认为 TCP 无法在未通过服务器网关路由的 IP 上成功建立连接。我建议您认真考虑“只有一个 IP”的要求,因为允许 2 个 IP 会使事情变得更简单。