iptables表链结构
raw表:主要用来决定是否对数据包进行状态跟踪 | mangle表:用来修改数据包的TOS服务类型、TTL生存周期、为数据包设置Mark标记,以实现流量整形、策略路由等高级应用 | nat表:用来修改数据包的IP地址、端口号等信息 | filter表:用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包 |
---|---|---|---|
PREROUTING链 | PREROUTING链 | PREROUTING链 | INPUT链 |
OUTPUT链 | PREROUTING链 | PREROUTING链 | FORWARD链 |
INPUT链 | OUTPUT链 | OUTPUT链 | |
OUTPUT链 | |||
FORWARD链 |
规则链 |
---|
规则链之间的执行顺序: |
入站:PREROUTING–INPUT |
出站:OUTPUT–POSTROUTING |
转发:PREROUTING–FORWARD–POSTROUTING |
INPUT链:当收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则 |
OUTPUT链:当防火墙本机向外发送数据包(出站)时,应用此链中的规则 |
FORWARD链:当接收到需要通过防火墙中转发给其他地址的数据包时,应用此链中的规则 |
PREROUTING链:在对数据包做路由选择之前,应用此链中的规则 |
POSTROUTING链:在对数据包做路由选择之后,应用此链中的规则 |
控制类型 |
ACCEPT:允许数据包通过 |
DROP:直接丢弃数据包,不给出任何回应消息 |
REJECT:拒绝数据包通过,必要时会给数据发送端一个响应信息 |
LOG:在/var/log/messages 文件中记录日志信息,然后将数据包传递给下一条规则 |
命令格式 |
---|
iptables -t 表名 选项 链名 条件(数据包检查条件) -j 控制类型 |
选项名 | 功能及特点 |
---|---|
-A | 在指定链的末尾添加一条新的规则 |
-D | 删除指定链中的某一条规则,可指定规则序号或具体内容 |
-I | 在指定链中插入一条新的规则,未指定序号时默认作为第一条规则 |
-R | 修改、替换、指定链中的某一条规则,可指定规则序号或具体内容 |
-L | 列出指定链中所有的规则,若未指定链名,则列出表中的所有链 |
-F | 清空指定链中的所有规则,若未指定链名,则清空表中的所有链 |
-P | 设置指定链的默认策略 |
-n | 使用数字形式显示输出结果,如显示IP地址而不是主机名 |
-v | 查看规则列表式显示详细信息 |
-h | 查看命令帮助信息 |