(十三)洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】
2016-07-24 10:58
555 查看
为netfilter/iptables增添新功能模块:ipp2p 一个防火墙功能模块包含两部分:内核空间的ko模块和用户空间的so模块。如下:
而且文件的命令都非常有讲究。例如我们有个模块名叫AAA,那么内核中该模块的文件名一般为ipt_AAA.c和ipt_AAA.h;对应的用户空间模块叫libipt_AAA.c。今天我通过简单的向防火墙添加ipp2p扩展功能模块的例子,向大家展示一下相关操作和注意事项。
下载ipp2p源码:http://www.ipp2p.org/
最新版的ipp2p-0.8.2.tar.gz支持的内核2.6.17,iptables支持1.3.1。不过这个不影响,我们稍对其源文件进行修改就可以适应我们2.6.21平台了。修改后的源码从“
ipp2p-0.8.2.zip ”下载。
下载后对其解压,然后进到ipp2p目录下。接下来有两种方式来编译模块:
1、 直接在该目录下执行make。(备注:该目录下的Makefile我已经改过了)
执行完make后ipt_ipp2p.ko和libipt_ipp2p.so就都生成了。
chmod x
ipt_ipp2p.ko
2、 依次按下列步骤来操作:
仍然是在ipp2p-0.8.2解压目录里,我系统中如下:
然后将每个文件拷贝到对应的目录下:
在我机器上,内核源码在/usr/src/linux-2.6.21,iptables源码在/usr/src/iptables-1.4.0目录下。
接下来修改/usr/src/linux-2.6.21/net/ipv4/netfilter/ipt_ipp2p.c文件:
同样修改/usr/src/iptables-1.4.0/extensions/libipt_ipp2p.c文件如下:
接换到内核源码目录/usr/src/linux-2.6.21目录下
先备份net/ipv4/netfilter/目录下原来的Makefile文件,然后照着下面自己写个新的Makefile。如下所示:
ipt_ipp2p.ko就已经编译出来了,加上执行权限后将其拷贝到/lib/modules/2.6.21目录里。
最后编译用户空间的so模块,进入到/usr/src/iptables-1.4.0:
因为我系统中有两个版本的iptables 1.3.5和1.4.0,其中1.3.5的库文件位于/lib/iptables目录;1.4.0我将其放置在/lib/iptables-1.4.0/iptables目录。
最后我们来使用一下ipp2p模块,执行iptables -m ipp2p -h应该可以看到下列提示:
加载ipp2p内核模块: insmod
/lib/modules/2.6.21/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
总结,虽然方法一干净利落,犀利快捷,可是不利于我们理解netfilter/iptables代码的组织架构。方法二虽然麻烦,但学的知识更多些。大家各取所需吧。
网上还流传另外一种通过补丁包的方式来为iptables扩展功能模块,这里我简单提一下,因为那玩意儿更easy。一般是到ftp://ftp.netfilter.org/pub/patch-o-matic-ng/下载对应的补丁文件,在本地将其解压后进入补丁文件夹,一般执行:./runme ipp2p,然后根据提示输入一些配置路径就OK了。它会自动帮你完成文件的拷贝,Makefile的修改,很方便。感兴趣的朋友可以去试一下。
未完,待续…
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(6872) | 评论(3) | 转发(44) |
0
上一篇:(十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
下一篇:(十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
相关热门文章
linux 常见服务端口
xmanager 2.0 for linux配置
【ROOTFS搭建】busybox的httpd...
openwrt中luci学习笔记
什么是shell
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
wjlkoorey2582014-10-15 22:02:49
elviswoo:你好,我发现好像iptables里面有libipt_XXX.so和libxt_XXX.so,里面的数据结构好像也有一些差异,貌似在同一个版本里面有的既有libipt_XXX.c也有libxt_YYY.c,请问一下libipt_XXX.so和libxt_XXX.so是分别有何联系和区别?
很明显啊,libipt_XXX就是针对ip的XXX模块,而libxt_YYY可以理解是netfilter独立于协议簇的基础特性。如果往iptables较老版本回溯的话,你会发现1.3.5之前的版本里是没有libxt_YYY的东西的,原因是什么?因为内核态的Netfilter在不断演进,用户态的命令配置引擎也悄悄从iptables向nftables过度(PS:目前这个过度已经完成,想了解更多可以下nftables源码来分析)回复 | 举报
elviswoo2014-10-08 14:06:35
你好,我发现好像iptables里面有libipt_XXX.so和libxt_XXX.so,里面的数据结构好像也有一些差异,貌似在同一个版本里面有的既有libipt_XXX.c也有libxt_YYY.c,请问一下libipt_XXX.so和libxt_XXX.so是分别有何联系和区别?
回复 | 举报
2513008912013-03-12 14:07:24
牛x,讲得不错
回复 | 举报
评论热议
而且文件的命令都非常有讲究。例如我们有个模块名叫AAA,那么内核中该模块的文件名一般为ipt_AAA.c和ipt_AAA.h;对应的用户空间模块叫libipt_AAA.c。今天我通过简单的向防火墙添加ipp2p扩展功能模块的例子,向大家展示一下相关操作和注意事项。
下载ipp2p源码:http://www.ipp2p.org/
最新版的ipp2p-0.8.2.tar.gz支持的内核2.6.17,iptables支持1.3.1。不过这个不影响,我们稍对其源文件进行修改就可以适应我们2.6.21平台了。修改后的源码从“
ipp2p-0.8.2.zip ”下载。
下载后对其解压,然后进到ipp2p目录下。接下来有两种方式来编译模块:
1、 直接在该目录下执行make。(备注:该目录下的Makefile我已经改过了)
执行完make后ipt_ipp2p.ko和libipt_ipp2p.so就都生成了。
chmod x
ipt_ipp2p.ko
2、 依次按下列步骤来操作:
仍然是在ipp2p-0.8.2解压目录里,我系统中如下:
然后将每个文件拷贝到对应的目录下:
在我机器上,内核源码在/usr/src/linux-2.6.21,iptables源码在/usr/src/iptables-1.4.0目录下。
接下来修改/usr/src/linux-2.6.21/net/ipv4/netfilter/ipt_ipp2p.c文件:
同样修改/usr/src/iptables-1.4.0/extensions/libipt_ipp2p.c文件如下:
接换到内核源码目录/usr/src/linux-2.6.21目录下
先备份net/ipv4/netfilter/目录下原来的Makefile文件,然后照着下面自己写个新的Makefile。如下所示:
ipt_ipp2p.ko就已经编译出来了,加上执行权限后将其拷贝到/lib/modules/2.6.21目录里。
最后编译用户空间的so模块,进入到/usr/src/iptables-1.4.0:
因为我系统中有两个版本的iptables 1.3.5和1.4.0,其中1.3.5的库文件位于/lib/iptables目录;1.4.0我将其放置在/lib/iptables-1.4.0/iptables目录。
最后我们来使用一下ipp2p模块,执行iptables -m ipp2p -h应该可以看到下列提示:
加载ipp2p内核模块: insmod
/lib/modules/2.6.21/kernel/net/ipv4/netfilter/ipt_ipp2p.ko
总结,虽然方法一干净利落,犀利快捷,可是不利于我们理解netfilter/iptables代码的组织架构。方法二虽然麻烦,但学的知识更多些。大家各取所需吧。
网上还流传另外一种通过补丁包的方式来为iptables扩展功能模块,这里我简单提一下,因为那玩意儿更easy。一般是到ftp://ftp.netfilter.org/pub/patch-o-matic-ng/下载对应的补丁文件,在本地将其解压后进入补丁文件夹,一般执行:./runme ipp2p,然后根据提示输入一些配置路径就OK了。它会自动帮你完成文件的拷贝,Makefile的修改,很方便。感兴趣的朋友可以去试一下。
未完,待续…
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(6872) | 评论(3) | 转发(44) |
0
上一篇:(十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
下一篇:(十四)洞悉linux下的Netfilter&iptables:开发一个match模块【实战】
相关热门文章
linux 常见服务端口
xmanager 2.0 for linux配置
【ROOTFS搭建】busybox的httpd...
openwrt中luci学习笔记
什么是shell
linux dhcp peizhi roc
关于Unix文件的软链接
求教这个命令什么意思,我是新...
sed -e "/grep/d" 是什么意思...
谁能够帮我解决LINUX 2.6 10...
给主人留下些什么吧!~~
wjlkoorey2582014-10-15 22:02:49
elviswoo:你好,我发现好像iptables里面有libipt_XXX.so和libxt_XXX.so,里面的数据结构好像也有一些差异,貌似在同一个版本里面有的既有libipt_XXX.c也有libxt_YYY.c,请问一下libipt_XXX.so和libxt_XXX.so是分别有何联系和区别?
很明显啊,libipt_XXX就是针对ip的XXX模块,而libxt_YYY可以理解是netfilter独立于协议簇的基础特性。如果往iptables较老版本回溯的话,你会发现1.3.5之前的版本里是没有libxt_YYY的东西的,原因是什么?因为内核态的Netfilter在不断演进,用户态的命令配置引擎也悄悄从iptables向nftables过度(PS:目前这个过度已经完成,想了解更多可以下nftables源码来分析)回复 | 举报
elviswoo2014-10-08 14:06:35
你好,我发现好像iptables里面有libipt_XXX.so和libxt_XXX.so,里面的数据结构好像也有一些差异,貌似在同一个版本里面有的既有libipt_XXX.c也有libxt_YYY.c,请问一下libipt_XXX.so和libxt_XXX.so是分别有何联系和区别?
回复 | 举报
2513008912013-03-12 14:07:24
牛x,讲得不错
回复 | 举报
评论热议
相关文章推荐
- (十二)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【下】
- (十一)洞悉linux下的Netfilter&iptables:iptables命令行工具源码解析【上】
- (八)洞悉linux下的Netfilter&iptables:状态防火墙
- (七)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【下】
- (六)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【中】
- (五)洞悉linux下的Netfilter&iptables:如何理解连接跟踪机制?【上】
- (四)洞悉linux下的Netfilter&iptables:包过滤子系统iptable_filter
- (三)洞悉linux下的Netfilter&iptables:内核中的rule,match和target
- (二)洞悉linux下的Netfilter&iptables:内核中的ip_tables小觑
- (一)洞悉linux下的Netfilter&iptables:什么是Netfilter?
- [原创]通过SSH登录Linux服务器很慢,且服务器提示Access Denied时的解决方案
- [原创]CentOS6.0系统下安装配置openCV成功
- Linux下的5种IO模型
- Linux中各种设备及设备号
- Linux命令----磁盘管理
- linux学习随笔第二天
- Linux系统调用:进程的终止
- linux学习随笔第一天
- 实战3:CentOS 7,编译安装amp(php-fpm) + xcache(分别单独部署)
- 实战2:Centos 7上单台主机分别部署amp+xcache(php使用FastCGI机制)rpm方式