netfilter各个HOOK的关系简介(笔记中已经总结到函数调用流程中)

netfilter各个HOOK的关系


最近哥们儿们对网络内核问的问题逐渐增多,本人 从前分析过2。2的网络源代码,并且对BSD也有所了解。但是我也注意到由于2。4对于SMP更好的支持以及改写了防火墙部分代码,因而网络源码IP层的变化较大。本人在北京理工大学xumei_bit网友邀请下帮助他(她)分析防火墙部分。因此正好也可以借此机会,将自己的拙作与大家共享。

首先说一说netfilter的几个HOOK的关系。目前总共有5个HOOK:PREROUTING POSTROUTING INPUT FORWARD OUTPUT.与2。2的ipchains相比,多了PRTEROUTING和POSTROUTING,它们的出现与对NAT的支持有关。

现在假设物理网络上来了一个ip分组。这个分组有ip_rcv函数接收,该函数最后一个宏将控制权交给PREROUTING规则链处理。如果该分组没有被过滤,则ip_rcv_finish()函数查路由表,并且判断改分组是发给本地机器还是转发给另一个网络。
如果是发给本地机器,则调用ip_local_deliver()。该函数在最后调用防火墙宏,处理INPUT规则链。处理完后交给传输层,直至应用层中的用户进程。
如果是转发,在ip_rcv_finish(),会调用路由表函数ip_route_input()后将控制权交给ip_forward()。这个函数会通过防火墙宏将执行FORWARD规则链中的规则。最后由ip_forward_finish()函数负责调用ip_send()将分组发出。但是发出之前会通过防火墙宏执行POSTROUTING中的规则,然后将分组交给驱动程序放到物理网络上。
现在还有一个HOOK没有说,OUTPUT.。当本地机器要发送分组时,当然就会在POSTROUTING之前先处理OUTPUT规则连了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值