Debian-5.0.3下安装IPSET

IPSETLinux内核中用来建立、维护和查看IP集合的工具,常常与iptables配合使用。在Debian-5.0.3下安装ipset v2.3.3,遇到了一些问题,最终安装成功。将安装过程及遇到的问题和大家分享。

 

1 安装环境

Debian-5.0.3,安装过程中选择内核为2.6.26-2-486

 

2 Debian的包管理器aptitude安装ipset

安装完成以后,用ipset -L命令测试,报:
FATAL: Module ip_set not found.
ipset v2.3.3: Error from kernel: Protocol not available
好像是却内核模块支持,查看/lib/modules/2.6.26-2-486/目录,没有ip_set.ko模块,决定用源代码编译ipset,因为曾经用源代码编译成功过。
不知道有没有其他的解决办法?

 

3 源码编译ipset

Debian网站http://archive.debian.net下载ipset-2.3.3源代码,解压以后查看README文件,可以对编译步骤有一个大致的了解。
   
需要先编译内核(version >= 2.6.16 or 2.4.36.x)。下载的内核源代码为2.6.36.2,编译内核。然后按照README文件中的说明编译:

 

# make KERNEL_DIR=<>
# make KERNEL_DIR=<> install
# make KERNEL_DIR=<> clean

# make KERNEL_DIR=<> binaries
# make KERNEL_DIR=<> binaries_install
# make KERNEL_DIR=<> patch_kernel

 

到相应的内核源代码下运行make oldconfig,选中ipset选项
编译安装内核bzImage和内核模块:makemake instalmake modulel_install;安装完成以后,在/boot/目录下多了System.map-2.6.26.2config-2.6.26.2 vmlinuz-2.6.26.2三个文件,但是缺少initrd.img-2.6.26.2,需要手动生成(否则启动时不能正常加载文件系统):
mkinitramfs 2.6.26.2 -o /boot/initrd.img-2.6.26.2
修改/boot/grub/menu.lst文件,添加新编译的内核。重新启动,用ipset -L测试,可以正常使用。

 

4 常见问题

 

1FATAL: Module ip_set not found.
       ipset v2.3.3: Error from kernel: Protocol not available
这是ipset模块ip_set.ko没有正常加载,可能原因是内核中没有支持ipset

 

2insmod: error inserting 'ip_set.ko':Invalid module format
这是dmesg报的问题,原因是ipset模块的版本和内核版本不严格匹配。在其它内核模块加载时也会出现同样的问题。

 

3)前一次在LFS下编译遇到的问题
按照说明编译安装后不能使用,报错:ipset v4.1: Couldn’t vertify kernel modele version!
之后在编译内核make modules_install时,出现

WARNING: /lib/modules/2.6.22.5/extra/ipt_set.ko needs unknown symbol xt_register_match;
WARNING: /lib/modules/2.6.22.5/extra/ipt_set.ko needs unknown symbol xt_unregister_match; WARNING: /lib/modules/2.6.22.5/extra/ipt_set.ko needs unknown symbol xt_register_target;
WARNING: /lib/modules/2.6.22.5/extra/ipt_set.ko needs unknown symbol xt_unregister_target;
发现/etc/modprob.conf文件不存在;用generate-modprobe.conf产生该文件,不能正常产生,告Cannot find old version of modprob. Giving up.
打开ipset编译目录的kernel,用insmod插入ip_set.koipset可以使用;

但是该内核模块不能自动加载,需要在内核配置中的模块部分选中内核自动加载选项,然后可以正常加载;
使用ipset时会报有一些类型不能正常使用,查找原因,是因为安装时没有安装binary部分,需要按照README文件完整安装(包括binariespatch_kernel),然后选中相关内核选项,重新编译内核。

你可能感兴趣的:(Linux)