分类: LINUX
2010-03-17 23:35:01
准备软件:iptables-1.3.8.tar.bz2 linux-2.6.18.8.tar.bz2 patch-o-matic-ng-20090208.tar.bz2
全部解压缩在/usr/src/目录下。
修改makefile头与OS上的内核相同
先用uname –r查询一下:
[root@mail linux-2.6.18.i686]# uname -r
2.6.18-8.el5
到
linux-2.6.18.8的目录下面执行下面的内容:
# vi Makefile
修改 EXTRAVERSION = -prep
该成EXTRAVERSION = -8.el5
设 置环境patch-o-matic-ng-20090208需要用到的环境变量
export KERNEL_DIR=/usr/src/linux-2.6.18.8/
export KERNEL_SRC=/usr/src/linux-2.6.18.8/
export IPTABLES_SRC=/usr/src/iptables-1.3.8/
export IPTABLES_DIR=/usr/src/iptables-1.3.8/
为内核下载补丁,打补丁
cd /usr/src/patch-o-matic-ng-20090208
./runme --download
./runme connlimit
make menuconfig
在内核配置界面选中
Networking --->
Networking options --->
Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
编译内核模块
make modules_prepare
修改net/ipv4/netfilter/Makefile,只编译connlimit模块,首先备份net/ipv4/netfilter /Makefile文件
mv net/ipv4/netfilter/Makefile net/ipv4/netfilter/Makefile.bak
新建 net/ipv4/netfilter/Makefile文件,并添加如下内容
vi net/ipv4/netfilter/Makefile
obj-m := ipt_connlimit.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) M=$(PWD) modules
最后编译内核模块
make M=net/ipv4/netfilter/
将编译好的ipt_connlimit.ko内核模块复制到当前内核模块目录下,并加载内核模块
cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/
为内核模块添加可执行权限
chmod +x /lib/modules/2.6.18-8.el5/kernel/net/ipv4/netfilter/ipt_connlimit.ko
depmod -a
modprobe ipt_connlimit
运行lsmod | grep x_tables出现如下提示,说明内核模块加载成功
x_tables 50377 5 ipt_connlimit,ipt_REJECT,xt_state,xt_tcpudp,ip_tables
测试ipt_connlimit模块
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 2 -j DROP
开机自动加载模块
vi /etc/sysconfig/modules/my.modules
modprobe ipt_time
modprobe ipt_layer7
modprobe ipt_connlimit
modprobe ipt_ipp2p
chmod 755 /etc/sysconfig/modules/my.modules