免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6281 | 回复: 9
打印 上一主题 下一主题

[网络管理] l7协议QQ过滤与重向的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-04-05 10:42 |只看该作者 |倒序浏览
10可用积分
我的做发是这样的:
      我在mangle的PREROUTING里写了个QQ的L7规则,把匹配到的QQ数据包打上一个MARK,在POSTROUTING中把打上QQ的MARK数据包DROP掉,只是这些规则都能正常过滤。但是在我的系统中还有HTTP的应用代理,为了做到透明代理,我把TCP 80端口重定向到本地,在代理程序中,我会把iptable打的MARK写回到数据包中。但是出现这样一种情况,重定向起来后,QQ走TCP 80端口时,QQ的数据包L7就匹配不到了,我在代理程序中就读不到MARK,QQ可以通过80端口正常登陆!

     请教各位高手,谁能给予指点迷津,谢谢!!!

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2007-04-05 11:14 |只看该作者
1、没有必要在PREROUTING链打标记,再在POSTROUTING链丢弃,多次一举。直接不打标记丢弃就可以了。
2、iptable打的MARK写回到数据包中这句是什么意思,代理程序怎么能够处理IPTABLES打过MARK的包,具体的代理程序是哪个。如果是SQUID我有办法。

论坛徽章:
0
3 [报告]
发表于 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匹配不成功

论坛徽章:
0
4 [报告]
发表于 2007-04-05 13:00 |只看该作者
mark 有两种,一种是数据包的 mark,另一种是 connection 的 mark,你做的是前者
mark 不是数据包特有的东西,它是定义在 sk_buff 结构体中的一个元素,与 TTL 和 TOS 不同,它的数值不会通过网络传输到其他环境里,mark 值只在本地网络协议栈有效
因此,你前面说的转到代理以后,代理看不到 mark 值,是正常现象

论坛徽章:
0
5 [报告]
发表于 2007-04-05 13:48 |只看该作者
QQ走TCP 80端口时,QQ的数据包L7就匹配不到了

谁说的,翻翻以前的帖子~:wink:

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
6 [报告]
发表于 2007-04-05 14:08 |只看该作者
SQUID禁止,CONNECT方法可以防止SQUID做数据传输类的代理,你可以参考一下.

论坛徽章:
0
7 [报告]
发表于 2007-04-06 01:17 |只看该作者
我做过实验,iptables打的mark通过getsockopt(socket, SOL_SOCKET, 91, &nf_mark, (socklen_t *)&marksize)是可以读到的(需内核支持)

论坛徽章:
0
8 [报告]
发表于 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 也能读到吗?

论坛徽章:
0
9 [报告]
发表于 2007-04-06 12:21 |只看该作者
原帖由 platinum 于 2007-4-6 07:47 发表于 8楼  

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



这个没有测试,但这个不重要呀

论坛徽章:
0
10 [报告]
发表于 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 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP