免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 13143 | 回复: 16

[网络子系统] linux-2.6.35.6内核netfilter框架 [复制链接]

论坛徽章:
0
发表于 2012-05-30 11:31 |显示全部楼层
本帖最后由 pywj777 于 2013-06-04 14:56 编辑

基于netfilter框架所开发的功能,请参考我的另外两个帖子nf_conntrackxtables

数据结构图如下:
netfilter1.jpg

  • 这个二维数组的每一项代表了一个钩子被调用的点,NF_PROTO代表协议栈,NF_HOOK代表协议栈中某个路径点。
  • 所有模块都可以通过nf_register_hook ()函数将一个钩子项挂入想被调用点的链表中(通过protocol和hook指定一个点)。这样,该钩子项就能够处理指定protocol中和指定hook点流经的所有数据包。
  • netfilter在不同协议栈的不同点上(例如arp_rcv()、ip_rcv()、ip6_rcv()、br_forward()等)放置NF_HOOK()函数,当数据包经过了某个协议栈(NF_PROTO)的某个点(NF_HOOK)时,该协议栈会通过NF_HOOK()函数调用对应钩子链表(nf_hooks[NF_PROTO][NF_HOOK])中注册的每一个钩子项来处理该数据包。

评分

参与人数 1可用积分 +10 收起 理由
Godbach + 10 很给力!

查看全部评分

论坛徽章:
0
发表于 2012-05-30 11:33 |显示全部楼层
本帖最后由 pywj777 于 2012-05-30 11:35 编辑

netfilter为每个钩子函数提供返回值

NF_DROP(0)        数据包被丢弃。即不被下一个钩子函数处理,同时也不再被协议栈处理,并释放掉该数据包。协议栈将处理下一个数据包。
NF_ACCEPT(1)        数据包允许通过。即交给下一个钩子函数处理、或交给协议栈继续处理(okfn())。
NF_STOLEN(2)        数据包被停止处理。即不被下一个钩子函数处理,同时也不被协议栈处理,但也不释放数据包。协议栈将处理下一个数据包。
NF_QUEUE(3)        将数据包交给nf_queue子系统处理。即不被下一个钩子函数处理,也不被协议栈处理,也不释放数据包。协议栈将处理下一个数据包。
NF_REPEAT(4)        数据包将被该返回值的钩子函数再次处理一遍。
NF_STOP(5)        数据包停止被该HOOK点的后续钩子函数处理,并交给协议栈继续处理(okfn())

论坛徽章:
0
发表于 2012-05-30 11:44 |显示全部楼层
netfilter相关功能在内核中文件分布图

netfilter2.jpg

论坛徽章:
6
金牛座
日期:2013-10-08 10:19:10技术图书徽章
日期:2013-10-14 16:24:09CU十二周年纪念徽章
日期:2013-10-24 15:41:34狮子座
日期:2013-11-24 19:26:19未羊
日期:2014-01-23 15:50:002015年亚洲杯之阿联酋
日期:2015-05-09 14:36:15
发表于 2012-05-30 13:33 |显示全部楼层
回复 1# pywj777
多谢分享!
其实netfilter部分的改动除了把参数封装之外,最近这几个内核版本(2.6.24---》3.0.8)的改动都很小。

   

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2012-06-05 12:47 |显示全部楼层
回复 1# pywj777

感谢 pywj777 兄分享啊,最近 pywj777 兄干货很多啊,再次感谢!

   

论坛徽章:
0
发表于 2013-05-30 00:01 |显示全部楼层
描述得很精彩。

论坛徽章:
36
IT运维版块每日发帖之星
日期:2016-04-10 06:20:00IT运维版块每日发帖之星
日期:2016-04-16 06:20:0015-16赛季CBA联赛之广东
日期:2016-04-16 19:59:32IT运维版块每日发帖之星
日期:2016-04-18 06:20:00IT运维版块每日发帖之星
日期:2016-04-19 06:20:00每日论坛发贴之星
日期:2016-04-19 06:20:00IT运维版块每日发帖之星
日期:2016-04-25 06:20:00IT运维版块每日发帖之星
日期:2016-05-06 06:20:00IT运维版块每日发帖之星
日期:2016-05-08 06:20:00IT运维版块每日发帖之星
日期:2016-05-13 06:20:00IT运维版块每日发帖之星
日期:2016-05-28 06:20:00每日论坛发贴之星
日期:2016-05-28 06:20:00
发表于 2013-05-30 14:00 |显示全部楼层
回复 1# pywj777
乍一看还以为是今天发的贴呢。细看是去年的今天发的。

pywj777 对 netfilter&iptables 都研究的非常透彻。赞一下



   

论坛徽章:
10
戌狗
日期:2013-10-17 09:43:0215-16赛季CBA联赛之广东
日期:2018-02-05 11:22:1215-16赛季CBA联赛之八一
日期:2016-07-04 12:26:1815-16赛季CBA联赛之青岛
日期:2016-06-08 11:15:4115-16赛季CBA联赛之辽宁
日期:2016-04-05 10:10:1415-16赛季CBA联赛之辽宁
日期:2016-03-11 11:11:48酉鸡
日期:2014-12-18 14:35:48狮子座
日期:2014-02-20 10:14:07寅虎
日期:2013-12-02 13:48:2915-16赛季CBA联赛之广夏
日期:2018-03-21 08:51:10
发表于 2013-05-30 14:11 |显示全部楼层
Godbach 发表于 2013-05-30 14:00
回复 1# pywj777
乍一看还以为是今天发的贴呢。细看是去年的今天发的。

Haha, me too.

论坛徽章:
0
发表于 2013-05-30 20:35 |显示全部楼层
回复 7# Godbach

时间真快,专业就一年过去了
   

论坛徽章:
0
发表于 2013-05-30 20:36 |显示全部楼层
回复 8# daniel_11

都过去一年了,你是怎么翻出来的
   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

基于案例的 SQL 优化实战训练营

讲师:中电福富特级专家梁敬彬,参与本次课程培训,你将收获:
1. 能编写出较为高效的 SQL;
2. 能解决70%以上的数据库常见优化问题;
3. 能得到老师提供的高效的相关工具和解决方案;
4. 能举一反三,收获不仅仅是 SQL 优化。
现在购票享受8.8折优惠!
----------------------------------------
优惠时间:2019年3月20日前

大会官网>>
  

北京盛拓优讯信息技术有限公司. 版权所有 16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122
中国互联网协会会员  联系我们:huangweiwei@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP