iptables MARK 可以更改网关,CONNMARK 不能

iptables MARK 可以更改网关,CONNMARK 不能

我有一个路由表,它将来自另一台主机的一些流量发送到不同的高速网关

ip route show table 88
default via 192.168.88.1 dev eno3
192.168.88.0/24 dev eno3 scope link src 192.168.88.4

以及根据设置的数据包标记转发的路由规则:

32765:  from all fwmark 0x58 lookup 88

我有一个 iptables 规则来通过此连接路由一些流量。

*mangle
-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j MARK --set-mark 88
COMMIT

这一规则工作正常,但长期存在的连接会失去其标记,最终会通过默认网关而不是高速网关进行路由。

我尝试将规则设置为 CONNMARK:

-A PREROUTING -p tcp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88
-A PREROUTING -p udp -s 192.168.10.2 --sport 12345 -j CONNMARK --set-mark 88

数据包已被标记(如图所示iptables -L -vv -t mangle),但它们从错误的网关发出。

我该如何解决我的问题?我在Debian上。

根本问题是:与源端口 12345 和源主机 1.2.3.4 的任何连接以及该连接生命周期中的所有后续内容都应从该网关发出。

相关流量主要是 UDP

相关内容