免费注册 查看新帖 |

Chinaunix

广告
  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 5526 | 回复: 11
打印 上一主题 下一主题

初学者安装iptables layer 7 模块 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-14 13:17 |只看该作者 |倒序浏览
由于公司要求控制下载与聊天,原netfilter没有装Layer 7模块,所以打算装上,但给内核源文件打补丁的时候遇到一些
问题,进过大侠们的帮助,完成了编译安装。
系统环境 cent 0S 内核版本2.618 iptables-1.3.5
原来装系统时候装的rpm版本的,强制卸载?rpm -e --nodeps iptables 1.3.5.rpm
现在我详细把我的操作过程贴出来,防止向我这样的初学者走弯路!
(一)下载相应的内核、内核补丁包、iptables源代码、源代码L7补丁。并做好编译内核前的准备:
1、下载相应补丁包,linux内核补丁版本一定要与所下载内核版本号一致,否则打内核补丁时出现找不到文件提示!我

之前就犯下了这个错误!

     l7-protocols-2008-10-04.tar.gz       iptables源代码补丁包
     linux-2.6.25.tar.bz2                       linux内核源代码
     netfilter-layer7-v2.20.tar.gz            L7内核补丁包
     iptables-1.4.2.tar.tar                     iptables源代码


2、将他们cp到/usr/src目录下并解压缩,相信大家都会
3、建立符号链接
   ln -s  linux.2.6.25 linux
(二)给内核打补丁(在新内核源码目录运行)
   1、刚开始我下载的是2.6.27的内核,觉得最新的就是最好的,可是没想到内核补丁文件还没出来支持2.6.27的,所

以走了一段弯路,先把走弯路的错误提示写给大家以防以后出现此提示不知道什么原因:
         打补丁命令:

         patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch
         报错如下:
               [root@ftp2 src]# patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch
               can't find file to patch at input line 3
               Perhaps you used the wrong -p or --strip option?
               The text leading up to this was:
               --------------------------
                |--- linux-2.6.25/net/netfilter/Kconfig 2008-04-16 21:49:44.000000000 -0500
                |+++ linux-2.6.25-layer7/net/netfilter/Kconfig  2008-04-29 00:40:01.000000000 -0500
                --------------------------
                File to patch:
         原因在于补丁包内没有我的2.6.27的补丁,就吧2.6.25补丁打进去,最后结果就报错了呵呵!      

  2、接下来说一下正确的操作。经过“广告杀手”的提示,我下载了2.6.25的内核并按照上面的命令打补丁,一切OK

         打补丁命令:

         patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch


(三)给内核打补丁、编译新内核

1、进入到刚解压完成的内核源码目录执行(如果原来编译过执行make clean 和make mrproper):

    make oldconfig

网上说这个命令是这个意思:make oldconfig会自动对比之前的kernel config,根据之前版本的配置生成一个kernel

config,这样方便我们在编译新核心的时候,无须在从头修改所有的核心设置 。运行完命令后会出现很多询问你的选项

,不知道的就回车(很多,好像是询问新内核与老内核模块的差异是否安装),不要盲目回车,后面有关于Layer 7的模

块千万不要跳过,否则白忙活了!

2、make oldconfig顺利完成后用make menuconfig命令查看一下Layer 7内核模块是否已经选上了。我的2.6.25的位置



    NETWORKING-->NETWORKING OPTIONS-->Network packet filtering framework(Netfilter) -->Core Netfilter

Configuration-->Layer 7 match suppport   

   如果有了Layer 7模块选项了就OK了,这步完成了

3、编译内核  

  make  编译内核

  make modules  编译模块

  make modules_install 安装模块

  make install  安装内核

这几步我这里没有遇到什么问题,也许算幸运吧 呵呵。内核编译完成!重启,要注意在启动是grub上默认是进入老内

核版本,最好直接连接到服务器,grub出现时选择新编译的内核,我的是2.6.25。如过是ssh远程连接编译的内核要注

意了。


这样内核编译完成,进入下一步给iptables打L7补丁。


(四)最后一步!给iptables打上L7补丁,并且安装iptables 1.4.2

1、进入到iptables的源码目录,将/usr/src/netfilter-layer7-v2.20/iptables-1.4.1.1-for-kernel-2.6.20forward目录下的

libxt_layer7.c  libxt_layer7.man 这两个文件拷贝到/usr/src/iptables-1.4.2/extensions目录下

2、进入到/usr/src/iptables-1.4.2/extensions目录下,执行

chmod +x layer7-test  不知道为什么呵呵,尽管执行

3、进入到iptables1.4.2源码目录执行以下命令给iptables1.4.2打补丁,由于没有针对我的2.6.25的补丁,所以就装了最新的2.6.20,其他版本的补丁没有试过

patch -p1 < ../netfilter-layer7-v2.20/iptables-1.4-for-kernel-2.6.20forward-layer7-2.20.patch

4、接下来就是安装打好补丁的iptables1.4.2了,进入到iptables1.4.2源码目录,执行以下命令:
./configure --with-ksource=/usr/src/linux/
make KERNEL_DIR=/usr/src/linux      
make install
不出意外的情况下应该OK

5、安装iptables1.4.2的Layer7 协议文件
cd  l7-protocols-2008-10-04
make install
如果没报错就大功告成了,下面进行测试

