Linux.ChinaUnix.net
ChinaUnix | Linux首页 | 新闻 | 博客 | 文章 | 专栏 | 新手 | 方案 | 图书 | 下载 | 人才 | 手册 | wiki | 搜索     
Linux论坛
  会员: 密码: 免费注册 | 忘记密码 | 会员登录 | 搜索 | 帮助 


iptables 中mark的问题
首页 » CU论坛 » Linux » 汇总贴列表 » 网络问题 »  
[打印] [订阅] [收藏] [本帖文本页] [推荐此主题给朋友,立即获积分]
zkheartboy
侠客



UID:482956
注册:2006-10-30
最后登录: 2008-09-22
帖子:50
精华:0

可用积分:108 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


1楼 发表于 2008-6-30 16:38 
我用string match模块过滤数据的内容,把找到的数据包--set-mark
比如:
iptables -t mangle -A PREROUTING -p tcp -m string --string "qq.com" --algo bm -j MARK --set-mark 1

怎么样才能把整个连接的所有packet mark 都设成1



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 ssffzz1 (午夜)
广告杀手-大法师



UID:159372
注册:2004-5-19
最后登录: 2008-10-07
帖子:8140
精华:13

可用积分:6010 (富足长乐)
信誉积分:100
专家积分:322 (本版:135)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


2楼 发表于 2008-7-1 16:51 
不能,因为你的匹配规则不能匹配流的所有包。
但是用五元组的匹配的可以。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
zkheartboy
侠客



UID:482956
注册:2006-10-30
最后登录: 2008-09-22
帖子:50
精华:0

可用积分:108 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


3楼 发表于 2008-7-1 22:27 
这样不行阿?
我想实现的是用string match判断connection中的字符串,然后通过nat表redirect或者dnat到另外的地址上。但是nat表又只检查一个连接的第一个packet。
请教一下有没有别的解决方法阿?



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 platinum (何时才能飞)
广告杀手-老法王
人生的转折



UID:26424
注册:2002-11-2
最后登录: 2008-10-07
帖子:20247
精华:22

可用积分:24112 (巨富豪门)
信誉积分:105
专家积分:454 (本版:105)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


4楼 发表于 2008-7-2 07:10 
用 CONNMARK 去把连接做个标记
然后利用 CONNMARK 里面的 restore 参数将连接的标记还原到该连接的每个数据包中
具体查看 CONNMARK 的文档,也可以参考 ipp2p 的官方网站的文档,ipp2p 就利用了这个原理



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

当我们在为生活而疲惫奔波的时候
生活却渐渐离我们远去
find our way, find our style
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
zkheartboy
侠客



UID:482956
注册:2006-10-30
最后登录: 2008-09-22
帖子:50
精华:0

可用积分:108 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


5楼 发表于 2008-7-2 18:37 
我按照这个楼上的去写了,结果nat表还是收不到阿,看看我的对不对

# Generated by iptables-save v1.3.8 on Wed Jul  2 18:28:33 2008
*raw
REROUTING ACCEPT [1444642:1095421177]
:OUTPUT ACCEPT [122363:62963106]
COMMIT
# Completed on Wed Jul  2 18:28:33 2008
# Generated by iptables-save v1.3.8 on Wed Jul  2 18:28:33 2008
*nat
REROUTING ACCEPT [91066:7446470]
OSTROUTING ACCEPT [93652:7634382]
:OUTPUT ACCEPT [3907:276342]
-A PREROUTING -p tcp -m mark --mark 0x5 -j REDIRECT --to-ports 3128
COMMIT
# Completed on Wed Jul  2 18:28:33 2008
# Generated by iptables-save v1.3.8 on Wed Jul  2 18:28:33 2008
*mangle
REROUTING ACCEPT [1444226:1095245188]
:INPUT ACCEPT [155701:60650041]
:FORWARD ACCEPT [1326023:1039108651]
:OUTPUT ACCEPT [122367:62964002]
OSTROUTING ACCEPT [1448390:1102072653]
-A PREROUTING -p tcp -m string --string "qq.com" --algo bm --to 65535 -j CONNMARK --set-mark 0x5
-A PREROUTING -p tcp -j CONNMARK --restore-mark
COMMIT
# Completed on Wed Jul  2 18:28:33 2008
# Generated by iptables-save v1.3.8 on Wed Jul  2 18:28:33 2008
*filter
:INPUT ACCEPT [155482:60580943]
:FORWARD ACCEPT [1326023:1039108651]
:OUTPUT ACCEPT [122368:62964598]
COMMIT
# Completed on Wed Jul  2 18:28:33 2008



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 platinum (何时才能飞)
广告杀手-老法王
人生的转折



