免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: Godbach
打印 上一主题 下一主题

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

论坛徽章:
0
21 [报告]
发表于 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
22 [报告]
发表于 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
23 [报告]
发表于 2008-08-05 20:12 |只看该作者
非常谢谢

备注一下
以后好找

论坛徽章:
0
24 [报告]
发表于 2008-08-06 10:09 |只看该作者
好文,顶,MARK:wink: :wink: :wink:

论坛徽章:
0
25 [报告]
发表于 2008-08-06 13:22 |只看该作者
谢谢楼主,受益匪浅呀

论坛徽章:
0
26 [报告]
发表于 2008-08-06 16:12 |只看该作者
写的很好啊,我是新手,虽然很多地方没看懂,还是觉得对我以后的学习很有帮助。

论坛徽章:
0
27 [报告]
发表于 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
28 [报告]
发表于 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
29 [报告]
发表于 2008-08-06 17:36 |只看该作者
原帖由 Godbach 于 2008-8-6 17:08 发表



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

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


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

论坛徽章:
0
30 [报告]
发表于 2008-08-06 17:40 |只看该作者
学习了!!貌似看的不是很明白!!看来要多看几遍啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP