Chinaunix首页 | 论坛 | 博客
  • 博客访问: 443219
  • 博文数量: 403
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: -70
  • 用 户 组: 普通用户
  • 注册时间: 2016-09-05 12:45
文章分类

全部博文(403)

文章存档

2014年(3)

2013年(1)

2012年(3)

2011年(21)

2010年(13)

2009年(64)

2008年(9)

2007年(36)

2006年(253)

分类: LINUX

2007-03-07 10:06:47

首先说一说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规则连了。
阅读(1568) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~