用iptablesselect数据包的NAT

我怎样才能使iptables NAT的所有数据包,除了那些目标地址从192.168.254.0/24子网?

如果我理解得很好,使用-d选项可以相当容易。 例如,像这样的规则:

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

当然,你可以根据你的需要改变规则。 这将更改所有数据包的源IP,其目标是除指定的子网外的任何目标。

在我看来,遵循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将匹配您的networking,不会MASQUERADE规则2将伪装所有,但一般不是好主意给0.0.0.0通配符(我甚至不知道它是否会工作)。 你应该有select性地添加你想伪装和rest的所有networking,而不会被伪装。