LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 920|回复: 5

弱问个netfilter的问题

[复制链接]
发表于 2006-5-15 12:18:13 | 显示全部楼层 |阅读模式
ip层的5个hook:NF_IP_PRE_ROUTING, NF_IP_LOCAL_IN, NF_IP_FORWARD,
NF_IP_POST_ROUTING,NF_IP_LOCAL_OUT是钩子函数还是钩子点?他们除了起挂接其他模块的作用外自身还处理数据么?如果不挂接自己的模块的话,是由谁来出来数据包的呢?
发表于 2006-5-15 15:38:34 | 显示全部楼层
他们只是钩子点而不是钩子函数,注册到他上边的模块函数通过优先级排列成一个双向链表,封包到来时就先执行优先级最小的模块函数,然后依次往后执行,执行完毕后再返回协议栈

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-15 15:45:39 | 显示全部楼层
文档上说:“Netfilter提供了一个抽象、通用化的框架,该框架定义的一个子功能的实现就是包过滤子系统。Netfilter框架包含以下五部分:

  1. 为每种网络协议(IPv4、IPv6等)定义一套钩子函数(IPv4定义了5个钩子函数), 这些钩子函数在数据报流过协议栈的几个关键点被调用。在这几个点中,协议栈将把数据报及钩子函数标号作为参数调用netfilter框架。 ”

那ipv4定义的5个钩子函数是什么呢?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-15 15:47:03 | 显示全部楼层
Netfilter在IPv4中的结构

一个数据包按照如下图所示的过程通过Netfilter系统:


 --->[1]--->[ROUTE]--->[3]--->[4]--->
         |      ^
      local|       |
         |      [ROUTE]
         v      |
        [2]      [5]
         |      ^
         |      |
         v      |

从图中可以看到IPv4一共有5个钩子函数,分别为:

1 NF_IP_PRE_ROUTING
2 NF_IP_LOCAL_IN
3 NF_IP_FORWARD
4 NF_IP_POST_ROUTING
5 NF_IP_LOCAL_OUT

数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_IP_PRE_ROUTING[1]进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子函数NF_IP_LOCAL_IN[2]处理以后然后传递给上层协议;若该数据包应该被转发则它被NF_IP_FORWARD[3]处理;经过转发的数据报经过最后一个钩子函数NF_IP_POST_ROUTING[4]处理以后,再传输到网络上。


从上文看,NF_IP_PRE_ROUTING等好像是函数啊
回复 支持 反对

使用道具 举报

发表于 2006-5-15 15:51:48 | 显示全部楼层
那不是钩子函数,说钩子函数是错误的,仅仅是钩子点,在这五个钩子点上注册的才是钩子函数
Post by hsia
Netfilter在IPv4中的结构

一个数据包按照如下图所示的过程通过Netfilter系统:


 --->[1]--->[ROUTE]--->[3]--->[4]--->
         |      ^
      local|       |
         |      [ROUTE]
         v      |
        [2]      [5]
         |      ^
         |      |
         v      |

从图中可以看到IPv4一共有5个钩子函数,分别为:

1 NF_IP_PRE_ROUTING
2 NF_IP_LOCAL_IN
3 NF_IP_FORWARD
4 NF_IP_POST_ROUTING
5 NF_IP_LOCAL_OUT

数据报从左边进入系统,进行IP校验以后,数据报经过第一个钩子函数NF_IP_PRE_ROUTING[1]进行处理;然后就进入路由代码,其决定该数据包是需要转发还是发给本机的;若该数据包是发被本机的,则该数据经过钩子函数NF_IP_LOCAL_IN[2]处理以后然后传递给上层协议;若该数据包应该被转发则它被NF_IP_FORWARD[3]处理;经过转发的数据报经过最后一个钩子函数NF_IP_POST_ROUTING[4]处理以后,再传输到网络上。


从上文看,NF_IP_PRE_ROUTING等好像是函数啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-5-15 16:06:43 | 显示全部楼层
那这些钩子点上都注册了哪些函数?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表