论坛风格切换切换到宽版
  • 1197阅读
  • 4回复

[问题求助]iptables的mark和connmark的最大值? [复制链接]

上一主题 下一主题
离线wixhpp.
 
发帖
1927
C币
-132682
威望
347
贡献值
1
银元
-1
铜钱
4184
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
如题,.我发现,iptable.s的mark是有最大值限制的,这个值是0xFF,.
也就是255,说明mark是一个2位的16进制.数。    美容

但是,当mark超过255的时候,mark会发生“.回饶”的.现象。服务器

比如--.set-mark. 510 等价于--set-mark 254(广告)
--set-m.ark 256  等价于 --set-mark .1.

但connmark.是否也有类似限制呢还未实验。    美容

注:.我是在BCM芯片的DD-WRT路由器上做流量控制发现这个问题的。ip.tables版本是1.3.8    美容

评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
离线翅膀.
发帖
2230
C币
-60365
威望
417
贡献值
1
银元
-1
铜钱
5042
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-13
在 struct sk_buff 中定义的 mark 如下
        __u32                   mark;
复制代码
在 struct nf_conn 中定义的 connmark 如下
#if defined(CONFIG_NF_CONNTRACK_MARK)

        u_int32_t mark;

#endif
复制代码
而在 xt_MARK.h 中的定义如下(我的内核是 2.6.23)
/* Version 0 */

struct xt_mark_target_info {

        unsigned long mark;

};



/* Version 1 */

enum {

        XT_MARK_SET=0,

        XT_MARK_AND,

        XT_MARK_OR,

};



struct xt_mark_target_info_v1 {

        unsigned long mark;

        u_int8_t mode;

};
复制代码
在 xt_CONNMARK.h 中的定义如下
struct xt_connmark_target_info {

        unsigned long mark;

        unsigned long mask;

        u_int8_t mode;

};
复制代码
从理论上分析,无论是 mark 还是 connmark,都是用了 32bit 变量存储数据,最大值是 0xffffffff,不存在你说的问题

实际测试一下
iptables -t mangle -vnL PREROUTING
Chain PREROUTING (policy ACCEPT 119K packets, 60M bytes)

pkts bytes target     prot opt in     out     source               destination

   26  2028 MARK       all  --  *      *       192.168.1.173        0.0.0.0/0           MARK set 0x101
复制代码
iptables -vnL FORWARD
Chain FORWARD (policy ACCEPT 848M packets, 423G bytes)

pkts bytes target     prot opt in     out     source               destination

    0     0            all  --  *      *       0.0.0.0/0            0.0.0.0/0           MARK match 0x1

  26  2028            all  --  *      *       0.0.0.0/0            0.0.0.0/0           MARK match 0x101
复制代码
实际测试也不存在你所述的问题(kernel 2.6.23, iptables 1.4.0)

还有,你的表述有误,256 即使回环,也不等价与 1,而是 0

离线snakeart.
发帖
2156
C币
-198401
威望
397
贡献值
1
银元
-7
铜钱
4855
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-13
但我的是bcm5354芯片路由器上
iptables 1.3.8,
确实在mark 510的时候
如果filter的handle 510的时候流控没效果(tc -s -d class 观察对应类没流量)
改成handle 254就OK了。

linux 核心版本 2.4.37

[ 本帖最后由 zhoutao0712 于 2010-1-19 11:54 编辑 ]

离线龙逆天.
发帖
2080
C币
-604906
威望
399
贡献值
4
银元
-1
铜钱
4615
人人网人气币
0
只看该作者 地板  发表于: 2010-04-13
不知道是否和平台以及iptables版本有关系啊。

发帖
2001
C币
-235944
威望
346
贡献值
1
银元
-2
铜钱
4319
人人网人气币
0
只看该作者 4楼 发表于: 2010-04-13
经过反复实验,已经确定原因出在handle上,不是iptables,是TC问题,和linux版本有关系
快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个