基本组成
表:
filter:用来对数据包进行过滤,根据具体的规则要求决定如何处理一个数据包。表内包含三个链,即INOUT、FORWARD、OUTPUT
nat表:主要用来修改数据包的IP地址、端口号等信息。内核模块为iptable_nat,表内包含三个链,即PREROUTING、POSTROUTING、OUTPUT
mangle:用来修改数据包的服务类型、生存周期,或为数据包设置Mark标记,以实现流量整形、策略路由等高级应用。内核模块为iptable_mangle,表内包含五个链,即INPUT、OUTPUT、PREROUTING、POSTROUTING、FORWARD
raw:1.2.9以后版本iptables新增的表,用来决定是否对数据包进行状态跟踪。内核模块为iptable_raw,表内包含两个链,即OUTPUT、PREROUTING
链:
INPUT:收到访问防火墙本机地址的数据包(入站)时,应用此链中的规则
OUTPUT:收到防火墙本机向外发送数据包(出站)时,应用此链中的规则
FORWARD:接收到需要通过防火墙中转发送给其他地址的数据包(转发)时,应用此链中的规则
PREROUTING:在对数据包做路由选择之前,应用此链中的规则
POSTROUTING:在对数据包做路由选择之后,应用此链中的规则
匹配流程
表:
raw-mangle-nat-filter
基本语法
1.控制类型
ACCEPT:允许数据包通过
DROP:直接丢弃数据包,不回应
REJECT:拒绝数据包通过,给发送端一个响应信息
LOG:辅助动作,并没有真正处理数据包
基本参数
-A:在指定链的末尾添加一条新的规则
-D:删除指定链中的某一条规则,可指定规则序号或具体内容
-I:在指定链中插入一条新的规则,未指定序号是默认作为第一条规则
-R:修改、替换指定链中的某一条规则,可指定规则序号或具体内容
-L:列出指定链中所有的规则,若未指定链名,则列出表中的所有链
-F:清空指定链中的所有规则,若为指定链名,则清空表中的所有链
-P:设置指定链的默认策略
-n:使用数字形式显示输出结果,如显示IP地址而不是主机名
-v:查看规则列表时显示详细的信息
-h:查看命令帮助信息
--line-numbers:查看规则列表时,同时显示规则在链中的顺序号
匹配条件
1.通用匹配
协议匹配:-p (icmp,tcp,udp,all)
地址匹配:-s 源地址 -d 目标地址
网络接口匹配:-i接口名(入站网卡) -o接口名(出站网卡)
2.隐含匹配
端口匹配:--sport源端口 --dport目标端口
ICMP类型匹配:--icmp-type 8、0、3 分别对应ICMP协议的请求、回显、目标不可达。
3.显示匹配
多端口匹配:(-m multiport --dports 端口列表) (-m multiport --sports 端口列表)
IP范围匹配:(-m iprange --src-range ip范围) (-m iprange --dst-range ip范围)
MAC地址匹配:-m mac --mac-source MAC地址
状态匹配:-m state --state 连接状态 连接状态: NEW (与任何连接无关的) ESTABLISHED(响应请求或者已建立连接的) RELATED(与已有连接有相关性的)