实现Linux网络防火墙
2006-07-04 12:35:49 来源:WEB开发网核心提示: IptablesIptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则,实现Linux网络防火墙(5),实际上真正来执行这些过滤规则的是Netfilter ,Netfilter是Linux核心中一个通用架构,则继续检查下一条规则,如果该数据包不符合该链中任一
Iptables
Iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是Netfilter 。Netfilter是Linux核心中一个通用架构,它提供一系列的表(tables),每个表由若干链(chains)组成,而每条链中可以由一条或数条规则(rule)组成。
图 Netfilter的总体结构
相对于2.2内核提供的IP链来说,2.4内核提供了更好的灵活性和可扩展性。2.4内核中的防火墙并不是2.2内核的简单增强,而是一次完全的重新实现,2.4内核提供的防火墙软件包在结构上发生了非常大的变化。与IP链相比,2.4内核提供的Iptables的检测点变成了5个,并在每个检测点上登记需要处理的函数,登记通过nf-register-hook()函数保存在全局变量nf-hook中来实现。当包到达此检测点时,实现登记的函数按照事先定义好的优先级别来执行。相对于2.2内核提供的IP链来说,Iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现一整套框架结构,在这个框架之上实现包过滤、NAT等模块功能,从而提供更好的可扩展性和灵活性。
系统缺省的表为filter,该表包含了INPUT链(输入链)、FORWARD链(转发链)和OUTPUT链(输出链)。每一条链中可以定义一条或数条规则,每一条规则都以如下格式定义:条件/处理方式。
当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件。如果满足,系统将根据该条规则所定义的方法处理该数据包;如果不满足,则继续检查下一条规则。如果该数据包不符合该链中任一条规则,系统则会根据该链预先定义的策略(policy)来处理该数据包。
更多精彩
赞助商链接