给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即可。 可以看出,一个头文件既要放入内核空间,也要放入内核空间。
iptables加载模块实践总结
最新推荐文章于 2024-01-30 20:37:25 发布