我怎样才能使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,而不会被伪装。