iptables添加connlimit模块(Xen环境下)
时间:2010-07-23 来源:yayasusu
1、 首先找到下载的xen内核源码
/srv/xen/linux-2.6.18-xen-3.3.0
2、 下载parch包(并不需要最新的)
cd /srv/xen/
wget http://ftp.netfilter.org/pub/patch-o-matic-ng/snapshot/patch-o-matic-ng-20090909.tar.bz2
解压:
tar jxvf patch-o-matic-ng-20090909.tar.bz2
下载iptables-1.3.5
wget http://www.netfilter.org/projects/iptables/files/iptables-1.3.5.tar.bz2
解压:tar jxvf iptables-1.3.5.tar.bz2
3、 设置环境变量,下载补丁
[root@localhost patch-o-matic-ng-20090909]# export KERNEL_DIR=/srv/xen/linux-2.6.18-xen-3.3.0/
[root@localhost patch-o-matic-ng-20090909]# export IPTABLES_DIR=/srv/xen/iptables-1.3.5/
[root@localhost patch-o-matic-ng-20090909]# export KERNEL_SRC=/srv/xen/ linux-2.6.18-xen-3.3.0/
[root@localhost patch-o-matic-ng-20090909]# export IPTABLES_SRC=/srv/xen/iptables-1.3.5/
[root@localhost patch-o-matic-ng-20090909]# ./runme --download
[root@localhost patch-o-matic-ng-20090909]# ./runme connlimit
4、 开始编译模块
[root@localhost linux-2.6.18-xen-3.3.0]# make menuconfig
Networking --->
Networking options --->
Network packet filtering (replaces ipchains) --->
IP: Netfilter Configuration --->
<M> Layer 7 match support (EXPERIMENTAL)
<M> TIME match support
<M> Connections/IP limit match support
[root@localhost linux-2.6.18-xen-3.3.0]#make modules_prepare
备份原来的Makefile,里面包含了原始的编译信息,直接编译会无法通过
[root@localhost linux-2.6.18-xen-3.3.0]# mv net/ipv4/netfilter/Makefile net/ipv4/netfilter/Makefile.bak
创建新的Makefile
[root@localhost linux-2.6.18-xen-3.3.0]# vim net/ipv4/netfilter/Makefile
1 obj-m :=ipt_connlimit.o
2
3 KDIR :=/lib/modules/$(shell uname -r)/build
4 PWD :=$(shell pwd)
5
6 default:
7 $(MAKE) -C $(KDIR) M=$(PWD) modules
5、 编译该模块
[root@localhost linux-2.6.18-xen-3.3.0]# make M=net/ipv4/netfilter/
输出以下信息:
LD net/ipv4/netfilter/built-in.o
CC [M] net/ipv4/netfilter/ipt_connlimit.o
Building modules, stage 2.
MODPOST
CC net/ipv4/netfilter/ipt_connlimit.mod.o
LD [M] net/ipv4/netfilter/ipt_connlimit.ko
6、 将生成的ko模块copy到目标地址,并设置权限
[root@localhost linux-2.6.18-xen-3.3.0]#cp net/ipv4/netfilter/ipt_connlimit.ko /lib/modules/2.6.18.8-xen /kernel/net/ipv4/netfilter/
[root@localhost linux-2.6.18-xen-3.3.0]#chmod 744 /lib/modules/ 2.6.18.8-xen /kernel/net/ipv4/netfilter/ipt_connlimit.ko
7、 测试并应用新模块
用depmod –a 测试connlimit模块是否兼容
# depmod –a
加载connlimit模块
#modprobe ipt_connlimit
# lsmod |grep ip
ipt_connlimit 7680 0(会有这行出现)
OK,模块已经可以正常使用了
例:iptables -A INPUT -i eth0 -p tcp --sport 80 --syn -m connlimit --connlimit-above 15 -j DROP