使用 iptables 对数据包进行选择性 NAT

使用 iptables 对数据包进行选择性 NAT

如何使 iptables NAT 所有数据包(除那些目标地址来自 192.168.254.0/24 子网的数据包之外)?

答案1

如果我理解正确的话,使用带否定的选项应该相当容易-d。例如,像这样的规则:

$ iptables -A POSTROUTING ! -d 192.168.254.0/24 -j SNAT --to-source new_source_ip

当然,您可以根据需要更改规则。这将更改发往除指定子网之外的任何目的地的所有数据包的源 IP。

答案2

在我看来,按照以下顺序执行 iptables 命令是可行的:

1. iptables -t nat -A POSTROUTING -s 192.168.254.0/24 -o eth0 -j RETURN
2. iptables -t nat -A POSTROUTING -s 0.0.0.0/0 -o eth0 -j MASQUERADE

规则 1 将匹配您的网络,并且不会对其进行伪装。规则 2 将伪装所有网络,但通常不建议使用 0.0.0.0 通配符(我甚至不确定它是否会起作用)。您应该有选择地添加所有要伪装的网络,其余网络将不会被伪装。

相关内容