是否可以将 NAT 路由设备配置为在 WAN 和 LAN 接口上具有相同的子网?

是否可以将 NAT 路由设备配置为在 WAN 和 LAN 接口上具有相同的子网?

路由器(或平衡器、NAT网关……等)的案例:

  • LAN 接口(例如 eth0),IP 为 192.168.1.1,位于 192.168.1.0/24 子网。充当 DHCP(和互联网)服务器。
  • WAN 接口(例如 eth1),IP 为 192.168.1.100,位于 192.168.1.0/24 子网中。网关为 192.168.1.1(IP 对应于例如 DSL 路由器)。

这可行吗?

如果需要,我可以添加一些方案或图形。

答案1

路由器需要在其接口上使用不同的子网。如果路由器在与目标地址具有相同子网的接口上收到带有目标地址的数据包,它将丢弃该数据包,除非该数据包的目的地是路由器的 IP 地址。此外,如果数据包的目的地是其本地子网,主机将不会将数据包发送到其网关,除非该数据包专门用于网关的 IP 地址。

192.168.1.0/25您可以执行类似 LAN -和 WAN -的操作192.168.1.128/25,但您需要两个完全不同的子网。

与您的问题相关的是两家具有相同或重叠子网的公司合并的情况。在这种情况下,可以使用外部源 NAT 连接合并后的每个公司的路由器。

答案2

RFC 6598 规定,为运营商级 NAT 保留的地址范围“可以以类似于 RFC 1918 私有地址空间的方式在路由设备上使用,当两个不同接口上的地址相同时,该路由设备能够跨路由器接口进行地址转换。”

并非所有 NAT 设备都支持这种配置,但原则上是可以的。关键是不仅要通过 IP 地址区分网络端点,还要通过设备区分:如果路由器有两个以太网设备,eth0 和 eth1,则 192.168.1.1%eth0 和 192.168.1.1%eth1 可能是不同的端点,属于不同的网络。然后可以在这些网络之间实现 NAT。如果没有 NAT,就无法在网络之间路由数据包,因为这需要不同的 IP 地址。

例如,我不确定如何在 Linux 上配置这种 NAT,但我认为它会涉及根据传入接口选择不同的路由表。

相关内容