我有 2 个接口 eth0(192.168.0.1) 和 eth1(10.1.1.15)。我以这种方式对所有数据包进行 nat。
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE
现在我想保留 NAT 数据包的源端口,如下所示:
192.168.0.1:8080->nat->10.1.1.15:8080
可以使用 iptables 来做到这一点吗?
答案1
默认情况下,MASQUERADE(类似 SNAT)会尝试保留建立连接的机器的原始端口。但是,当然,如果两台主机使用同一个端口,那么它必须为第二台主机选择另一个端口。
您还可以使用以下命令明确设置每个协议的端口范围:
/sbin/iptables -t nat -A POSTROUTING -p tcp -j MASQUERADE --to-ports <i>[-<n>]