当前系统版本: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下载地址
内核:
iptables:
7层过滤首先需要内核支持,L7 filter的支持列表只更新到2.6.30.5而且有部份的功能未经测试,而所有经过测试的版本的内核是2.6.28。而且iptables的版本对内核的匹配要求很高。否则发挥不出效果,为了保证其稳定所以决定将内核升级为2.6.28
此站点可以查询iptables 版本所对应的内核
一、编译内核,为内核打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 #挑选核心功能
本文中需要加的选项为:
接下来 安装模块
make
make modules_install
make install
注:笔者在make 的时候,出现报错"make drivers/mtd/res.o interrupt"
后来查询到 mtd 模块的所在,以及用途,经考虑此模块用途不大,所以取消了此模块的编译 。(在make menuconfig里查找模块然后取消)
如若需要查询所有模块的用途,请点击此文链接:
至此,内核编译完成。
此时需要使用新的内核来进行接下来的步骤,所以重启服务器,选择新内核启动。
#将新的内核配置文件复制到/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 PATHsource /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 了!!!