参考文档
朱双印个人日志
netfilter/iptables架构
位置 |
钩子函数/规则链 |
说明 |
数据包刚刚进入网络层的位置 |
PREROUTING |
在这里处理目标地址转换 |
经过路由判断,数据包从内核流入本机用户空间的位置 |
INPUT |
在这里处理INPUT包过滤 |
数据包从本机用户空间进程发出的位置,后接路由判断出口的网络接口 |
OUTPUT |
在这里处理OUTPUT包过滤 |
经过路由判断,数据包不进入本机用户空间,只是进行转发的位置 |
FORWARD |
在这里处理FORWARD包过滤 |
数据包将通过网络接口出去的位置 |
POSTROUTING |
在这里处理源地址转换 |
为了方便管理钩子函数(黄色模块链),iptables按照钩子函数实现的功能,将其分别存储于4张表中(蓝色模块),类似于编程中指向链表的指针数组,链表存在优先级顺序
表 |
功能 |
涉及链 |
Filter |
数据包的过滤 |
INPUT、OUTPUT、FORWARD |
NAT |
网络地址的转换 |
PREROUTING(DNAT)、POSTROUTING(SNAT) |
Mangle |
修改数据包的原始数据,一般用于防火墙标记 |
PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING |
Raw |
配置免除 |
PREROUTING、OUTPUT |
iptables命令语法
# iptables [-t table] command [chain] [rules] [-j target]
规则查询
### 查询filter表规则
# iptables -t filter -L
### 查询filter表INPUT链规则
# iptables -t filter -L INPUT
### 查询filter表INPUT链详细规则
# iptables -t filter -vL INPUT
### 查询filter表INPUT链详细规则,并显示规则编号
# iptables -t filter --line-number -vL INPUT
### 查询filter表INPUT链规则以及默认规则
# iptables -t filter -nL INPUT
### 说明
pkts: 对应规则匹配到的报文个数
bytes: 对应规则匹配到的报文包的大小总和
target: 匹配到对应规则时的动作
prot: 表示规则对应的协议
opt: 表示规则对应的选项
in: 表示需要进行规则匹配的数据包流入的网卡
out: 表示需要进行规则匹配的数据包流出的网卡
source: 表示规则对应的源地址(IP/网段)
destination: 表示规则对应的目标地址(IP/网段)
policy:表示当前链的默认策略