iptables加载模块实践总结

iptables加载模块的方法:

1,首先,要编写出用户态的模块 .so, 这个模块把它放入iptables工具的lib中,
一般这个位置在 /lib/xtables中,如果是手动编译而且没有更改路径的化,那么一般是在
/usr/local/lib/xtables中。
当然,当你手动安装iptables的时候,最好是能够把要生成.so的的文件放入到iptalbes的源码包的extentsion目录下面,这样,在编译iptalbes的时候就会申城.so,在安装的时候,这些.so文件就会自动
放入相应的lib库。

2,上面的只是和用户态打交道,只是输出一些信息,而具体的功能是在内核太实现的,所以还要编写支持用户太的内核模块,.ko
这个一般就是普通的编译.ko就可以了,然后加载到内核中区即可。


注意:在编译生成.so文件时候,若出现有一些警告,这可能导致编译后的.so不能用,所以,最好是能够
注意书写,不要出现警告。



3,这里有意思的是,头文件的位置,在一般情况下,加载一个ipt的模块
需要三个文件,iptxxx.h iptxxx.c libiptxxx.c
其中,libiptxxx.c用来生成.so
其方法是:把libiptxxx.c放入extension。然后,在iptables的源码
目录下面make
这时候,可能会出现错误,原因是没有找到在libiptxxx.c中引用的头文件,
那么这个头文件也就是iptxxx.h这个,它要放入哪里呢?
是放入用户空间的头文件目录,即/usr/include下面,这个后面具体的路径可以自己定义

然后是iptxxx.c用来生成.ko文件,当然,这个放在哪里生成都没有关系,
因为它是内核中的,和iptables的源码没有关系,我们可以随便找个地方
,然后写上makefile文件,make就可以了。
当然,在iptxxx.c中也用到了头文件,那么,需要引入,但是这个头文件要放入到
内核的头文件目录,即/usr/src/kernel/$(shell uname -r)/include/
下面,后面的路径可以随意定。
然后make后可以生成.ko,加载insmod即可。

可以看出,一个头文件既要放入内核空间,也要放入内核空间。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值