![路由器是否能够成功通过双重 NAT 进行端口转发?](https://linux22.com/image/1564089/%E8%B7%AF%E7%94%B1%E5%99%A8%E6%98%AF%E5%90%A6%E8%83%BD%E5%A4%9F%E6%88%90%E5%8A%9F%E9%80%9A%E8%BF%87%E5%8F%8C%E9%87%8D%20NAT%20%E8%BF%9B%E8%A1%8C%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%EF%BC%9F.png)
下面是我的网络拓扑图。
我有几个服务器想要暴露在互联网上。它们位于 Linksys 路由器/防火墙后面,具有公共 IP 和 LAN 地址 192.168.11.1(图中的路由器 1)。我希望我的家庭网络与互联网隔离,并且对 192.168.11.0/24 子网上的主机不可见。我还希望家庭网络位于 Linksys 防火墙后面(而不是在 DMZ 中)。我将 NetGear R7000(下面的路由器 2)的 WAN 端口插入 Linksys 路由器的 LAN 端口。R7000 的 WAN 地址为 192.168.11.10,LAN 地址为 192.168.1.1。
Linksys 路由器成功将端口转发到服务器和 R7000 路由器。例如,我设置了端口 8080 到 192.168.11.10 的端口转发。如果服务器位于此地址,它将接收该端口上的连接。现在我将 R7000 放在该地址,并将其设置为将端口 8080 转发到 192.168.1.3。问题是 192.168.1.3 上的主机从未看到端口 8080 上的流量。对于外界来说,似乎没有任何东西在监听该端口。
据我了解,此设置应该可以正常工作。我猜想 R7000 存在问题,导致无法实现此设置(或者我遗漏了某个设置)。是否有任何已知的路由器可以在此配置下正确转发端口?
答案1
有多种可能性会导致此方法无法正常工作。首先要确保网络掩码设置为 255.255.255.0 而不是 255.255.0.0 - 这可能是导致问题的原因 - 流量无法返回主机。
另一种可能是端口转发需要NAT无法正常工作,因为所有 IP 都是 RFC1918,所以路由器可能无法做到这一点NAT解决方案可能是禁用路由器-2IP 为 192.168.11.10 和 192.168.1.1,通过 WAN IP(192.168.11.10)路由器-1LAN IP 为 192.168.11.1 - 然后在 192.168.1.1 路由器上将端口转发直接到所需的机器。
答案2
这是对 Davidgo 的回答的补充。
我认为 davidgo 提到的就是这个。
路由器 1 --> 设置 --> 高级路由
您可以设置静态路由,也可以使用动态路由来通知路由器 1 如何到达第二个子网。(我个人使用 RIPv2)
路由器 2 -> LAN 设置
为路由器 2 在两个方向上启用 RIPv2。检查路由表以确保它们正在接收通告并更新路由表。测试两个子网(两个方向)的连接性,然后尝试再次创建端口转发。
IPtables 是一款非常灵活的防火墙/过滤工具,如果你打算继续使用 dd-wrt 执行比普通用户更高级的任务,那么你应该熟悉自己使用它。