· [Java论坛][安全论坛][数据库论坛][操作系统论坛]
· [专题] IBM Rational高峰论坛 Windows 7十大功能
· [专题] 史上就危险7月 微软 BizSpark 计划介绍
· [IT技术周刊][IT资源下载专区][病毒求助专区]
· [热点] 我也能做CTO_赛迪连载 赛迪七夕特别行动
· [热点] Chrome 4.0采用V8引擎 Java开发编程规范

Linux不编译2.6内核直接给iptables加模块

发布时间:2007.07.24 06:24     来源:赛迪网    作者:sixth

1、安装kernel源码

[root@jiecho]# yum install kernel-source

2、下载iptables-1.3.3.tar.bz2和patch-o-matic-ng-20050810.tar.bz2并解包,为了方便,我们都放在/usr/src下,并把kernel和iptables做符号链接.

  [root@jiecho]# cd /usr/src

  [root@jiecho]# wget ftp://ftp.be.netfilter.org/pub/netf...s-1.3.3.tar.bz2

  [root@jiecho]# wget ftp://ftp.be.netfilter.org/pub/netf...0050810.tar.bz2

  [root@jiecho]# tar -jxvf iptables-1.3.3.tar.bz2

  [root@jiecho]# tar -jxvf patch-o-matic-ng-20050810.tar.bz2

  [root@jiecho]# ln -s linux-2.6.5-1.358 linux

  [root@jiecho]# ln -s iptables-1.3.3 iptables

3、给netfilter打补丁,选择你要的模块,为了测试我就选择了ipp2p和time

  [root@jiecho]# cd /usr/src/linux

  [root@jiecho]# make mrproper

  [root@jiecho]# make menuconfig

什么不做,保存退出,然后把Makefile改一下

  [root@jiecho]# vi Makefile

把EXTRAVERSION = -1.358custom更改为EXTRAVERSION = -1.358

保持跟uname -a 的版本一致(可详细参考platinum兄弟的文章)

  [root@jiecho]# cd /usr/src/patch-o-matic-ng-20050810

  [root@jiecho]# ./runme ipp2p

  [root@jiecho]# ./runme time

因为事先做好了符号链接,等问你kernel和iptables的位置的时候直接回车就行,

提示你是否添加ipp2p和time模块是就y确定,至此,netfilter的补丁打完了,如果你需要别的模块可以根据需要加上.

4、编译kernel的modules

  [root@jiecho]# cd /usr/src/linux

  [root@jiecho]# make menuconfig

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

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

TIME match support

IPP2P match support

然后保存退出

5、编译安装模块

下面就是最重要的步骤了,因为我们的原则是节省时间,不重新编译内核,而只编译其中的模块,

这点2.4的内核跟2.6的内核有所不同,郁闷了我一整天,2.4内核的模块是以*.o形式的,而2.6内核是以*.ko形式的,

这有个改变的方法,参考:http://blog.chinaunix.net/article.p...742&blogId=2662

代码:

  [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文件.

  [root@jiecho]# make modules SUBDIRS=net/ipv4/netfilter

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

  [root@jiecho]# cp /usr/src/linux/net/ipv4/netfilter/ipt_ipp2p.ko /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/

  [root@jiecho]# cp /usr/src/linux/net/ipv4/netfilter/ipt_time.ko /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/

  [root@jiecho]# chmod +x /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/ipt_ipp2p.ko

  [root@jiecho]# chmod +x /lib/modules/2.6.5-1.358/kernel/net/ipv4/netfilter/ipt_time.ko

  [root@jiecho]# depmod -a

6、编译iptables

  [root@jiecho]# cd /usr/src/iptables

参照INSTALL文件我们进行编译安装

  [root@jiecho]# make KERNEL_DIR=/usr/src/linux

会有错误编译不过

/usr/src/linux/include/linux/config.h:6:2: [root@jiecho]#error including kernel header in userspace; use the glibc headers instead!

我google了半天也没有找到是什么原因,就自己动手解决

[root@jiecho]# vi /usr/src/linux/include/linux/config.h把下面的三行注释掉

  //#ifndef __KERNEL__

  //#error including kernel header in userspace; use the glibc headers instead!

  //#endif

然后重新编译安装

  make KERNEL_DIR=/usr/src/linux

  make install KERNEL_DIR=/usr/src/linux

完成安装以后测试一下

代码:

  [root@jiecho]# iptables -V

  [root@jiecho]# modprobe ipt_time

  [root@jiecho]# modprobe ipt_ipp2p

  [root@jiecho]# lsmod

  ipt_time        2432 0

  ipt_ipp2p        7552 0

  ipt_REJECT       4736 1

  ipt_state        1536 1

  ip_conntrack      24968 1 ipt_state

  iptable_filter     2048 1

  ip_tables       13440 5 ipt_time,ipt_ipp2p,ipt_REJECT,ipt_state,iptable_filter

  battery         6924 0

  ipv6         184288 10

  3c59x         30376 0

  binfmt_misc       7176 1

  nls_utf8        1536 4

  ntfs          81516 4

  dm_mod         33184 0

  uhci_hcd        23708 0

  button         4504 0

  asus_acpi        8472 0

  ac           3340 0

  ext3         102376 4

  jbd          40216 1 ext3

测试iptables

  [root@jiecho]# iptables -A FORWARD -m ipp2p --edk --kazaa --bit -j DROP

  [root@jiecho]# iptables -A INPUT -m time --timestart 8:00 --timestop 18:00 --days Mon,Tue,Wed,Thu,Fri

  [root@jiecho]# iptalbes -L

(责任编辑:凌云通)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Linux系统环境下邮件服务器软件的分析比较 (07-23) · Linux系统Iptables规则执行顺序详细讲解 (07-23)
· 新手学堂 Linux操作系统的内核编译步骤 (07-23) · Linux下Apache与Tomcat整合的简单方法 (07-23)
· 关于TOMCAT主目录与虚拟目录的配置介绍 (07-23) · Linux操作系统下两种自动启动Tomcat的方法 (07-23)
· 通过监控Linux运行进程来保证系统的安全 (07-20) · 详细讲解 Linux操作系统的进程查看方法 (07-20)
· 系统备份与恢复技巧 Ghost程序参数四则 (07-20) · Cisco网络设备搭建VPN服务器的全部过程 (07-20)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
资讯 通信 IT产品 IT技术 信息化
专题:扭亏为盈 联想09年Q2翻番
·专题:Tech·Ed 2009微..
·直播:2009互联网大会..
·迅雷搜狐"互搏" 谁动了..
专题:诺基亚危局已现 或重蹈摩托覆辙
·六股势力角逐4G标准 中..
·专题:联通iPhone并不贵..
·专题:排排坐开商店 三..
商务演示需求分析 多媒体会议室必备投影
·VMware在京隆重举行2009..
·专题:笔记本频道10月热..
·专题:学生机市场 惠普 ..
专题:Tech.Ed 2009微软技术大会
·专题:2009 SYBASE 亚太..
·专题:微软新一代桌面操..
·专题:2009年第3届CSDN..