6、最后执行个过滤规则看是否正确

iptables -t mangle -I PREROUTING -m layer7 --l7proto edonkey -j DROP

如果没报错说明正确

到此,iptables layer 7模块已安装完毕。
下面附件附带了本次用到的的各种补丁包,内核源码就不上传了,太大了呵呵

[ 本帖最后由 wangpenghua 于 2008-10-15 14:47 编辑 ]

netfilter-layer7-v2.20.tar.gz

170.69 KB, 下载次数: 84

内核Layer 7补丁

l7-protocols-2008-10-04.tar.gz

125.19 KB, 下载次数: 74

Layer 7协议文件

iptables-1.4.2.tar.tar

425.67 KB, 下载次数: 89

iptables 1.4.2源代码

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
2 [报告]
发表于 2008-10-14 13:31 |只看该作者
怀疑还是版本不匹配的问题,你找一个能够严格匹配的版本试试。

论坛徽章:
0
3 [报告]
发表于 2008-10-14 13:41 |只看该作者
是当前系统版本2.6.18还是需要升级内核2.6.27的版本呢?

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
4 [报告]
发表于 2008-10-14 13:45 |只看该作者
我是说你的源代码版本和L7补丁能够严格匹配的。这个和你的系统运行版本关系不太大。

另外确定你打补丁的时候所在的目录正确。

论坛徽章:
0
5 [报告]
发表于 2008-10-14 13:57 |只看该作者
哦,试试看,一会把结果贴上来。我在源代码目录中运行的。

论坛徽章:
0
6 [报告]
发表于 2008-10-14 14:52 |只看该作者
现在内核补丁包打成功了,正在make oldconfig。。。
[root@ftp2 linux-2.6.25.9]# patch -p1 < /usr/src/netfilter-layer7-v2.20/kernel-2.6.25-layer7-2.20.patch
patching file net/netfilter/Kconfig
patching file net/netfilter/Makefile
patching file net/netfilter/xt_layer7.c
patching file net/netfilter/regexp/regexp.c
patching file net/netfilter/regexp/regexp.h
patching file net/netfilter/regexp/regmagic.h
patching file net/netfilter/regexp/regsub.c
patching file net/netfilter/nf_conntrack_core.c
Hunk #1 succeeded at 208 (offset -2 lines).
patching file net/netfilter/nf_conntrack_standalone.c
patching file include/net/netfilter/nf_conntrack.h
patching file include/linux/netfilter/xt_layer7.h

论坛徽章:
0
7 [报告]
发表于 2008-10-14 15:44 |只看该作者
make oldconfig。。。
会出现一堆询问y m n 等,如果不知道就回车,不要一直回车,注意看
后面有个netfilter选项,如果不知道什么意思都选上(其中有关于L7 的一定要选上)
make。。。

论坛徽章:
0
8 [报告]
发表于 2008-10-14 16:17 |只看该作者
感觉make oldconfig然后再用
make menuconfig看看在netfilter中有没有layer 7
如果有就对了进行下一步
make 编译内核
make modules 编译模块
make modules_install 安装模块
make install 安装内核
reboot 重启
最后在重启的时候最好不要用ssh,因为重启时要在grub上选择新的内核,否则默认还是进老的内核

[root@ftp2 ~]# uname -a
Linux ftp2.etpass.com 2.6.25.9 #1 SMP Tue Oct 14 15:41:16 CST 2008 i686 i686 i386 GNU/Linux
内核升级成功,接下来给iptables升级layer 7补丁。。。

论坛徽章:
0
9 [报告]
发表于 2008-10-14 16:39 |只看该作者
[root@ftp2 iptables-1.4.2]# patch -p1 < ../netfilter-layer7-v2.20/iptables-1.4-for-kernel-2.6.20forward-layer7-2.20.patch  
patching file extensions/libipt_layer7.c
patching file extensions/libipt_layer7.man
patching file extensions/.layer7-test
[root@ftp2 iptables-1.4.2]# chmod +x .layer7-test  
[root@ftp2 extensions]# export KERNEL_DIR=/usr/src/linux-2.6.25.9
进入到iptables-1.4.2源文件目录
./configure
make BINDIR=/sbin LIBDIR=/lib MANDIR=/usr/share/man install
出现了很多警告,最后几行
libipt_layer7.c:388: 警告:结构初始值设定项中有多余元素
libipt_layer7.c:388: 警告:(在 ‘layer7’ 的初始化附近)
libipt_layer7.c: 在函数 ‘libipt_layer7_init’ 中:
libipt_layer7.c:392: 警告:隐式声明函数 ‘register_match’
make[1]: *** [libipt_layer7.oo] 错误 1
make[1]: Leaving directory `/usr/src/iptables-1.4.2/extensions'
make: *** [install-recursive] 错误 1

报错请高手看一下???

论坛徽章:
5
IT运维版块每日发帖之星
日期:2015-08-06 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00IT运维版块每日发帖之星
日期:2015-08-23 06:20:00IT运维版块每日发帖之星
日期:2015-08-24 06:20:00IT运维版块每日发帖之星
日期:2015-11-12 06:20:00
10 [报告]
发表于 2008-10-14 17:42 |只看该作者
.layer7-test  

这个文件要执行一遍的好像是。反正有这么个文件,名字忘记了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP