五种规则链:在处理各种数据包时,根据防火墙规则的不同介入时机。
INPUT:处理入站
OUTPUT:处理出站
FORWARD:处理接收转发
PREROUTING:路由选择之前
POSTROUTING:路由选择之后
四种规则表:容纳各种规则链 功能为加粗
raw表:确定是否对该数据包进行状态跟踪
PREROUTING 、 OUTPUT
mangle表:为数据包设置标记
PREROUTING 、 POSTROUTING 、 INPUT 、 FORWARD 、 OUTPUT
nat表:修改数据包中的源、目标IP地址或端口
PREROUTING 、 POSTROUTING 、 OUTPUT
filter表:确定是否放行该数据包(过滤)
INPUT 、 FORWARD 、 OUTPUT
根据什么时机 做什么功能 怎么做
匹配流程
规则表顺序
raw → mangle → nat → filter
规则链顺序
入站:PREROUTING → INPUT
出站:OUTPUT → POSTROUTING
转发:PREROUTING → FORWARD → POSTROUTING
规则链内的匹配顺序
按顺序依次检查,匹配即停止(LOG策略例外)
若找不到匹配规则,按该链的默认策略处理
---------------------------------------------------------------------------------
基本语法
iptables [-t 表名] 选项 [链名] [ 匹配条件 ] [ -j 控制类型 ]
注意事项
不指定表名时,默认指 filter 表
不指定链名时,默认指表内所有链
除非设置链的默认策略,否则必须指定匹配条件
选项、链名、控制类型使用大写字母,其余均为小写
数据包的常见控制类型
ACCEPT:允许通过
DROP:直接丢弃,不给出任何回应
REJECT:拒绝通过,必要时会给出提示
LOG:记录日志信息,然后传给下一条规则继续匹配
常用选项
-A 末尾添加(append)
-D 删除 可指定序号或具体内容(delete)
-I 插入 未指定序号默认为第一条规则(insert)
-R 修改或替换指定链中的某一条规则 可指定序号或具体内容(replace)
-L 列出指定链中所有规则 未指定链名列出表中所有链(list)
-F 清空指定链中的所有规则,未指定则清空表中所有链(flush)
-P 设置指定链的默认策略(policy)
-n 数字形式显示输出结果(numeric)
-h 命令帮助信息(help)
--line-numbers 查看规则列表时显示顺序号