iptables SNAT 间歇性地不遵守原始端口

iptables SNAT 间歇性地不遵守原始端口

我有一个 mark/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 转换期间,数据包偶尔会被重定向到端口 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

我真正想知道的是将要端口变更是否会发生?我找不到相关用例。这种情况在安装了不同版本 iptables 的不同主机上都发生过。

相关内容