Chinaunix

标题: 关于IPTABLES 各种MARK 功能的用法........... [打印本页]

作者: Oumulong    时间: 2010-08-04 11:39
标题: 关于IPTABLES 各种MARK 功能的用法...........
iptalbes 的有多个MARK 模块..用法各不相同..一直没有完全明白..希望高手解释一下各功能的使用及区别....
-m mark
-m connmark
-j MARK
-j CONNMARK
-j CONNSECMARK
-j SECMARK
作者: platinum    时间: 2010-08-04 11:42
小写的是数据包匹配模块,大写的是数据包修改模块

带 CONN 的是连接的标记,不带的是标记数据包的

带 SEC 的是用于处理 IPSEC 数据的,不带的是处理一般数据的
作者: Oumulong    时间: 2010-08-04 13:41
白金大哥几句就概括了大的方向...利害啊...

CONNMARK target options:
  --set-xmark value[/ctmask]    Zero mask bits and XOR ctmark with value
  --save-mark [--ctmask mask] [--nfmask mask]
                                Copy ctmark to nfmark using masks
  --restore-mark [--ctmask mask] [--nfmask mask]
                                Copy nfmark to ctmark using masks
  --set-mark value[/mask]       Set conntrack mark value
  --save-mark [--mask mask]     Save the packet nfmark in the connection
  --restore-mark [--mask mask]  Restore saved nfmark value
  --and-mark value              Binary AND the ctmark with bits
  --or-mark value               Binary OR  the ctmark with bits
  --xor-mark value              Binary XOR the ctmark with bits


在这个模块中..--save-mark,--set-mark,--restore-mark
这些常用的..如何用..有什么区别呢??搞不明白
作者: renxiao2003    时间: 2010-08-04 14:36
自己配置防火墙策略必须得懂这些。
作者: platinum    时间: 2010-08-04 15:00
白金大哥几句就概括了大的方向...利害啊...



在这个模块中..--save-mark,--set-mark,--restore-mark  ...
Oumulong 发表于 2010-08-04 13:41

  --set-mark value[/mask]       Set conntrack mark value
  --save-mark [--mask mask]     Save the packet nfmark in the connection
  --restore-mark [--mask mask]  Restore saved nfmark value

就像描述中说的一样
--set-mark 是直接设置连接中的 mark(注意,不是设置数据包的)
--save-mark 是把数据包中的 mark 设置到连接中
--restore-mark 是把连接中的 mark 设置到数据包中

具体这些功能有什么意义呢?看如下规则

  1. iptables -t mangle -A INPUT -m state --state NEW-j MARK --set-mark 1
  2. iptables -t mangle -A INPUT -j CONNMARK --save-mark
  3. iptables -t mangle -A INPUT -j CONNMARK --restore-mark
复制代码
虽然只匹配了每个连接的第一个包,但通过后面两个操作,使得这个连接的每个包都被设置成了 MARK 1

这个功能在 ipp2p 结合 tc 进行限速时特别有用
http://www.ipp2p.org/docu_en.html#example
作者: Fjcyz    时间: 2010-08-04 15:02
学习了
作者: yun_88    时间: 2010-08-04 15:39
路过,学习
作者: OUMULONG    时间: 2010-08-04 16:40
总算明白这个功能在对包和连接作标记的应用了.....


再次非常感谢白金大哥..................

趁热打铁....下现几个项的应用呢...............

--and-mark value              Binary AND the ctmark with bits
  --or-mark value               Binary OR  the ctmark with bits
  --xor-mark value              Binary XOR the ctmark with bits
--set-xmark value[/ctmask]
作者: platinum    时间: 2010-08-04 16:41
自己去研究吧,呵呵
作者: OUMULONG    时间: 2010-08-04 16:45
对于限速来说...包肯定是在某一个连接中...


就象之前我用IPTABLES L7标记文件大小限制速度..那就应该用CONNMARK了..这是对整个连接的包进行限速成了...也正是我们需要的..


但白金大哥说过..L7本身就有连接跟踪的作用..而IP2PP没有...所以得通过上面的方式..转换成第个包...

作了个小节....呵
作者: Oumulong    时间: 2010-08-04 17:12
等白金大哥来成都开课学习了......................
作者: Oumulong    时间: 2010-08-04 17:14
iptables -t mangle -A POSTROUTING -o eth1 -m mark --mark 1 -j CLASSIFY --set-class 1:2


刚才白金大哥发的..里面有个CLASSIFY..我路由也有这个模块..正好测试一下..限速的灵活更大强大了.........
作者: platinum    时间: 2010-08-04 17:17
就象之前我用IPTABLES L7标记文件大小限制速度..那就应该用CONNMARK了..这是对整个连接的包进行限速成了...也正是我们需要的..
OUMULONG 发表于 2010-08-04 16:45


对,就是这个意思
作者: platinum    时间: 2010-08-04 17:17
等白金大哥来成都开课学习了......................
Oumulong 发表于 2010-08-04 17:12


呵呵,如果有机会一定去
作者: Oumulong    时间: 2010-08-05 15:36
  1. iptables -t mangle -A PREROUTING -m layer7 --l7proto httpa -j MARK --set-mark 1
  2. iptables -t mangle -A PREROUTING -p tcp --sport 80  -m mark ! --mark 1 -j CONNMARK  --set-mark 2
复制代码
今天想通过L7作标记进行限速..写了二句.第一句把httpa特殊的数据包标记为1 ,
第二句对非标记记1的数据包作标记2,在这里我用的是CONNMARK ,我不能确认在此用MARK,,还是CONNMAKR ,包括-m mark 还是-m connmark

配置目的就是为了让httpa 特征以外的80端口数据被限速

请指教下....
作者: platinum    时间: 2010-08-09 10:46
应该用 MARK 而不是 CONNMARK
因为 tc 只认 MARK 而不是 CONNMARK
作者: laonanr    时间: 2010-12-24 15:56
留记号,最近要用
作者: inknk    时间: 2010-12-27 11:55
要学习的东西还很多啊,收藏了
作者: polejo    时间: 2015-04-15 14:28
mark,
各种mark功能真强大




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2