免费注册 查看新帖 |

Chinaunix

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

layer7 could't get conntrack [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-25 13:24 |只看该作者 |倒序浏览
5可用积分
firewall-04:/usr/src # ll
total 760
drwxr-xr-x  8 1000 1000   4096 Mar 23 12:44 iptables-1.4.2
-rw-r--r--  1 root root 435891 Mar 20 10:53 iptables-1.4.2.tar.bz2
-rw-r--r--  1 root root 128951 Mar 20 10:53 l7-protocols-2008-12-18.tar.gz
lrwxrwxrwx  1 root root     19 Mar 20 10:10 linux -> linux-2.6.25.20-0.1
drwxr-xr-x 23 root root   4096 Mar 24 11:15 linux-2.6.25.20-0.1
drwxr-xr-x  3 root root   4096 Mar 20 10:28 linux-2.6.25.20-0.1-obj
lrwxrwxrwx  1 root root     23 Mar 20 10:10 linux-obj -> linux-2.6.25.20-0.1-obj
drwxr-xr-x  4 1000 1000   4096 Jan  8 10:48 netfilter-layer7-v2.21
-rw-r--r--  1 root root 174702 Mar 20 10:53 netfilter-layer7-v2.21.tar.gz
drwxr-xr-x  7 root root   4096 Jun 10  2008 packages
我安装了l7也编译了内核和iptables,过程没有报错.然后应用了下
$IPTABLES -A FORWARD -m layer7 --l7proto xunlei -j DROP
$IPTABLES -A FORWARD -m layer7 --l7proto pplive -j DROP
$IPTABLES -A FORWARD -m layer7 --l7proto kugoo -j DROP
$IPTABLES -A FORWARD -m layer7 --l7proto bittorrent -j DROP
我查看log:
Mar 25 13:04:43 firewall-04 named[2661]: unexpected RCODE (SERVFAIL) resolving 'gndfeblb.cn/A/IN': 202.96.209.133#53
Mar 25 13:04:44 firewall-04 kernel: layer7: couldn't get conntrack.
Mar 25 13:04:58 firewall-04 syslog-ng[2276]: last message repeated 47 times
Mar 25 13:04:58 firewall-04 kernel: layer7: matched kugoo
Mar 25 13:04:58 firewall-04 kernel: layer7: couldn't get conntrack.
^[[BMar 25 13:05:23 firewall-04 syslog-ng[2276]: last message repeated 71 times
Mar 25 13:05:23 firewall-04 kernel: layer7: matched xunlei
Mar 25 13:05:24 firewall-04 kernel: layer7: couldn't get conntrack.
Mar 25 13:05:25 firewall-04 syslog-ng[2276]: last message repeated 15 times
Mar 25 13:05:25 firewall-04 kernel: layer7: matched xunlei
Mar 25 13:05:25 firewall-04 kernel: layer7: matched kugoo
Mar 25 13:05:27 firewall-04 kernel: layer7: couldn't get conntrack.
layer7: couldn't get conntrack是什么意思啊 我看内核里也有这个conntrack模块了啊,为什么layer7会得不到这个啊,还有一台机器我也是这么编译的,却没发现日志里有这个现象.我看了些资料,有些说这个是l7的一个bug,有些说是编译问题,我现在没方向了,哪位大哥跟我详细解释下啊,谢谢!另外l7真的能把xunlei,bit,qq,msn完全的封杀吗?

论坛徽章:
0
2 [报告]
发表于 2009-03-25 13:42 |只看该作者
你用forward中,是否已经drop了,如果已经有作用了,你可以关闭掉内核的debug。

论坛徽章:
0
3 [报告]
发表于 2009-03-25 18:06 |只看该作者

回复 #2 broadsowrd619 的帖子

那这是属于系统bug吗 还是我编译问题啊

论坛徽章:
0
4 [报告]
发表于 2009-03-25 18:33 |只看该作者
应该不是系统的bug,只是你的xunlei kugoo不能有效的match,所以没有办法分配conntrack。只要关闭掉debug就好了,否则刷屏太厉害了

论坛徽章:
0
5 [报告]
发表于 2009-03-26 14:03 |只看该作者
原帖由 徐华杰 于 2009-3-25 13:24 发表
firewall-04:/usr/src # ll
total 760
drwxr-xr-x  8 1000 1000   4096 Mar 23 12:44 iptables-1.4.2
-rw-r--r--  1 root root 435891 Mar 20 10:53 iptables-1.4.2.tar.bz2
-rw-r--r--  1 root root 12895 ...

layer7 需要与 conntrack 系统工作

  1. /* Treat parent & all its children together as one connection, except
  2. for the purpose of setting conntrack->layer7.app_proto in the actual
  3. connection. This makes /proc/net/ip_conntrack more satisfying. */
  4. if(!(conntrack = nf_ct_get(skb, &ctinfo)) ||
  5.    !(master_conntrack = nf_ct_get(skb, &master_ctinfo))){
  6.         DPRINTK("layer7: couldn't get conntrack.\n");
  7.         spin_unlock_bh(&l7_lock);
  8.         return info->invert;
复制代码

如果要处理的数据包没有进入 conntrack,则模块不对其继续处理,并向内核打印出这句话

对于协议匹配的问题,现在很多都已经不行了,楼主可以看看早期我的分析
http://blog.chinaunix.net/u/311/showart_331227.html

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
6 [报告]
发表于 2009-03-26 14:07 |只看该作者

回复 #5 platinum 的帖子

是不是没有编译使能conntrack功能?

论坛徽章:
0
7 [报告]
发表于 2009-03-26 14:33 |只看该作者
原帖由 dreamice 于 2009-3-26 14:07 发表
是不是没有编译使能conntrack功能?

确实没有,layer7 如果离开这个就无法工作了
它在匹配时要对每个连接 kmalloc 一个缓冲区,把前 n 个包的七层 payload 部分拼接到一起,然后用正则表达式去匹配这个拼接好的长串
如果 Disable 了,那就等于直接在 match 模块里 return NO_MATCH 了

论坛徽章:
3
金牛座
日期:2014-06-14 22:04:062015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:49:45
8 [报告]
发表于 2009-03-26 15:17 |只看该作者
原帖由 platinum 于 2009-3-26 14:33 发表

确实没有,layer7 如果离开这个就无法工作了
它在匹配时要对每个连接 kmalloc 一个缓冲区,把前 n 个包的七层 payload 部分拼接到一起,然后用正则表达式去匹配这个拼接好的长串
如果 Disable 了,那就等于 ...


前段时间大致的看了一下l7,感觉他这种实现方式有缺点:1、效率不能保证;2、误识别率可能比较大

论坛徽章:
0
9 [报告]
发表于 2009-03-26 20:09 |只看该作者

回复 #5 platinum 的帖子

经过这几天的观察,发觉l7的规则时好时坏的,有时效果不错,有时效果就不明显,发觉封那种http或ftp下载的能彻底封杀掉,bit下载的就效果不是很好,platinum老大有撒好的建议吗,可以彻底封杀啊

论坛徽章:
0
10 [报告]
发表于 2009-03-26 22:42 |只看该作者
原帖由 dreamice 于 2009-3-26 15:17 发表


前段时间大致的看了一下l7,感觉他这种实现方式有缺点:1、效率不能保证;2、误识别率可能比较大

误识别率的确可能比较大,但效率为什么会低呢?
l7 的做法是只处理一个连接的前 n 个包或前 m 个字节,后面的一律直接放过了
如果不支持 conntrack 的话,可能要每一个包都处理一下,就像 ipp2p 那样
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP