Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8024604
  • 博文数量: 159
  • 博客积分: 10424
  • 博客等级: 少将
  • 技术积分: 14615
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-14 12:45
个人简介

啦啦啦~~~

文章分类
文章存档

2015年(5)

2014年(1)

2013年(5)

2012年(10)

2011年(116)

2010年(22)

分类: LINUX

2011-12-19 21:39:29

作者:gfree.wind@gmail.com
博客:blog.focus-linux.net   linuxfocus.blog.chinaunix.net
 
 
本文的copyleft归gfree.wind@gmail.com所有,使用GPL发布,可以自由拷贝,转载。但转载请保持文档的完整性,注明原作者及原链接,严禁用于任何商业用途。
======================================================================================================
在前一篇文章中,学习了一个hook例子,ipv4_conntrack_defrag。并且看到前面遗留的一个netfilter规则的判断结果NF_STOLEN。

今天就看一下这个NF_STOLEN是什么意思。在前面的博文中,
  1.     /* Gather fragments. */
  2.     if (ip_hdr(skb)->frag_off & htons(IP_MF | IP_OFFSET)) {
  3.         enum ip_defrag_users user = nf_ct_defrag_user(hooknum, skb);
  4.         if (nf_ct_ipv4_gather_frags(skb, user))
  5.             return NF_STOLEN;
  6.     }
当nf_ct_ipv4_gather_frags返回不为0时,该规则的返回结果为NF_STOLEN。
跟踪nf_ct_ipv4_gather_frags->ip_defrag->ip_frag_queue->ip_frag_reasm。

得到结果,只有当IP分片重组成功时,nf_ct_ipv4_gather_frags才会返回为0。也就是说,当IP分片重组不成功,即IP分片被kernel分片模块缓存时,该函数返回为NF_STOLEN。

而当hook函数返回NF_STOLEN时,根据前面的博文,nf_iterate就会直接返回这个NF_STOLEN。

这样就明确了NF_STOLEN的含义:如字面意思所示,它意味着netfilter“偷”走了这个skb,原调用不应继续处理该skb,而由netfilter负责这个skb的维护。


到此,对netfilter的基本架构应该比较清楚了——我指的是我自己。这几篇文章也主要是学习了,我自己比较感兴趣的地方。如果还有朋友能提出其它有意思的地方,我会继续学习的。


谢谢。
阅读(4667) | 评论(5) | 转发(5) |
给主人留下些什么吧!~~

zhouunix2012-07-12 10:51:55

博主你好,我最近在做一个作业,要用netfilter把一个数据流的tcp包截下来,然后按照包头的某个标志进行排序(这个标志由发送端完成)。这两天在看netfilter,发现netfilter截获tcp包还是很方便的,但是在截获的同时进行包排序,我有些困惑,比如排序好的包你怎么发送给tcp协议栈?怎么创建接收缓冲区和接收窗口?我是linux新手,请博主赐教

GFree_Wind2012-03-17 21:45:06

coconut-zj: 假如要写一个自己的包过滤模块 也可以在hook上注册一个函数然后写再函数里面吧?
如果可以这样 那应该怎么修改iptables来使得它支持自己写的这个过滤模块呢?
是.....
从netfilter本身的架构上,肯定可以支持你的需求。

1. 你需要修改kernel本身的netfilter那块
2. 需要修改netfilter的命令行

coconut-zj2012-03-17 15:32:27

假如要写一个自己的包过滤模块 也可以在hook上注册一个函数然后写再函数里面吧?
如果可以这样 那应该怎么修改iptables来使得它支持自己写的这个过滤模块呢?
是否能够像写 iptables -A -f filter -s www.xxx.com -j ACCEPT这样写一个这样的命令就可以打开自己定义的这个模块功能呢?
楼主懂的比我多,能否给出一些意见或资料参考一下?

GFree_Wind2012-01-08 21:30:45

zhangyd6: netfilter东西还蛮多的,表面看只是hook函数的注册和执行,其实夹杂了防火墙的应用和NAT等在里面了,可以分析一下那些东西。呵呵.....
可以。这个观点不错。我试试看。

zhangyd62012-01-08 10:59:17

netfilter东西还蛮多的,表面看只是hook函数的注册和执行,其实夹杂了防火墙的应用和NAT等在里面了,可以分析一下那些东西。呵呵