大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。
Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺
IPSET是Linux内核中用来建立、维护和查看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=<<where-you-built-your-kernel>>
# make KERNEL_DIR=<<where-you-built-your-kernel>> install
# make KERNEL_DIR=<<where-you-built-your-kernel>> clean
# make KERNEL_DIR=<<where-you-built-your-kernel>> binaries
# make KERNEL_DIR=<<where-you-built-your-kernel>> binaries_install
# make KERNEL_DIR=<<where-you-built-your-kernel>> patch_kernel
到相应的内核源代码下运行make oldconfig,选中ipset选项
编译安装内核bzImage和内核模块:make;make instal;make modulel_install;安装完成以后,在/boot/目录下多了System.map-2.6.26.2、config-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 常见问题
(1)FATAL: Module ip_set not found.
ipset v2.3.3: Error from kernel: Protocol not available
这是ipset模块ip_set.ko没有正常加载,可能原因是内核中没有支持ipset。
(2)insmod: 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.ko,ipset可以使用;
但是该内核模块不能自动加载,需要在内核配置中的模块部分选中内核自动加载选项,然后可以正常加载;
使用ipset时会报有一些类型不能正常使用,查找原因,是因为安装时没有安装binary部分,需要按照README文件完整安装(包括binaries和patch_kernel),然后选中相关内核选项,重新编译内核。
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/189186.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...