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

未完,待续…

转载于:https://www.cnblogs.com/masterpanda/p/5700490.html

(十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】相关推荐

  1. (十)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之SNAT

    源地址转换:SNAT SNAT 主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了.它的主要作用是将那些由私网发来的数据包skb的源地址改成防火 ...

  2. (九)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之DNAT

    网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作.诸如filter.nat.mangle抑或raw这些在用户空间所认为的"表 ...

  3. (十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源码解析【下】

    iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本.iptables-1.4.0在这方面做了很好的设计,主要是由 ...

  4. 洞悉linux下的Netfilteriptables

    原网址:http://blog.chinaunix.net/uid-23069658-id-3160506.html (一)洞悉linux下的Netfilter&iptables:什么是Net ...

  5. 洞悉linux下的Netfilteriptables:什么是Netfilter?

    转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html (一)洞悉linux下的Netfilter&iptables:什么是Netf ...

  6. linux iptables 编译,Linux下编译安装iptables

    Linux下如何编译安装iptables实例: 先卸载系统已经安装的iptables,卸载前需备份三个文档:iptables启动脚本,iptables-config配置文档,以及已经建立好的iptab ...

  7. 如何linux网页修改回80端口,linux下如何修改iptables开启80端口

    linux下如何修改iptables开启80端口 最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问就访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了防火 ...

  8. 在linux下配置网桥透明模式防火墙

    在linux下配置网桥透明模式防火墙 一.透明模式防火墙与透明代理的概念       一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则在两个接口之间转发数据包,或者拒绝 ...

  9. 配置linux下oracle sqlplus/rman等历史记录回调功能

    配置linux下oracle sqlplus/rman等历史记录回调功能 ############################################################ # ...

最新文章

  1. does not declare uses-library android.test.runner
  2. Oracle 实例恢复时 前滚(roll forward) 后滚(roll back) 问题
  3. 剑指Offer(Java实现)扑克牌顺子
  4. django mysql搜索_Django--数据库查询操作
  5. tf.data.Dataset.from_tensor_slices() 详解
  6. 开源后5个月,Google的深度学习都有哪些改变?
  7. Serverless 解惑——函数计算如何访问 SQL Server 数据库
  8. springmvc 实例应用
  9. 上传图片之上传前判断文件格式与大小
  10. PHP经典算法 (转载)
  11. UTF-8, Unicode, GB2312格式串转换之C语言版
  12. elisa标准曲线怎么做_如何合理绘制ELISA标准曲线要点
  13. django中ForeignKey指向自身的方法
  14. 发布到服务器接口404_新版本永雾林渊周五来袭,404战队真的404了
  15. Java中try-catch-finally-return的执行顺序
  16. Foxit PDF Editor(福昕阅读器)中插入新的PDF空白页方法
  17. §6.5 分离性公理与子空间,(有限)积空间和商空间
  18. 不为环境所动就能成功——职场人士寓言(3)
  19. 双稳态电路的两个稳定状态是什么_单稳态电路与双稳态电路
  20. deepin/ubuntu 网易云解锁 UnblockNeteaseMusic

热门文章

  1. php银行转账,php+mysqli事务控制实现银行转账实例_PHP教程
  2. xp系统粘贴是灰色的_全方位升级 好听更好看!——乂度XP-2 Pro蓝牙独立解码耳放体验...
  3. python pandas库实现逻辑回归拟牛顿法求参数_python 牛顿法实现逻辑回归(Logistic Regression)...
  4. JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇
  5. 字符串拼接数字 java_使用JAVA代码实现字符串的简单拼接
  6. ibm z系列服务器 cpu,低调发布:看IBM System Z系列大型机CPU
  7. ubuntu配置java_Ubuntu 16.04下Java环境安装与配置
  8. python 制作高斯mask_Python3 练手项目: 抓取豆瓣陈情令评论,并制作词云图
  9. 一直在构建工作空间_基于用户场景构建的建筑工程弱电设计工作设想
  10. orange软件_Orange和戴尔技术公司合作 联合测试和开发5G和商业模式