iptables学习手札(一)简介与基础
本文可自由转载,但请遵循“署名-非商业用途-保持一致”的创作共用协议。 永久链接:JoeCen's 小猫窝-----------------------------
iptables简介与基础
防火墙系统可分为包过滤型、应用级网关(也叫代理服务器型防火墙)和电路级防火墙三种基本类型。Linux提供的防火墙软件包内置于Linux内核中,是 一种基于包过滤型的防火墙实现技术。其中心思想是根据网络层IP包头中的源地址、目的地址及包类型等信息来控制包的流向。更彻底的过滤则是检查包的源端 口、目的端口以及连接状态等信息。
iptables
iptables是一个管理内核包过滤的工具,可以加入、插入或删除核心包过滤表格中的规则。实际上真正来执行这些过滤规则的是 Netfilter。Netfiler是Linux核心中一个通用架构,它提供一系列的表(tables),每个表由若干链(chains)组成,而每条 链中可以由一条或数条规则(rule)组成,如下:
|---......
|---ipchains1 |---rule1
|---table1---| |
| |---ipchains2 --- |---rule2
netfilter--|---table2 |
| |---......
|---......
相对于2.4内核提供的IP链来说,iptables实现的不仅仅是包过滤功能,而是通过Netfilter实现一整套框架结构,在这个框架之上实现包过滤、NAT等模块功能,从而提供更好的可扩展性和灵活性。
系统缺省的表为filter表,该表包含了INPUT链、OUTPUT链和FORWORD链。每一条链中可以定义一条和数条规则,每一条规则都以如下格式定义:条件/处理方式。
当一个数据包到达一个链时,系统就会从第一条规则开始检查,看是否符合该规则所定义的条件。如果满足,系统将规则该条规则所定义的方法处理该数据包;如果 不满足,则会继续检查下一条规则。如果该数据包不符合该链中任一条规则,系统则会根据该链预先定义的策略(policy)来处理该数据包。(一般时 deny)。
Netfilter框架能够在内核2.3.5及以上版本中实现。编译内核的时候,应该将Netfilter相关的项目编译进去。这些项目一般在 “Networking options”子项下。在“IP:Netfilter Configuration ---->”选中所有选项。
编译成功后,这些模块文件都位于目录/lib/modules/2.4.0/kernel/net/ipv4/netfilter中。成功安装iptables后,必须先载入相关模块:#modprobe iptables_tables
iptable_filter模块会在运行时自动载入。