分类: LINUX
2009-07-11 13:49:25
一iptables的基本理论
1.规则(rules)
规则(rules)其实就是网络管理员预定义的条件,规则一般的定义为“如果数据包头符合这样的条件,就这样处理这个数据包”。规则存储在内核空间的信息包过滤表中,这些规则分别指定了源地址、目的地址、传输协议(如TCP、UDP、ICMP)和服务类型(如HTTP、FTP和SMTP)等。当数据包与规则匹配时,iptables就根据规则所定义的方法来处理这些数据包,如放行(accept)、拒绝(reject)和丢弃(drop)等。配置防火墙的主要工作就是添加、修改和删除这些规则。
2.链(chains)
链(chains)是数据包传播的路径,每一条链其实就是众多规则中的一个检查清单,每一条链中可以有一条或数条规则。当一个数据包到达一个链时,iptables就会从链中第一条规则开始检查,看该数据包是否满足规则所定义的条件。如果满足,系统就会根据该条规则所定义的方法处理该数据包;否则iptables将继续检查下一条规则,如果该数据包不符合链中任一条规则,iptables就会根据该链预先定义的默认策略来处理数据包。
3.表(tables)
表(tables)提供特定的功能,iptables内置了3个表,即filter表、nat表和mangle表,分别用于实现包过滤,网络地址转换和包重构的功能。
(1).filter表
主要用于过滤数据包,该表根据系统管理员预定义的一组规则过滤符合条件的数据包。对于防火墙而言,主要利用在filter表中指定的规则来实现对数据包的过滤
Filter表是默认的表,如果没有指定哪个表,iptables就默认使用filter表来执行所以命令,filter表包含了INPUT链(处理进入的数据包),RORWARD链(处理转发的数据包),OUTPUT链(处理本地生成的数据包)在filter表中只能允许对数据包进行接受,丢弃的操作,而无法对数据包进行更改
(2).nat表
主要用于网络地址转换NAT,该表可以实现一对一,一对多,多对多等NAT 工作,iptables就是使用该表实现共享上网的,NAT表包含了PREROUTING链(修改即将到来的的数据包),POSTROUTING链(修改即将出去的数据包),OUTPUT链(修改路由之前本地生成的数据包)
(3).mangle表
主要用于对指定数据包进行更改,在内核版本
二.iptables的使用
iptables的命令格式较为复杂,一般的格式如下:
iptables [-t表] -命令 匹配 操作
(1)表选项
表选项用于指定命令应用于哪个iptables内置表。
(2)命令选项
命令选项用于指定iptables的执行方式,包括插入规则,删除规则和添加规则,如下表所示
命令 |
说明 |
-P或--policy <链名> |
定义默认策略 |
-L或--list <链名> |
查看iptables规则列表 |
-A或—append <链名> |
在规则列表的最后增加1条规则 |
-I或--insert <链名> |
在指定的位置插入1条规则 |
-D或--delete <链名> |
从规则列表中删除1条规则 |
-R或--replace <链名> |
替换规则列表中的某条规则 |
-F或--flush <链名> |
删除表中所有规则 |
-Z或--zero <链名> |
将表中数据包计数器和流量计数器归零 |
(3) 匹配选项
匹配选项指定数据包与规则匹配所具有的特征,包括源地址,目的地址,传输协议和端口号,如下表所示
匹配 |
说明 |
-i或--in-interface <网络接口名> |
指定数据包从哪个网络接口进入,如ppp0、eth0和eth1等 |
-o或--out-interface <网络接口名> |
指定数据包从哪块网络接口输出,如ppp0、eth0和eth1等 |
-p或---proto协议类型 < |
指定数据包匹配的协议,如TCP、UDP和ICMP等 |
-s或--source <源地址或子网> |
指定数据包匹配的源地址 |
--sport <源端口号> |