2、iptables基本原理
通过向防火墙提供有关对来自某个源、到某个目的地或具有特定协议类型的信息包要做些什么的指令,规则控制信息包的过滤。通过使用Netfilter/iptables系统提供的特殊命令iptables,建立这些规则,并将其添加到内核空间的特定信息包过滤表内的链中。关于添加/除去/编辑规则的命令的一般语法如下:
iptables [-t table] command [match] [target] |
不难看出,一条iptables规则包含如下4个基本元素:
● 表
● 命令
● 匹配
● 目标
1)表(table)
[-t table]选项允许使用标准表之外的任何表。表是包含仅处理特定类型信息包的规则和链的信息包过滤表。有三种可用的表选项:filter、nat和mangle。该选项不是必需的,如果未指定,则filter用作默认表。filter表用于一般的信息包过滤,包含INPUT、OUTPUT和FORWAR链。nat表用于要转发的信息包,它包含PREROUTING、OUTPUT和POSTROUTING链。如果信息包及其头内进行了任何更改,则使用mangle表。该表包含一些规则来标记用于高级路由的信息包以及PREROUTING和OUTPUT链。
2)命令(command)
command部分是iptables命令的最重要部分,它告诉iptables命令要做什么,例如,插入规则、将规则添加到链的末尾或删除规则。主要有如表1所示的命令。
表1 iptables常用命令
命 令 |
说 明 |
-A或--append |
该命令将一条规则附加到链的末尾 |
-D或--delete |
通过用-D指定要匹配的规则或者指定规则在链中的位置编号,该命令从链中删除该规则 |
-P或--policy |
该命令设置链的默认目标,即策略。所有与链中任何规则都不匹配的信息包都将被强制使用此链的策略 |
-N或--new-chain |
用命令中所指定的名称创建一个新链 |
-F或--flush |
如果指定链名,该命令删除链中的所有规则,如果未指定链名,该命令删除所有链中的所有规则。此参数用于快速清除 |
-L或--list |
列出指定链中的所有规则 |
-R或--replace |
替换指定链中一条匹配的规则 |
-X或--delete-chain |
删除指定用户的的定义链,若没有指定链,则删除所有的用户链 |
-C或--check |
检查数据包是否与指定链的规则相匹配 |
-Z或--zero |
将指定链中所有规则的byte计数器清零 |