iptables连接跟踪求助
需求:区分出源IP、目的IP相同的2个UDP流,且UDP的源、目的端口号是随机分配的,为2个UDP流中的IP包打标,属于同一个流(源、目的IP相同,源、目的端口号相同)的IP包mark相同的标记。配置规则:
iptables -t mangle -A PREROUTING -p udp -d 164.36.1.0/24 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x01
iptables -t mangle -A PREROUTING -p udp -d 164.36.1.0/24 -m conntrack --ctstate NEW -j CONNMARK --set-mark 0x02
结果:
发送两条测试流量,在nf_conntrack中查看到了两条连接,但mark均为2,增加log后发现每个包的状态都是NEW,按上述规则匹配后就执行了mark2,所以有此结果
疑问:
1、为何属于同一个连接的后续包状态仍为NEW?
2、上述需求应如何实现? 本帖最后由 jerryhua_cu 于 2016-03-17 15:19 编辑
我理解错了,不误导大家了 两个连接的new阶段分别都先后执行了set-mark-1和set-mark-2,有什么不对的么? 哦,是因为port随机,不能提前预知,所以不能用规则来描述吧。
试试nth匹配(仅针对new状态的报文)if (new) {
if (#1 of 2) set-connmark-1
if (#2 of 2) set-connmark-2
}
if (has connmark) {
set-pkt-mark as connmark
}才发现nth早就改名叫statistic了
页:
[1]