Linux-netfilter框架

Linux 的内核提供的防火墙功能通过netfilter框架实现,并提供了iptables工具配置和修改防火墙的规则。

1. netfilter 框架

netfilter的通用框架不依赖具体协议。而为每种网络协议定义了一套钩子函数这些钩子函数在数据包经过协议栈的几个关键点被调用。协议栈将数据包以及钩子函数作为参数,传递给netfilter框架。

netfilter 主要步骤及函数:

NF_IP_PRE_ROUTING:

NF_IP_LOCAL_IN:

NF_IP_FORWARD:

NF_IP_POST_ROUTING:

NF_IP_LOCAL_OUT:

NF_IP_POST_ROUTING:

2.包过滤

每个函数都可以对数据包进行处理。系统管理员可以通过iptables工具来向内核模块注册多个过滤规则,并且指明过滤规则的优先权。设置完成后每个钩子按照规则进行匹配。如果与规则匹配,函数就会进行一些过滤操作。主要操作:

NF_ACCEPT:

NF_DROP:

NF_STOLEN:

NF_QUEUE:

NF_REPEAT

3.包选择

在netfilter上已经创建了一个包选择系统,这个包选择工具默认已经注册了3个表:

  1.过滤表(filter):过滤包而不会改变包。

  2.NAT表:

  3.mangle表:mangle表被用于真正改变包的信息。

在调用钩子函数时,是按照表的顺序来调用的。 package->filter表->nat表->mangle表 

posted @ 2017-12-28 17:03  TimeTree  阅读(728)  评论(0编辑  收藏  举报