zoukankan      html  css  js  c++  java
  • 安装iptables layer 7 模块

    (一)下载相应的内核、内核补丁包、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模块已安装完毕。
    文章出处:DIY部落(http://www.diybl.com/course/6_system/linux/Linuxjs/20090317/161968.html)

  • 相关阅读:
    面试-23种设计模式
    面试-类和对象的区别
    面试-链表和数组的区别
    Python强制抛出自定义异常
    Python中模拟C# Linq的一些操作
    python随机数seed用法
    Python目录常用操作
    Unity编辑器下获取动画的根运动状态并修改
    python字符串操作,以及对应的C#实现
    测试-一个unity的编译bug,初始化器
  • 原文地址:https://www.cnblogs.com/1327/p/1515007.html
Copyright © 2011-2022 走看看