永发信息网

如何给iptables添加模块

答案:2  悬赏:0  手机版
解决时间 2021-03-11 01:01
如何给iptables添加模块
最佳答案
要实现netfilter(iptables)就要从两方面来着手:1)内核支持netfilter;2)用户层的iptables配置命令。
1、编译内核,支持netfilter
在宿主机上进入Linux内核目录,配置所需的内核模块:cd/usr/SRC/linuxmakemenuconfig
选中如下内核选项:
Generalsetup---
[*]Sysctlsupport(在ROMFS文件系统中/proc/syS/Net/ipv4/出现ip_forward)
Networkingoptions---[*]NetworkPACketfiltering(replaceSIPchains)IP:NetfilterConfiguration---(全部选择即可)
这样在内核中就选择支持了netfilter。接下来只需编译并生成内核映像文件并烧写到嵌入式系统即可。如果烧写后重起成功进入Linux,则说明新的支持netfiter的内核已经正常运行。(注意,这里的内核选项只是一些支持netfilter/iptables的选项。这里假设原有内核已支持嵌入式系统的相关硬件,并能在嵌入式平台上运行)。
2、编译生成iptables命令
iptables工具包可以免费从网上获得。下载iptables工具包后,进入下载目录,进行编译生成可执行文件,编译方法具体可以参考iptables目录下的INSTALL文件:
cd/root/iptables
makeKERNEL_DIR=/usr/src/linux(指定内核目录)
makeNO。SHARED_LIBS=1(静态链接编译生成可执行文件)
把生成的iptables可执行文件copy到ramdisk再下载到嵌入式系统中就可以运行。
全部回答
(一).处理内核源码. 1. [root@kindgeorge src]# cd /usr/src/linux-2.4 2. [root@kindgeorge linux-2.4]# vi makefile, version = 2 patchlevel = 4 sublevel = 20 extraversion = -8custom 将“extraversion = -8custom”改为“extraversion = -8” 即: version = 2 patchlevel = 4 sublevel = 20 extraversion = -8 为何要修改呢?因为不同版本的内容是不可以使用的,当不修改时,则变成这个版本(2.4.20-8custom)了,不同时是这样出错的: /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: kernel-module version mismatch (版本错误) /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o was compiled for kernel version 2.4.20-8custom while this kernel is version 2.4.20-8. /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o failed /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipt_iprange.o: insmod ipt_iprange failed 3. [root@kindgeorge linux-2.4]# make mrproper 4. [root@kindgeorge linux-2.4]# make oldconfig 'make oldconfig' - 采用以前的 .config 文件 (编译时十分有用) 技巧:在make menuconfig时,我们面对众多的选项常常不知道该如何选择,此时可以把安装时的配置文件copy到/usr/src/linux-2.4中:cp /boot/config-2.4.* /usr/src/linux-2.4/.config,再用make menuconfig编译,它会读取.config中原来的配置信息. (二).给netfilter打补丁 解开tar xjvf patch-o-matic-ng-20050331.tar.bz2 包后,进入该目录,就会发现有很多目录,其实每个目录对应一个模块. 我们可以这样来选择,根据不同贮仓库submitted|pending|base|extra,例如: kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme base . 或:kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme extra 执行后,会测试是否已经应用和提示你是否应用该模块,但这样会遍历所有模块,有很多是用不着的,并且可能和系统版本有冲突,如果不管三七二十一全部选择的话,一般都会在编译和使用时出错.所以推荐用cat /模块目录名/info 和cat /模块目录名/help 看过后,认为适合自己,才选择. 我是针对在上面看过后,有目的的一个一个的应用的,这样做: kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme string 执行后,会测试是否已经应用和提示你是否应用该模块,按"y"应用.然后继续下一个 kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme comment kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme connlimit kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme time kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme iprange kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme geoip kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme nth kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme ipp2p kernel_dir=/usr/src/linux-2.4 iptables_dir=/usr/src/iptables-1.3.1 ./runme quota 上面全部完成后, cd /usr/src/linux-2.4 make menuconfig,确认 prompt for development and/or incomplete code/drivers要选中 然后进入networking options 再进入ip:netfilter configuration,会看到增加很多模块,每个新增的后面都会出现"new",把其想要的选中为模块"m" 保存、退出,至此,给netfilter打补丁工作完成 (三).编译netfilter模块 1.这里只需要编译netfilter,不需要编译整个内核和模块.这里我只需要ipv4的,ipv6我还没用到,所以不管了 cd /usr/src/linux-2.4 make dep make modules subdirs=net/ipv4/netfilter 2.建立一个新目录备份原来模块,以防万一: mkdir /usr/src/netfilter cp /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/*.o /usr/src/netfilter/ 3.应用新的模块 cp -f /usr/src/linux-2.4/net/ipv4/netfilter/*.o /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ 4.更新你的modules.dep depmod -a 当出现这个时,可以不用理会,因为ipchains, ipfwadm模块都没用,也可以把出错的删除. depmod: *** unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipchains_core.o depmod: *** unresolved symbols in /lib/modules/2.4.20-8/kernel/net/ipv4/netfilter/ipfwadm_core.o (四).编译安装新的iptables 解压后有目录iptables-1.3.1 cd /usr/src/iptables-1.3.1 export kernel_dir=/usr/src/linux-2.4 export iptables_dir=/usr/src/iptables-1.3.1 make bindir=/sbin libdir=/lib mandir=/usr/share/man install
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
电动车充满电后过一个晚上不拔会坏么
柜台办理工行信用卡,大家帮忙看下多久可以拿
淘宝怎么维权啊
投简历自我描述怎么写?
玉皇禅院在哪里啊,我有事要去这个地方
滕州什么公交车走104公路至刘岗
水果沙拉用日语怎么写
行政复议期间,具体行政行为不应停止执行的情
有什么手机很像苹果6但又只要1000元
我老婆,小孩户口均没在农村,也没在农村生活,
顺水鱼馆八钢店在什么地方啊,我要过去处理事
垃圾放在密封的闭室内是否能否能产生生命?垃
我要买140平米的房子,房产过户费怎么算
王者荣耀S7段位继承是怎么样子的
美国私立初中一年学费多少
推荐资讯
农家碧院地址在哪,我要去那里办事
送杜少府之任蜀州的解释
olympus u2 zoom 80怎么设置照片上出现日期?
我要通过网络把一个文件(1.5G)传输给我的朋
17G的电影复制到32G的内存卡时出现了“目标驱
樟树和木棉是什么?
明珠建筑有限公司在哪里啊,我有事要去这个地
alura jenson porn movie download
沈阳广富塑钢门窗公司地址在哪,我要去那里办
水浒Q传狐仙技能问题
荣耀9奶奶灰和极夜黑哪个好啊?你们买的哪个
鸿禧渔具店地址有知道的么?有点事想过去
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?