Chinaunix首页 | 论坛 | 博客
  • 博客访问: 3934561
  • 博文数量: 93
  • 博客积分: 3189
  • 博客等级: 中校
  • 技术积分: 4229
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-02 13:29
个人简介

出没于杭州和青岛的程序猿一枚,对内核略懂一二

文章分类

全部博文(93)

文章存档

2016年(2)

2015年(3)

2014年(11)

2013年(29)

2012年(16)

2011年(5)

2010年(5)

2009年(22)

分类: LINUX

2012-09-29 11:58:36

linux netfilter 与helper相关的hook:

点击(此处)折叠或打开

  1. {
  2. .hook = ipv4_conntrack_in,
  3. .owner = THIS_MODULE,
  4. .pf = PF_INET,
  5. .hooknum = NF_IP_PRE_ROUTING,
  6. .priority = NF_IP_PRI_CONNTRACK,
  7. }
  8. {
  9. .hook = ipv4_conntrack_help,
  10. .owner = THIS_MODULE,
  11. .pf = PF_INET,
  12. .hooknum = NF_IP_POST_ROUTING|NF_IP_LOCAL_IN,
  13. .priority = NF_IP_PRI_CONNTRACK_HELPER,
  14. }
第一个数据包到来的流程:
ipv4_conntrack_in --> nf_conntrack_in --> resolve_normal_ct --> nf_ct_get_tuple --> nf_conntrack_find_tuple(1) --> init_conntrack --> nf_ct_find_expection(2) --> nf_ct_helper_find(3) --> nf_ct_helper_ext_add(4)

(1) 查找tuple五元组,因为是第一个连接,所有查找不到
(2) 查找期待连接,因为没有添加过期待连接,所有也查找不到
(3) 查找注册的helper,这里以tftp为例,找到了tftp注册的helper
(4) 将找到的helper添加到ct结果体中

在之后的ipv4_conntrack_help的hook函数中,会执行ct->helper->help函数,这个help函数tftp_help会添加一个exp到全局期待连接表中

当期待的链接的第一个数据包到达的时候,会在(2)中找到,从而将新的连接与之前的链接联系起来。

阅读(3795) | 评论(0) | 转发(2) |
给主人留下些什么吧!~~