为什么双NAT组网互通只能单向?

为什么双NAT组网互通只能单向?

所以我设置了一个简单的网络:首先是调制解调器,然后是路由器,路由器后面是终端设备。我可以从路由器后面的局域网访问调制解调器网络,但是当我尝试从调制解调器端访问路由器后面的局域网时,什么也没有发生。为什么会这样?我不太明白这一点,想知道路由器是否将调制解调器视为其本地网络上的设备,因此连接正常,但调制解调器没有将其自己的 NAT 视为本地网络的一部分?我应该怎么做才能从调制解调器与路由器后面的本地网络进行通信?

答案1

总结:查看路由表。查看两个路由器的路由表。它们准确显示了路由器(或主机)知道哪些网络,并显示了任何给定地址的数据包将被发送到何处。


您的第一台路由器(调制解调器)不会自动识别第二台路由器后面的网络。它只识别与其直接连接的两个网络(第一台 LAN 子网和 ISP 的 WAN 子网)。对于其他所有网络,它只有一个“默认”路由,告知它通过 ISP 访问所有其他网络。

但是,它没有第二个子网的正确路由(没有普遍接受的方法来学习路由¹),因此你发送到第二个子网的所有数据包实际上都遵循默认路由通过 WAN。

(第一个子网中的其他设备也是相同的:它们不知道第二个子网,它们只有本地路由和默认路由。)

您的第二个子网具有任何类型的出站访问权限的唯一原因根本这是因为第二个路由器的出站 NAT 隐藏了该网络。这一层 NAT 使所有出站数据包看起来都像是来自第二个路由器本身 - 它是第一个子网的一部分,因此您的第一个路由器和其他第一个子网设备已经知道如何到达它。

这就是第一个子网设备能够回复对于来自第二个子网的数据包,尽管没有通向那里的路由 - 他们认为他们正在回复本地设备(第二个路由器)。

在没有双重 NAT 的情况下实现此工作的正确方法是添加路线在第一个子网上(在第一个路由器和/或单个设备上),告诉他们使用第二个路由器到达第二个子网。在调制解调器的配置页面中查找“静态路由”部分。


¹ 两个网络之间没有自动的“内/外”关系。

大型网络使用各种协议自动交换路由(OSPF、IS-IS、iBGP、RIP、Babel 等),但消费者网关制造商对此几乎毫无兴趣。只有一些路由器恰好包含 RIP,但只有在以下情况下才有用两个都路由器会说这个……

理论上,支持 IPv6 的路由器应该能够使用 DHCP 前缀委派(它们首先获取 v6 子网前缀的机制)来学习路由,但这对 IPv4 没有帮助。

相关内容