当前系统版本:Centos 5.5 x64   内核版本:2.6.18-194.el5

iptables版本 1.4.3

layer7版本  l7-protocols-2009-05-28.tar.gz

layer7 内核补丁   netfilter-layer7-v2.22

新内核版本: 2.6.28

注:笔者已上传所需软件,在文章末尾下载。(由于内核包过大,所以请手动下载)

下面附上内核下载地址、iptables下载地址

内核:http://www.kernel.org/pub/linux/kernel/v2.6/

iptables:http://ftp.netfilter.org/pub/iptables/

 

7层过滤首先需要内核支持,L7 filter的支持列表只更新到2.6.30.5而且有部份的功能未经测试,而所有经过测试的版本的内核是2.6.28。而且iptables的版本对内核的匹配要求很高。否则发挥不出效果,为了保证其稳定所以决定将内核升级为2.6.28

此站点可以查询iptables 版本所对应的内核 http://www.oschina.net/news/10979/

一、编译内核,为内核打layer7补丁

tar  -jxvf  linux-2.6.28.tar.gz

tar -jxvf netfilter-layer7-v2.22.tar.gz

#打补丁

cd /tar/linux-2.6.28

patch -p1 < /tar/netfilter-layer7-v2.22/kernel-2.6.25-2.6.28-layer7-2.22.patch

#编译内核

注:如果多次使用源程序编译内核,或者不清楚原始码当中有没有保留目标档案 (*.o) 以及相关的配置文件存在,最好先运行一下这个命令:

make mrproper       #这个动作将你以前进行过的核心功能选择档`案也删除掉,所以几乎只有第一次进行核心编译前才进行这个动作,其余时刻想要删除迁移吃编译过程残留数据,只要下达

make clean

 

make menuconfig     #挑选核心功能

注意此时很可能会出现warning,或者是fault。
scripts/kconfig/mconf Kconfig
.config:555:warning: symbol value 'm' invalid for PCCARD_NONSTATIC
.config:2568:warning: symbol value 'm' invalid for MFD_WM831X
.config:2569:warning: symbol value 'm' invalid for MFD_WM8350
.config:2582:warning: symbol value 'm' invalid for MFD_WM8350_I2C
.config:2584:warning: symbol value 'm' invalid for AB3100_CORE
.config:3502:warning: symbol value 'm' invalid for MMC_RICOH_MMC
Your display is too small to run Menuconfig!
It must be at least 19 lines by 80 columns.
make[1]: *** [menuconfig] Error 1
make: *** [menuconfig] Error 2
说明您的终端窗口太小,直接把你的中断最大化就可以。
 
进入menuconfig如图所示进行内核功能的选择可以直接编译到内核,也可以是是功能模块。
 
iptables\layer7\编译内核——安装配置指南_l7protocols
[*]  <*> 则表示编译迚核心;若为 <M> 则表示编译成模块! 尽量在不知道该项目为何时,且有模块可以选,那举就可以直接选择为模块啰!
原则如下:
『肯定』核心一定要的功能,直接编译迚核心内;
『可能在未来会用到』的功能,那举尽量编译成为模块;
『不知道那个东西要干嘛的,看 help 也看不懂』的话,那举就保留默认值,或者将他编译成为模块;

本文中需要加的选项为:

General setup  --- 
      Prompt for development and/or incomplete code/drivers       必选
   Networking  --- 
       Networking options  --- 
            Network packet filtering framework (Netfilter)  --- 
                 Core Netfilter Configuration  ---                            该项下的所有项目建议都选上
                      <M> Netfilter connection tracking support          必选
                            <M>   "layer7" match support                     必选                             
                                  Layer 7 debugging output                    必选  
        IP: Netfilter Configuration  ---                                        必选
          Full NAT  ---                                                    必选,否则iptables会没有nat表
 
选好之后,退出请点击 Save an laternate configuration file

接下来 安装模块

make

make modules_install

make install

注:笔者在make 的时候,出现报错"make drivers/mtd/res.o   interrupt"

后来查询到 mtd 模块的所在,以及用途,经考虑此模块用途不大,所以取消了此模块的编译 。(在make menuconfig里查找模块然后取消)

如若需要查询所有模块的用途,请点击此文链接:

2.6--make menuconfighttp://wenku.baidu.com/view/b60f08f8700abb68a982fb17.html  

至此,内核编译完成。

此时需要使用新的内核来进行接下来的步骤,所以重启服务器,选择新内核启动。

#将新的内核配置文件复制到/boot目录。
cp /usr/src/linux-2.6.28/.config         /boot/config-2.6.28

#修改默认以新的内核启动。
vi /boot/grub/grub.conf
default=0

:wq

init 6

启动成功后,确认系统内核版本是否正确

uanme -r

2.6.28

 

二、安装iptables 、layer7

1、卸载系统中旧版本的Iptables

yum  remove iptables    #用此命令时小心。

2、安装iptables ,并打layer7补丁

tar -zxvf  iptables-1.4.3.tar.gz  -C ./

cd iptables 1.4.3/

cp /tar/netfilter-layer7-v2.22/iptables-1.4.3forward-for-kernel-2.6.20forward/libxt_layer7.*  extensions/
 

./configure  --prefix=/usr/local/iptables/  --with-ksource=/tar/linux-2.6.28

make && make install

安装成功后,增加PATH路径设置

vim /etc/profile

PATH=/usr/local/iptables/sbin/:$PATH;
export PATH

source /etc/profile

查看iptables 版本是否正确

#iptables -v

iptables v1.4.3

 

3、安装layer7

cd /tar/

tar -zxvf   l7-protocols-2009-05-28.tar.gz
 

cd  l7-protocols-2009-05-28/

make  install

其实就是把响应的目录copy到 /etc/l7-protocols/
真正调用的是/etc/l7-protocols/protocols/下面的文件
 

#加载模块
modprobe ipt_connlimit
modprobe ipt_time
modprobe ipt_layer7

此时所有安装配置完成,接下来就可以使用iptables+layer7 了!!!