洞悉linux下的Netfilter&iptables:为防火墙增添功能模块【实战】

10 篇文章 0 订阅

为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 xipt_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的修改,很方便。感兴趣的朋友可以去试一下。

    未完,待续…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值