Linux Iptables 内核2.6.18添加time模块

来源:中国IT实验室 作者:佚名 2008-05-20 出处:pcdog.com

  • linux
  • .net
  •     系统:CentOS 5.1 内核:2.6.18-53.1.19.el5

        iptables 版本 1.3.5(系统自带的)

        下载一个内核:linux-2.6.18 解压到/usr/src/linux

        #cd linux

        #make mrproper

        #make menuconfig

        什么也不做,退出。

        vi Makefile

        把EXTRAVERSION = 更改为EXTRAVERSION = -53.1.19.el5

        保持跟uname -a 的版本一致

        下载一个iptables1.3.5解压到/usr/src/iptables (下面会用到)

        (下载)patch-o-matic-ng-20080214.tar.bz2

        wget ftp://ftp.netfilter.org/pub/iptables/iptables-1.4.0.tar.bz2

        #cd patch-o-matic-ng-20080214

        #./runme ——download

        ……

        应用time补丁到内核:

        选y ,至此,netfilter的补丁打完了,如果你需要别的模块可以根据需要加上。

        编译kernel的modules

        #cd /usr/src/linux

        #make menuconfig

        在Device Drivers->;Networking support->;Networking options->;Network packet filtering (replaces ipchains)

        ->;IP: Netfilter Configuration中把下面的两项M选中。

        ; TIME match support

        保存,退出。

        编译安装模块

        下面就是最重要的步骤了,因为我们的原则是节省时间,不重新编译内核,而只编译其中的模块,这点2.4的内核跟2.6的内核有所不同,2.4内核的模块是以*.o形式的,而2.6内核是以*.ko形式的,

        [root@jiecho]# make modules

        HOSTCC scripts/basic/fixdep

        HOSTCC scripts/basic/split-include

        HOSTCC scripts/basic/docproc

        HOSTCC scripts/conmakehash

        HOSTCC scripts/kallsyms

        CC scripts/empty.o

        HOSTCC scripts/mk_elfconfig

        MKELF scripts/elfconfig.h

        HOSTCC scripts/file2alias.o

        HOSTCC scripts/modpost.o

        HOSTCC scripts/sumversion.o

        HOSTLD scripts/modpost

        HOSTCC scripts/pnmtologo

        HOSTCC scripts/bin2c

        到这里就可以ctrl+c中止了,因为我们不是要编译所有的模块,这样太浪费时间,而仅仅是netfilter的模块,但是如果你直接执行make modules SUBDIRS=net/ipv4/netfilter就会出错,这就是2.4和2.6的区别,我们先生成了scripts目录下的一系列需要的文件后就可以make modules SUBDIRS=net/ipv4/netfilter,并用modpost等等把*.o文件生成为*.ko文件。

        #make modules SUBDIRS=net/ipv4/netfilter

        编译完成netfilter的模块后拷贝编译完成的模块

        #chmod +x /usr/src/linux/net/ipv4/netfilter/ipt_time.ko

        # cp /usr/src/linux/net/ipv4/netfilter/ipt_time.ko /lib/modules/2.6.18-53.1.19.el5/kernel/net/ipv4/netfilter/

        #depmod -a 或 insmod /usr/src/linux/net/ipv4/netfilter/ipt_time.ko

        #lsmod | grep ip

        此时,能看到以下东东

        ipt_time 6400 1

        但现在还不能用,还却少libipt_time.so 这个东东

        现编译下载的iptables

        #cd /usr/src/iptables

        #make KERNEL_DIR=/usr/src/linux

        # make install KERNEL_DIR=/usr/src/linux (我编译时出现不少警告,错误!)

        完了以后,

        #cp /usr/src/iptables/extensions/libipt_time.so /lib/iptables中

        到此结束, iptables -A INPUT -m time ——timestart 8:00 ——timestop 18:00 ——days Mon,Tue,Wed,Thu,Fri


    更多内容请看PCdog.com--内核技术专题
    上一篇:实用技巧 从硬盘安装Fedora-9-i386-DVD
    下一篇:实用技巧:解决Linux Telnet登录慢问题