linux防火墙实现技术比较(1)

http://tech.ddvip.com   2006年04月03日    社区交流 收藏本文

本文详细介绍linux防火墙实现技术比较(1)

  此部分详细的分析可参见我早期的一份文章【9】。

  3.2 iptables

  A Packet Traversing the Netfilter System:

  --->PRE------>[ROUTE]--->FWD---------->POST------>

  Conntrack | Filter ^ NAT (Src)

  Mangle | | Conntrack

  NAT (Dst) | [ROUTE]

  (QDisc) v |

  IN Filter OUT Conntrack

  | Conntrack ^ Mangle

  | | NAT (Dst)

  v | Filter

  2.4内核中的防火墙系统不是2.2的简单增强,而是一次完全的重写,在结构上发生了非常大的变化。相比2.2的内核,2.4的检测点变为了五个。

  在每个检测点上登记了需要处理的函数(通过nf_register_hook()保存在全局变量nf_hooks中),当到达此检测点的时候,实现登记的函数按照一定的优先级来执行。严格的从概念上将,netfilter便是这么一个框架,你可以在适当的位置上登记一些你需要的处理函数,正式代码中已经登记了许多处理函数(在代码中搜nf_register_hook的调用),如在NF_IP_FORWARD点上登记了装发的包过滤功能。你也可以登记自己的处理函数,具体例子可参看【8】与【10】。

  
3.3 FW1

  FW1是chekpoint推出的用于2.2内核的防火墙。由于其发布的模组文件带了大量的调试信息,可以从反汇编的代码中窥探到到许多实现细节。

  FW1通过dev_add_pack的办法加载输入过滤函数,如果对这个函数不熟悉,请参看【14】。但是此处有个问题:在net_bh()中,传往网络层的skbuff是克隆的,即

  skb2=skb_clone(skb, GFP_ATOMIC);

  if(skb2)

  pt_prev->func(skb2, skb->dev, pt_prev);

  这样的话如果你想丢弃此包的话,光将其free掉是不够的,因为它只是其中的一份拷贝而已。

责编:豆豆技术应用

正在加载评论...