UID:26424
注册:2002-11-2
最后登录: 2008-10-07
帖子:20247
精华:22

可用积分:24112 (巨富豪门)
信誉积分:105
专家积分:454 (本版:105)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


6楼 发表于 2008-7-3 15:49 
贴 iptables-save -c
我需要知道数据包的匹配数量
另外,即使你这么做了也会出问题,这是后话,稍后再讲



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

当我们在为生活而疲惫奔波的时候
生活却渐渐离我们远去
find our way, find our style
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
zkheartboy
侠客



UID:482956
注册:2006-10-30
最后登录: 2008-09-22
帖子:50
精华:0

可用积分:108 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


7楼 发表于 2008-7-3 17:23 
# Generated by iptables-save v1.3.8 on Thu Jul  3 17:15:07 2008
*raw
REROUTING ACCEPT [2032031:1257459643]
:OUTPUT ACCEPT [325754:159521872]
COMMIT
# Completed on Thu Jul  3 17:15:07 2008
# Generated by iptables-save v1.3.8 on Thu Jul  3 17:15:07 2008
*nat
REROUTING ACCEPT [239238:19082230]
OSTROUTING ACCEPT [246183:19624829]
:OUTPUT ACCEPT [11644:821773]
[0:0] -A PREROUTING -p tcp -m mark --mark 0x5 -j REDIRECT --to-ports 3128
COMMIT
# Completed on Thu Jul  3 17:15:07 2008
# Generated by iptables-save v1.3.8 on Thu Jul  3 17:15:07 2008
*mangle
REROUTING ACCEPT [2031625:1257284174]
:INPUT ACCEPT [388392:150778056]
:FORWARD ACCEPT [1729874:1116104300]
:OUTPUT ACCEPT [325768:159523688]
OSTROUTING ACCEPT [2055642:1275627988]
[240:182268] -A PREROUTING -p tcp -m string --string "qq.com" --algo bm --to 65535 -j CONNMARK --set-mark 0x5
[2615:641996] -A PREROUTING -p tcp -j CONNMARK --restore-mark
COMMIT
# Completed on Thu Jul  3 17:15:07 2008
# Generated by iptables-save v1.3.8 on Thu Jul  3 17:15:07 2008
*filter
:INPUT ACCEPT [388183:150709478]
:FORWARD ACCEPT [1729875:1116104352]
:OUTPUT ACCEPT [325779:159525220]
COMMIT
# Completed on Thu Jul  3 17:15:07 2008

我上过qq.com这个网站。

这个东西不能很好的实现吗?



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 platinum (何时才能飞)
广告杀手-老法王
人生的转折



UID:26424
注册:2002-11-2
最后登录: 2008-10-07
帖子:20247
精华:22

可用积分:24112 (巨富豪门)
信誉积分:105
专家积分:454 (本版:105)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


8楼 发表于 2008-7-3 17:37 
你应该用 -j CONNMARK --set-mark 0x5 来设置
匹配的时候用 -m connmark --mark 0x5 来重定向
但是,匹配的内容并非连接的全部,同理,重定向的内容也不是连接的全部
因此,即使重定向了,这个重定向过去的数据也会被对端认为是非法的



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

