全部博文(16)
2012年(16)
发布时间:2012-12-16 16:12:12
从用户空间来操作内核中Netfilter框架里自定义的HOOK函数 本文承上一篇博客。主要是和大家探讨一下如何从用户空间操作我已经注册到Netfilter中的自定义hook函数。有些童鞋可能就纳闷,难道iptables不能操作到么?如果我们需要让iptables操作我们在Netfilter框架中做过的扩展,那么最有效最直接的办法就是开发一个match或者target。但我们现在注册的这个hook很明显和iptables命令行工具没多大关系,你要让iptables来管理这不是强人所难么。当然如......【阅读全文】
发布时间:2012-12-16 16:12:03
向Netfilter中注册自己的hook函数 数据包在协议栈中传递时会经过不同的HOOK点,而每个HOOK点上又被Netfilter预先注册了一系列hook回调函数,当每个清纯的数据包到达这些点后会被这些可恶hook函数轮番调戏一番。有时候我们就在想,只让系统自带的这些恶棍来快活,我自己能不能也make一个hook出来和它们同流合污呢?答案是肯定的。 我们来回顾一下目前系统中已经注册了的hook函数可分为以下几类: &nbs......【阅读全文】
发布时间:2012-12-16 16:11:58
自己开发一个match模块 今天我们来写一个很简单的match来和大家分享如何为iptables开发扩展功能模块。这个模块是根据IP报文中有效载荷字段的长度来对其进行匹配,支持固定包大小,也支持一个区间范围的的数据包,在用户空间的用法是: iptables -A FORWARD -m pktsize --size XX[:YY] -j DROP 这条规则在FORWARD链......【阅读全文】
发布时间:2012-12-16 16:11:54
为netfilter/iptables增添新功能模块:ipp2p 一个防火墙功能模块包含两部分:内核空间的ko模块和用户空间的so模块。如下: 而且文件的命令都非常有讲究。例如我们有个模块名叫AAA,那么内核中该模块的文件名一般为ipt_AAA.c和ipt_AAA.h;对应的用户空间模块叫libipt_AAA.c。今天我通过简单的向防火墙添加ipp2p扩展功能模块的例子,向大家展示一下相关操作和注意事项。 下载ipp2p源码:http://www.ipp2p.org/ &nbs......【阅读全文】
发布时间:2012-12-16 16:11:50
iptables用户空间和内核空间的交互 iptables目前已经支持IPv4和IPv6两个版本了,因此它在实现上也需要同时兼容这两个版本。iptables-1.4.0在这方面做了很好的设计,主要是由libiptc库来实现。libiptc是iptables control library的简称,是Netfilter的一个编程接口,通常被用来显示、操作(查询、修改、添加和删除)netfilter的规则和策略等。使用libipq库和ip_queue模块,几乎可以实现任何在内核中所实现的功能。 libiptc库位于iptables源......【阅读全文】