我有一个 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 的不同主机上都发生过。