>> 请问版主,你所说的"流程"是在用户态的么.
指的是数据包的匹配顺序问题,也就是 rule 的顺序
在匹配到后打标,而在他之前应该有对特殊标记的处理(因为数据包是源源不断过来的)
>> 还有,版主你说的招式1,它能将此包之前的同连接包也打上MARK,是这个意思吗?
对,正是这个意思,具体可以看 ipp2p 的一篇资料,google 他们的官方网站即可
其中用到了 CONNMARK 的两个子功能,--save-mark 和 --restore-mark
因为,在 Linux 系统里,有两个 MARK 值
其中一个是 sk_buff 结构体中的 unsigned long nfmark,这个实际上存放的是该数据包的 MARK 值
另一个就是 conntrack 结构体中的 unsigned long mark,这个存放的是该 connection 的 MARK 值
--save-mark 实际上是将该数据包的 MARK(nfmark)写到该数据包所在的连接的 MARK(mark)里
--restore-mark 实际上是将某连接的 MARK 提取出来复制到当前数据包中
利用这两个特有的机制,可以实现“此数据包标记、彼数据包(同连接的)会有相同标记”,因此可以满足你的需求