简介 在Linux的防火墙体系Netfilter下有一个独立的模块L7 filter 。从字面上看Netfilter是对网络数据的过滤,L7 filter是基于数据流应用层内容的过滤。不过实际上 L7 filter的本职工作不是对数据流进行过滤而是对数据流进行分类。它使用模式匹配算法把进入设备的数据包应用层内容与事先定义好的协议规则进行比对,如果匹配成功就说明这个数据包属于某种协议。 

 

L7 filter是基于数据流工作的,建立在Netfilter connstrack功能之上。因为一个数据流或者说一个连接的所有数据都是属于同一个应用的,所以L7 filter没有必要对所以的数据包进行模式匹配,而只匹配一个流的前面几个数据包 (比如10个数据包)。当一个流的前面几个数据包包含了某种应用层协议的特征码时 (比如QQ),则这个数据流被L7 filter识别;当前面几个数据包的内容没有包含某种应用层协议的特征码时,则L7 filter放弃继续做模式匹配,这个数据流也就没有办法被识别,L7 filter所支持的协议如下图所示http://l7-filter.sourceforge.net/protocols。

范围广的包括QQ,迅雷,MSN,PPLIVE等一些常用的软件

 

安装前的准备 

 

 7层过滤首先需要内核支持,现在最新的内核是2.6.33但是L7 filter的支持列表只更新到2.6.30.5而且有部份的功能未经测试,而所有经过测试的版本的内核是2.6.28http://l7-filter.sourceforge.net/kernelcompat,为了保证其稳定所以决定将内核升级为2.6.28

 

过程可参照这里