Chinaunix

标题: l7协议QQ过滤与重向的问题 [打印本页]

作者: mackon_jong    时间: 2007-04-05 10:42
标题: l7协议QQ过滤与重向的问题
我的做发是这样的:
      我在mangle的PREROUTING里写了个QQ的L7规则,把匹配到的QQ数据包打上一个MARK,在POSTROUTING中把打上QQ的MARK数据包DROP掉,只是这些规则都能正常过滤。但是在我的系统中还有HTTP的应用代理,为了做到透明代理,我把TCP 80端口重定向到本地,在代理程序中,我会把iptable打的MARK写回到数据包中。但是出现这样一种情况,重定向起来后,QQ走TCP 80端口时,QQ的数据包L7就匹配不到了,我在代理程序中就读不到MARK,QQ可以通过80端口正常登陆!

     请教各位高手,谁能给予指点迷津,谢谢!!!
作者: ssffzz1    时间: 2007-04-05 11:14
1、没有必要在PREROUTING链打标记,再在POSTROUTING链丢弃,多次一举。直接不打标记丢弃就可以了。
2、iptable打的MARK写回到数据包中这句是什么意思,代理程序怎么能够处理IPTABLES打过MARK的包,具体的代理程序是哪个。如果是SQUID我有办法。
作者: mackon_jong    时间: 2007-04-05 11:33
1、上面为了说的简单点,所以说是POSTROUTING里DROP,我的系统真正是在FORWARD或OUTPUT里DROP(根据MARK),至于为什么没有在PREROUTING DROP,跟我的系统架构有关系。
2、代理程序只是个自己写的一个简单代理程序(做URL和病毒过滤),通过函数getsockopt(socket, SOL_SOCKET, 91, &nf_mark, (socklen_t *)&marksize)把IPTABLES打的标读出来(需要内核支持)。通过setsockopt,这些我都测试过没问题的。
3、现在的问题是重定向之后,TCP 80的QQ数据包L7匹配不成功
作者: platinum    时间: 2007-04-05 13:00
mark 有两种,一种是数据包的 mark,另一种是 connection 的 mark,你做的是前者
mark 不是数据包特有的东西,它是定义在 sk_buff 结构体中的一个元素,与 TTL 和 TOS 不同,它的数值不会通过网络传输到其他环境里,mark 值只在本地网络协议栈有效
因此,你前面说的转到代理以后,代理看不到 mark 值,是正常现象
作者: 5iwww    时间: 2007-04-05 13:48
QQ走TCP 80端口时,QQ的数据包L7就匹配不到了

谁说的,翻翻以前的帖子~:wink:
作者: ssffzz1    时间: 2007-04-05 14:08
SQUID禁止,CONNECT方法可以防止SQUID做数据传输类的代理,你可以参考一下.
作者: mackon_jong    时间: 2007-04-06 01:17
我做过实验,iptables打的mark通过getsockopt(socket, SOL_SOCKET, 91, &nf_mark, (socklen_t *)&marksize)是可以读到的(需内核支持)
作者: platinum    时间: 2007-04-06 07:47
原帖由 mackon_jong 于 2007-4-6 01:17 发表于 7楼  
我做过实验,iptables打的mark通过getsockopt(socket, SOL_SOCKET, 91, &nf_mark, (socklen_t *)&marksize)是可以读到的(需内核支持)

如果你 MARK 之后 DNAT 到另一台你的“代理”,然后你的“代理机”去读取 MARK 也能读到吗?
作者: mackon_jong    时间: 2007-04-06 12:21
原帖由 platinum 于 2007-4-6 07:47 发表于 8楼  

如果你 MARK 之后 DNAT 到另一台你的“代理”,然后你的“代理机”去读取 MARK 也能读到吗?



这个没有测试,但这个不重要呀
作者: net-wolf    时间: 2007-04-11 10:22
原帖由 ssffzz1 于 2007-4-5 11:14 发表于 2楼  
2、iptable打的MARK写回到数据包中这句是什么意思,代理程序怎么能够处理IPTABLES打过MARK的包,具体的代理程序是哪个。如果是SQUID我有办法。




这个怎么实现呢,就是在squid引用ipfilter的mark?
squid is an application-level gateway, so--it does not see routing table marks

[ 本帖最后由 net-wolf 于 2007-4-11 11:10 编辑 ]




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