iptables加模块2.6内核下不编译内核情况
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(文章来源 www.iocblog.net)
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(文章来源 www.iocblog.net)
Tag: iptables
文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。