Total Pageviews

Tuesday, 6 March 2012

ubuntu下,L7-Filter内核版的安装

L7-Filter作为iptables的扩展来说,是非常不错的。主要的作用是用来过滤各种封包,当然也可以配合tc来实现特定数据流的限速功能。L7-Filter提供了2个版本,一个是应用层的,另外一个则是内核层的。经测试应用层的效率不怎么高,所以我才用了内核层的版本。
1:需要准备的工具 内核源码 ,layer7源码 ,各种协议的匹配文件iptables源码
注意:内核兼容性请参照官方说明文档 ,iptables的版本我选用的是1.4.11.1,最新版貌似有问题。然后安装内核编译工具  install build-essential kernel-package libncurses5-dev
2:开始动手吧,解压以上文件到/usr/src里,然后cd到内核源码里打补丁
patch -p1 <../netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch。如果有 报错就换内核版本吧,然后make menuconfig,Networking support -->Networking options --> Network packet filtering framework(Netfilter)--> Core Netfilter Configuration,选择上Layer7 match support和Layer 7 debugging output(呈现M或者星号就好了)退出,选择SAVE。开始漫长的make吧,要1个小时多,然后记得make modules_install和make install哟。
内核编译好后。mkinitramfs -o /boot/initrd.img-xxx  xxx。最后的2个xxx是版本号,要与/lib/modules下相应的文件夹名相同。然后修改/boot/grub/menu.lst修改内核引导 文件就行。我这里是需要修改grub.cfg文件,呵呵。
接着给iptables打补丁吧,cd /usr/src/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel- 2.6.20forward,cp libxt_layer7.*   /usr/src/iptables-1.4.11.1/extensions/。完了后去iptables-1.4.11.1目录,. /configure  --prefix=/  --with-ksource=/usr/src/linux-版本号,make,makeinstall。iptables -V 看看版本变了没嘿嘿。最后cd l7-protocols-2009-05-28,make install就搞定拉
3:使用方法:iptables -t mangle -A POSTROUTING  -m layer7 --l7proto flash -j DROP
其中flash是协议匹配文件中定义的东西。在/etc/l7xxxxxx/pxxxxx下面。这样就能防止一切flash,flv视频文件了,想要封QQ或者P2P也同理。可以根据自己的需要自己写规则文件。另外也可以配合TC脚本给特定的数据限速,参见官方DEMO脚本
由于服务器架构问题,只有日本代理服务器支持这些,悲剧啊。在高峰的时候禁止看视频应该可以有效解决突发性,瞬时的抽风。也可以用来开一条廉价的日本线路,限制为只能玩游戏和看网页。这样又能满足另外一些客户的要求了。
参考文章:http://l7-filter.sourceforge.net/HOWTO-kernel

No comments:

Post a Comment