免费注册 查看新帖 |

Chinaunix

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

安装L7-filter Userspace [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-09 17:33 |只看该作者 |倒序浏览

安装L7-filter Userspace











layer7很多人都听过,我以前安装layer7未果,今次领导要求限制qq,只好重新研究了一下,特此做了记录跟大家共享。
layer7有kernel版本和userspace版本,相对而言userspace版本不用对内核进行升级和编译,不需要重启。但是使用起来不如kernel的方便,而且对于内核版本还是有一定的要求,因此实在没办法的时候,恐怕还是得用kernel版本的,这里我使用userspace版本,只是供大家参考,毕竟现在软件变化太快了。

安装环境:linux版本rhel4.5,内核版本2.6.18(升级过一次),iptables版本1.3.8
下载必要的包l7-filter-userspace-0.11.tar.gz、libnetfilter_queue-0.0.17.tar.bz2、l7-protocols-2009-05-28.tar.gz、libnfnetlink-0.0.41.tar.bz2、libnetfilter_conntrack-0.0.99.tar.bz2。这些安装包可以从http://l7-filter.sourceforge.net下到,还有一些可以从ftp.netfilter.org下载。

软件包安装顺序要注意,除了libnetfilter_queue和ibnetfilter_conntrack可以不分先后,其他请尽可能按照我写的顺序安装。
记住layer7-userspace不是在任何版本的kernel下都可以使用的,另外iptables的版本最好也不要太低,当然太高了也可能有麻烦,看介绍是说最好是内核版本从2.6.14到2.6.19.7之间。有问题的话一定要参考http://l7-filter.sourceforge.net/HOWTO-userspace
我的/usr/include/linux/netlink.h文件,在内核从2.6.9升级到2.6.18后,并没有被新版本的内核文件替代,因此我手工替代了一下,将新内核对应的netlink.h替换了老的那个??这是我后来才发现的,中间消耗了我很多时间去解决因这个问题导致的错误。

首先是安装libnfnetlink,你可以在任何目录安装(看你把下载的软件包放在了哪里,我默认在软件包放置的目录下操作):
tar jxvf libnfnetlink-0.0.41.tar.bz2
cd libnfnetlink-0.0.41
./configure
make
make install
安装完毕,开始装libnetfilter_queue(libnetfilter_queue和libnetfilter_conntrack应该是先装谁都行)
cd ..
tar jxvf libnetfilter_queue-0.0.17.tar.bz2
cd libnetfilter_queue-0.0.17
如果这个时候直接./configure,会提示找不到libnfnetlink.pc,这个文件是系统软件pkg-config需要的,因此找到这个文件??安装libnfnetlink的时候它已经生成了,cp到/usr/local/lib/pkgconfig/下(也有可能是/usr/lib/pkgconfig/下,你可以看看你机器上哪个目录下有很多的.pc文件),复制完成后重新./configure,依然可能会报错,诸如无法辨识的参数"URL"之类,编辑一下这个.pc文件,把URL那行注释掉就可以,现在我假设你已经做完了上述的一切事宜。
./configure
make
make install
然后是libnetfilter_conntrack:
tar jxvf libnetfilter_conntrack-0.0.99.tar.bz2
cd libnetfilter_conntrack-0.0.99
./configure
make
make install
完毕,开始安装l7-filter-userspace-0.11
cd ..
tar zxvf l7-filter-userspace-0.11.tar.gz
cd l7-filter-userspace-0.11
此时如果./configure,还是会出现类似提示找不到libnetfilter_conntrack.pc或者libnetfilter_queue.pc的提示,记得怎么安装它俩的吧,如法炮制,找到libnetfilter_conntrack.pc和libnetfilter_queue.pc,复制到/usr/local/lib/pkgconfig/下(也有可能是/usr/lib/pkgconfig/下),修改文件,注释掉URL那行,ok,我假定你已经做完这些步骤了。
./configure
make
make install
现在软件基本算安装完了,需要安装layer7的协议集7-protocols-2009-05-28.tar.gz(你用的时候可能已经很新了)
cd ..
tar zxvf l7-protocols-2009-05-28.tar.gz
cd l7-protocols-2009-05-28
make install
这会在/etc下面生成一个l7-protocols目录,里面放置可以被分辨的协议,你也可以自己定义协议。
现在可以说你已经安装完layer7-userspace了。
现在自己做一个/etc/l7-filter.conf文件,内容比如
qq    9
http    10
根据手册介绍,标记只能从3以后开始打,之前的是系统占用的。另外根据l7-userspace-HOWTO,执行modprobeip_conntrack_netlink,加载新的模块,lsmod|grepcontrack可以看ip_conntrack_netlink的功能被添加。现在执行
l7-filter -vv -f /etc/l7-filter.conf
如果没有报错,证明已经可以使用layer7了。我在服务器上安装的时候,提示我找不到libnfnetlink.so.0、libnetfilter_queue.so.1什么的,还是由于lib的目录有问题,找到这些文件,复制到/usr/lib(也有可能是/usr/include/lib)里面,就没事了。
这个程序的用途是,将每个进入队列的数据包打一个标签,根据我的/etc/l7-filter.conf文件,凡是qq协议的数据包,都会标记为9,http会标记为10。
使用方法如下:我们在iptables中添加这样的记录
iptables -A FORWARD -j QUEUE(这里也可以是iptables -A FORWARD -j NFQUEUE),作用是让某些数据包进入队列然后交给l7-filter处理。
l7-filter -f /etc/l7-filter.conf    //后面可以加-q参数,如果你选择了特定的队列
然后你就可以对被打上标签的数据包做处理了。不过由于这是数据包在经过forward链的时候做了标记处理,因此丢弃的时候只好在iptables的其他位置,比如:
iptables -t mangle -A POSTROUTING -m mark --mark 9 -j DROP
当然一定要在数据包经过FORWARD表以后的位置上处理,不然没有意义了。ok,现在通过你机器转发传送QQ数据包已经被禁止了(我观察了一下,似乎我的MSN同时也上不去了,郁闷!)。

好了,如果有什么问题或者建议(比如对我那段安装libnetfilter_conntrack等三个软件的不堪经历有什么好见解的),大家可以一起探讨。

论坛徽章:
0
2 [报告]
发表于 2011-12-22 18:55 |只看该作者
谢谢楼主
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP