iptables SNAT间歇性地不尊重原始端口

我有一个标志/ mangle / SNAT设置已经工作了很多年了。 但是,当尝试使用DHCP请求的相同设置时,它会间歇性地失败:

*mangle -A OUTPUT -p udp -m udp --dport 67 -j MARK --set-xmark 0x7/0xffffffff #... *nat -A POSTROUTING -m mark --mark 0x7 -j SNAT --to-source <SCRUBBED> 

然而,由于没有明显的原因,在SNAT翻译过程中,数据包偶尔会被redirect到端口1而不是67。

iptables文档指出:

  which can specify a single new source IP address, an inclusive range of IP addresses, and optionally, a port range (which is only valid if the rule also specifies -p tcp or -p udp). If no port range is specified, then source ports below 512 will be mapped to other ports below 512. [...] Where possible, no port alteration will occur 

我真正想知道什么时候发生端口改变? 我一直无法find用例。 这发生在不同版本的iptables安装的各种主机上。