(十三)洞悉linux下的Netfilteramp;iptables:为防火墙增添功能模块【实战】
为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:为防火墙增添功能模块【实战】相关推荐
- (十)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之SNAT
源地址转换:SNAT SNAT 主要应用于下列场景: 这种情况下,我们只有一个公网地址A,而又有三台主机需要同时上网,这时就需要SNAT了.它的主要作用是将那些由私网发来的数据包skb的源地址改成防火 ...
- (九)洞悉linux下的Netfilteramp;iptables:网络地址转换原理之DNAT
网络地址转换:NAT Netfitler为NAT在内核中维护了一张名为nat的表,用来处理所有和地址映射相关的操作.诸如filter.nat.mangle抑或raw这些在用户空间所认为的"表 ...
- (十二)洞悉linux下的Netfilteramp;iptables:iptables命令行工具源码解析【下】
iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本.iptables-1.4.0在这方面做了很好的设计,主要是由 ...
- 洞悉linux下的Netfilteriptables
原网址:http://blog.chinaunix.net/uid-23069658-id-3160506.html (一)洞悉linux下的Netfilter&iptables:什么是Net ...
- 洞悉linux下的Netfilteriptables:什么是Netfilter?
转自:http://blog.chinaunix.net/uid-23069658-id-3160506.html (一)洞悉linux下的Netfilter&iptables:什么是Netf ...
- linux iptables 编译,Linux下编译安装iptables
Linux下如何编译安装iptables实例: 先卸载系统已经安装的iptables,卸载前需备份三个文档:iptables启动脚本,iptables-config配置文档,以及已经建立好的iptab ...
- 如何linux网页修改回80端口,linux下如何修改iptables开启80端口
linux下如何修改iptables开启80端口 最近在做本地服务器的环境,发现网站localhost能正常访问,用ip访问就访问不了,经常使用CentOS的朋友,可能会遇到和我一样的问题.开启了防火 ...
- 在linux下配置网桥透明模式防火墙
在linux下配置网桥透明模式防火墙 一.透明模式防火墙与透明代理的概念 一般而言,防火墙的两个网络接口应分属两个不同的网络,根据系统管理员定义的访问规则在两个接口之间转发数据包,或者拒绝 ...
- 配置linux下oracle sqlplus/rman等历史记录回调功能
配置linux下oracle sqlplus/rman等历史记录回调功能 ############################################################ # ...
最新文章
- does not declare uses-library android.test.runner
- Oracle 实例恢复时 前滚(roll forward) 后滚(roll back) 问题
- 剑指Offer(Java实现)扑克牌顺子
- django mysql搜索_Django--数据库查询操作
- tf.data.Dataset.from_tensor_slices() 详解
- 开源后5个月,Google的深度学习都有哪些改变?
- Serverless 解惑——函数计算如何访问 SQL Server 数据库
- springmvc 实例应用
- 上传图片之上传前判断文件格式与大小
- PHP经典算法 (转载)
- UTF-8, Unicode, GB2312格式串转换之C语言版
- elisa标准曲线怎么做_如何合理绘制ELISA标准曲线要点
- django中ForeignKey指向自身的方法
- 发布到服务器接口404_新版本永雾林渊周五来袭,404战队真的404了
- Java中try-catch-finally-return的执行顺序
- Foxit PDF Editor(福昕阅读器)中插入新的PDF空白页方法
- §6.5 分离性公理与子空间,(有限)积空间和商空间
- 不为环境所动就能成功——职场人士寓言(3)
- 双稳态电路的两个稳定状态是什么_单稳态电路与双稳态电路
- deepin/ubuntu 网易云解锁 UnblockNeteaseMusic
热门文章
- php银行转账,php+mysqli事务控制实现银行转账实例_PHP教程
- xp系统粘贴是灰色的_全方位升级 好听更好看!——乂度XP-2 Pro蓝牙独立解码耳放体验...
- python pandas库实现逻辑回归拟牛顿法求参数_python 牛顿法实现逻辑回归(Logistic Regression)...
- JZOJ 4919. 【NOIP2017提高组模拟12.10】神炎皇
- 字符串拼接数字 java_使用JAVA代码实现字符串的简单拼接
- ibm z系列服务器 cpu,低调发布:看IBM System Z系列大型机CPU
- ubuntu配置java_Ubuntu 16.04下Java环境安装与配置
- python 制作高斯mask_Python3 练手项目: 抓取豆瓣陈情令评论,并制作词云图
- 一直在构建工作空间_基于用户场景构建的建筑工程弱电设计工作设想
- orange软件_Orange和戴尔技术公司合作 联合测试和开发5G和商业模式