如何在不影响路由的情况下在两个网络接口之间进行 NAT

如何在不影响路由的情况下在两个网络接口之间进行 NAT

我的 Linux 路由器有 5 个以太网端口。它目前充当端口 1 和 2 以及专用 WAN 端口之间的路由器,没有 NAT。端口 1 为 192.168.1.1/24,端口 2 为 192.168.2.1/24,WAN 端口为 192.168.0.1/24。

传出的 WAN 连接经过跟踪使用情况的日志设备,然后经过执行 NAT 的第二个家庭路由器,并在其 WAN 端口上使用公共 IP。

为简单起见,网络如下,IP 前缀为 192.168.-:

server1--------Router1--------Logging device--------Router2----------
   .1.2      .1.1  .0.1                           .0.254  (public ip)

Router1 配置良好(这是一个简单的路由器),Router2 也很好(这是一个简单的网关)。但是我想删除 Router2,并在 Router1 的端口 3 和 4 之间进行 NAT,而端口 4 使用我的真实公共 IP。

这可行吗?我想在端口 1-2-WAN 和 3-4 之间保持严格隔离,以确保所有流量都通过日志记录设备(带有其原始 IP 源地址)。

透明桥接是解决方案吗?我可以将源 NAT 应用于此桥接吗?IP 寻址做得好吗?

答案1

假设路由器 1 上的 5 个以太网端口名为 eth0 - eth4,因此 eth3 上有 WAN:

iptables -t nat -A POSTROUTING --source 192.168.1.0/24 --out-interface eth3 -j MASQUERADE
iptables -t nat -A POSTROUTING --source 192.168.2.0/24 --out-interface eth3 -j MASQUERADE

如果您有一个固定 IP 作为您的公共 IP 地址,那么将“-j MASQUERADE”替换为“-j SNAT --to-source $PUBLIC_IP”(当然,将 $PUBLIC_IP 替换为您的 WAN 地址!)。

当然,您需要将默认路由设置为 eth3,但这不是问题的一部分。您还需要将传入流量阻断到公共 IP 地址。

相关内容