当我们在为生活而疲惫奔波的时候
生活却渐渐离我们远去
find our way, find our style
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
zkheartboy
侠客



UID:482956
注册:2006-10-30
最后登录: 2008-09-22
帖子:50
精华:0

可用积分:108 (白手起家)
信誉积分:100
专家积分:0 (本版:0)
空间积分:0
推广积分:0

状态:...离线...

[资料] [站内短信] [Blog]


9楼 发表于 2008-7-3 18:44 
还是匹配不到阿。

我就是想要把整个连接所有的包都mark上,因为nat表只检查连接的第一个包,同连接后面的包都做相同的处理了,我想也是用connmark匹配不到的原因把。
不知道还有没有其他的办法,我都试过好几种匹配了。
我现在还是没有理解到--save-mark和--restore-mark 的意义,是把整个连接所有包的mark拷贝,还是只拷贝匹配到的那个包。



您对本贴的看法:鲜花[0] 臭蛋[0]
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?
版主 platinum (何时才能飞)
广告杀手-老法王
人生的转折



UID:26424
注册:2002-11-2
最后登录: 2008-10-07
帖子:20247
精华:22

可用积分:24112 (巨富豪门)
信誉积分:105
专家积分:454 (本版:105)
空间积分:0
推广积分:0

状态:...保密...

[资料] [站内短信] [Blog]


10楼 发表于 2008-7-3 22:38 


50         ct = nf_ct_get(*pskb, &ctinfo);
51         if (ct) {
52                 switch(markinfo->mode) {
53                 case XT_CONNMARK_SET:
54                         newmark = (ct->mark & ~markinfo->mask) | markinfo->mark;
55                         if (newmark != ct->mark) {
56                                 ct->mark = newmark;
57                                 nf_conntrack_event_cache(IPCT_MARK, *pskb);
58                         }
59                         break;
60                 case XT_CONNMARK_SAVE:
61                         newmark = (ct->mark & ~markinfo->mask) |
62                                   ((*pskb)->mark & markinfo->mask);
63                         if (ct->mark != newmark) {
64                                 ct->mark = newmark;
65                                 nf_conntrack_event_cache(IPCT_MARK, *pskb);
66                         }
67                         break;
68                 case XT_CONNMARK_RESTORE:
69                         mark = (*pskb)->mark;
70                         diff = (ct->mark ^ mark) & markinfo->mask;
71                         (*pskb)->mark = mark ^ diff;
72                         break;
73                 }
74         }
75
76         return XT_CONTINUE;

从代码看,restore 是把连接的标记写到包的标记里面,save 则正相反
另外你没看懂我上面讲的,即使你匹配到了,转向了,但你转向过去的东西也不能被认可
nat 表只处理连接最开始的包,而你匹配到的绝对不是连接最开始,所以你永远匹配不到,这是其一
其二,前面说过了,TCP 连接是有三次握手的,即使 nat 是处理所有包,但你只把从匹配到开始以后的包转换过去,连接也不会被认可,因为 TCP 没有建立

[ 本帖最后由 platinum 于 2008-7-3 22:49 编辑 ]



您对本贴的看法:鲜花[0] 臭蛋[0]

__________________________________

当我们在为生活而疲惫奔波的时候
生活却渐渐离我们远去
find our way, find our style
积分兑换专区 | IT节能和TPC-E活动获奖名单 | 致电800-858-2903,了解DELL如何为你量身订制笔记本 | 送2G U盘 | 站长如何获得资金?

首页 » CU论坛 » Linux » 汇总贴列表 » 网络问题 »

 


Copyright © 2001-2008 ChinaUnix.net All Rights Reserved     联系我们:

感谢所有关心和支持过ChinaUnix的朋友们    转载本站内容请注明原作者名及出处

京ICP证041476号


清除 Cookies - Linux时代 - Archiver - WAP - TOP

Processed in 0.207678 second(s), 5 queries , Gzip enabled