免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach

【iptables交流贴】iptables执行的流程分析 [复制链接]

论坛徽章:
0
发表于 2008-08-05 14:29 |显示全部楼层
不错不错,我也刚看完九贱的iptables源码,理解不透彻,正好可以好好学习一下嘿嘿。

论坛徽章:
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
发表于 2008-08-05 14:44 |显示全部楼层
原帖由 jaycu 于 2008-8-5 14:29 发表
不错不错,我也刚看完九贱的iptables源码,理解不透彻,正好可以好好学习一下嘿嘿。



呵呵,我也是看的时候总觉得有点模糊。最后就干脆从执行一条命令来分析iptables的整个代码。有什么问题,咱们可以一起交流。

论坛徽章:
8
综合交流区版块每周发帖之星
日期:2015-12-02 15:03:53数据库技术版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-10-02 06:20:00IT运维版块每日发帖之星
日期:2015-09-14 06:20:00金牛座
日期:2014-10-10 11:23:34CU十二周年纪念徽章
日期:2013-10-24 15:41:34酉鸡
日期:2013-10-19 10:17:1315-16赛季CBA联赛之北京
日期:2017-03-06 15:12:44
发表于 2008-08-05 20:12 |显示全部楼层
非常谢谢

备注一下
以后好找

论坛徽章:
0
发表于 2008-08-06 10:09 |显示全部楼层
好文,顶,MARK:wink: :wink: :wink:

论坛徽章:
0
发表于 2008-08-06 13:22 |显示全部楼层
谢谢楼主,受益匪浅呀

论坛徽章:
0
发表于 2008-08-06 16:12 |显示全部楼层
写的很好啊,我是新手,虽然很多地方没看懂,还是觉得对我以后的学习很有帮助。

论坛徽章:
0
发表于 2008-08-06 16:24 |显示全部楼层

回复 #22 Godbach 的帖子

Godbach 兄,我有个关于netfilter的问题想请教你。就是netfilter中的规则ipt_entry和ipt_entry_match是如何联系在一起的?
      首先在ipt_do_table函数中对sk_buff依照规则ipt_entry进行匹配match,然后调用其target函数。其中宏IPT_MATCH_ITERATE(e, do_match,*pskb, in, out, offset, &hotdrop)是用来根据ipt_entry来遍历其ipt_entry_match的,遍历的同时调用do_match函数进行实际的match。
       后来我看了ipt_register_match(ipt_match XXX)函数,这个函数完成对match的注册,但是它的注册实际上是把这个ipt_match添加到一个struct xt_af {
        struct mutex mutex;
        struct list_head match;
        struct list_head target;
        struct list_head tables;
        struct mutex compat_mutex;
};

的 match 中,跟规则ipt_entry无关啊。。。。

        ipt_entry遍历ipt_entry_match是依靠其内部的target_offset等偏移量来实现的,可是偏移量是在哪里设置好的?我没找到相关的函数。。。
        上面有可能讲得不对,望同志们看看哪里我理解错了。我其实就是想知道新建一个规则ipt_entry时,它的ipt_entry_match是如何设置的,是怎么跟target_offset这些偏移量对应的。。。

论坛徽章:
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
发表于 2008-08-06 17:08 |显示全部楼层
原帖由 jaycu 于 2008-8-6 16:24 发表
Godbach 兄,我有个关于netfilter的问题想请教你。就是netfilter中的规则ipt_entry和ipt_entry_match是如何联系在一起的?
      首先在ipt_do_table函数中对sk_buff依照规则ipt_entry进行匹配match,然后调用 ...



这个地方我也正在看。我觉得应该是在设置规则的时候,iptables会根据你的match来设置target_offset的。具体内核的代码,我也得在找一下。具体原理应该是这样。

兄弟可以参考一下iptable_filter.c中
  1. static struct
  2. {
  3.         struct ipt_replace repl;
  4.         struct ipt_standard entries[3];
  5.         struct ipt_error term;
  6. } initial_table __initdata
复制代码

这个地方是初始化一张表,即filter表。那这里已经设置的target_offset, next_offset。
默认的是没有match, 一个target。这个地方会不会对你的理解有所帮助。

[ 本帖最后由 Godbach 于 2008-8-6 17:09 编辑 ]

论坛徽章:
0
发表于 2008-08-06 17:36 |显示全部楼层
原帖由 Godbach 于 2008-8-6 17:08 发表



这个地方我也正在看。我觉得应该是在设置规则的时候,iptables会根据你的match来设置target_offset的。具体内核的代码,我也得在找一下。具体原理应该是这样。

兄弟可以参考一下iptable_filter.c中
s ...


好的,谢谢,我再好好看看

论坛徽章:
0
发表于 2008-08-06 17:40 |显示全部楼层
学习了!!貌似看的不是很明白!!看来要多看几遍啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

DTCC2020中国数据库技术大会

【架构革新 高效可控】2020年12月21日-23日第十一届中国数据库技术大会将在北京隆重召开。

大会设置2大主会场,20+技术专场,将邀请超百位行业专家,重点围绕数据架构、AI与大数据、传统企业数据库实践和国产开源数据库等内容展开分享和探讨,为广大数据领域从业人士提供一场年度盛会和交流平台。

http://dtcc.it168.com


大会官网>>
  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP