五大链
链, 即 Netfilter 在内核中设置的对报文响应的”关卡”
PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
报文流向
-
到本机某进程的报文
PREROUTING -> INPUT
-
由本地转发的报文
PREROUTING -> FORWARD -> POSTROUTING
-
由本机进程发出的报文 (通常为响应报文)
OUTPUT -> POSTROUTING
四大表
表, 即具有相同功能的规则集合
filter 表: 过滤功能(防火墙); 内核模块: iptables_filter
nat 表: network address traslation, 网络地址转换; 内核模块: iptables_nat
mangle 表: 拆解, 修改报文, 并重新新封装; iptables_mangle
raw 表: 关闭 nat 表上启用的连接追踪机制; iptables_raw
表链关系
-
直观展示
raw mangle nat filter PREROUTING ✓ ✓ ✓ INPUT ✓ ✓(CentOS 7) ✓ FORWARD ✓ ✓ OUTPUT ✓ ✓ ✓ ✓ POSTROUTING ✓ ✓ -
维度一: 链中的规则可以存在哪些表中
PREROUTING 链的规则可存在于: raw, mangle, nat 表中
INPUT 链的规则可存在于: mangle, nat(CentOS 7 有, CentOS 6 没有), filter 表中
FORWARD 链的规则可存在于: mangle, filter 表中
OUTPUT 链的规则可存在于: raw, mangle, nat, filter 表中
POSTROUTING 链的规则可存在于: mangle, nat 表中
-
维度二: 表中的规则可以被哪些链使用
raw 表中的规则可用于链: PREROUTING, OUTPUT
mangle 表中的规则可用于链: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING
nat 表中的规则可用于链: PREROUTING, INPUT (CentOS 7 有, CentOS 6 没有), OUTPUT, POSTROUTING
filter 表中的规则可用于链: INPUT, FORWARD, OUTPUT
表优先级
由高到低: raw -> mangle -> nat -> filter
规则
规则 = 匹配条件 + 处理动作
-
匹配条件
-
基本匹配条件: Source IP, Destination IP
-
扩展匹配条件: Source Port, Destination Port
是 netfilter 中的一部分, 以模块形式存在, 要使用则要依赖对应扩展模块
-
-
处理动作 (target, 也可分为基本与扩展动作,以下为常用动作)
-
ACCEPT
-
DROP
-
REJECT
-
SNAT 源地址转换, 解决内网用户用同一个公网地址上网的问题
-
MASQUERADE 是 SNAT 的一种特殊形式, 适用于动态 IP 上
-
DNAT 目标地址转换
-
REDIRECT 在本机做端口映射
-
LOG 在
/var/log/messages
文件中记录日志信息
-
规则查询
查看某张表中的规则
iptables -t raw -nvL
iptables -t mangle -nvL
iptables -t nat -nvL
iptables -t filter -nvL 或者 iptables -nvL
查看某张表中某条链的规则
iptables -t filter -nvL INPUT
-t 表示指定 table
-L 表示列出规则
-n 表示不反解 IP ,直接显示
-v 表示显示详细信息 -x 表示显示精确数值
![]() |
![]() |