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

未完,待续…

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

  1. 洞悉linux下的Netfilteriptables

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

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

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

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

    为netfilter/iptables增添新功能模块:ipp2p 一个防火墙功能模块包含两部分:内核空间的ko模块和用户空间的so模块.如下: 而且文件的命令都非常有讲究.例如我们有个模块名叫AAA, ...

  4. linux进行端口跟踪,(五)洞悉linux下的Netfilteriptables:如何理解连接跟踪机制?【上】...

    其实PRE_ROUTING和LOCAL_OUT点可以看作是整个netfilter的入口,而POST_ROUTING和LOCAL_IN可以看作是其出口.在只考虑连接跟踪的情况下,一个数据包无外乎有以下三 ...

  5. linux内核snat分析,(十)洞悉linux下的Netfilteriptables:网络地址转换原理之SNAT

    gaopeiliang:怎么搞的,关键的数据怎么丢了那,,出现的问题是 从ppp0上走出的数据,正确的SNAT出去了,同时也得到了响应,但是数据却没有转发到eth1上,看来看去好像是回来的数据包没有被 ...

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

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

  7. Linux下的tar归档及解压缩功能详解

    Linux下的tar归档及解压缩功能详解 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.Linux下解压缩工具 二.gzip工具的使用方法 三.其他解压缩工具 一.L ...

  8. Linux下压缩工具gzip和归档工具tar及其实战shell应用

    Linux下压缩工具gzip和归档工具tar及其实战shell应用       第一章:gzip的使用技巧 gzip [option]... file... -d: 解压缩,相当于gunzip; -# ...

  9. php自动下载 linux,Linux下软件、PHP和Perl的模块等都实现了自动安装

    Linux下软件.PHP和Perl的模块等都实现了自动安装,真的很方便,本文简单介绍一下. linux下可以使用yum工具,Redhat下自动带有: yum list php*   //可以查看php ...

  10. Linux下nginx编译安装,重新添加模块

    Linux下nginx编译安装,重新添加模块 前言:编译完成后的Nginx,当我们需要新的功能模块时,要怎么重新添加呢?可以按照下面的方法试试. 1.查看nginx版本以及编译安装模块 [root@# ...

最新文章

  1. Rera1N环境Linux,降级工具ReRa1n发布,降级真的来了?
  2. 自动定位失败_端到端定位5G SA接入问题
  3. CC++ Calling Convention
  4. Android之底部Dialog里面放EditText点击布局顶上去效果
  5. C++ 泛型编程 实现红黑树RBTree
  6. python-3.8.0 新特性之赋值表达式
  7. MSP430F5529 DriverLib 库函数学习笔记(一)时钟配置和闪烁LED
  8. 再分享一个竞品分析报告
  9. Guava学习笔记:EventBus(转)
  10. treeview找到节点并展开_我们从100个经典韩剧中,找到8个「神套路」,这样写抖音剧本个个都是爆款!...
  11. 学习小感之浅谈学习兴趣之路
  12. session跨域共享解决方案
  13. 用c语言对文件读取,并使用链表,和顺序表进行存储,操作
  14. 进化论是个假说,目前解释生物现象最合理
  15. 中断python快捷键_python的快捷键
  16. CG佬的20年:行走于行业的过去与未来
  17. C++模板技术实现 泛型编程,通俗易懂的泛型编程教程//。
  18. 迭代最近邻ICP算法
  19. Windows“自动修复”无法修复
  20. echarts地图/中国

热门文章

  1. 02-2--数据库MySQL:DDL(Data Definition Language:数据库定义语言)操作数据库中的表(二)...
  2. (qsf文件 、 tcl文件 和 csv(txt)文件的区别) FPGA管脚分配文件保存、导入导出方法...
  3. [原]Linux 命令行浏览器
  4. freebsd安装linux网卡驱动,FreeBSD安装后的网卡配置
  5. 利用yarn多队列实现hadoop资源隔离
  6. Visual Studio 2017 15.6预览版最新进展
  7. kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装Windows虚拟机)-(4)
  8. 虚拟Linux系统使用Windows系统oracle数据库
  9. 关于Alipay支付宝接口(Java版)下
  10. 更新CocoaPods碰到的问题及知识点