🧱 iptables 简介
什么是 iptables?
iptables 就是你家的大门保安——每个进出的人都要经过他检查。他有一份名单(规则表):谁能进、谁不能进、从哪个门进、去了几楼,全都有记录。
iptables 是 Linux 内核自带的防火墙工具,工作在网络层(Layer 3/4),可以对进出服务器的数据包进行过滤、转发、修改。
核心概念:表(Tables)
iptables 有几张"表",每张表负责不同类型的工作:
| 表名 | 用途 | 常用程度 |
|---|---|---|
| filter | 过滤数据包(允许/拒绝) | ⭐⭐⭐ 最常用 |
| nat | 网络地址转换(NAT) | ⭐⭐ 常用 |
| mangle | 修改数据包头 | ⭐ 较少用 |
| raw | 连接跟踪豁免 | 很少用 |
核心概念:链(Chains)
每张表里有若干条"链",就像保安的不同岗位:
- 📥INPUT——入口岗:检查进入本机的数据包
- 📤OUTPUT——出口岗:检查从本机发出的数据包
- 🔄FORWARD——转发岗:检查经过本机但不是给本机的数据包(路由器场景)
- 🔀PREROUTING——预处理:在路由决策前处理(DNAT 用)
- 🔀POSTROUTING——后处理:在路由决策后处理(SNAT 用)
数据包流向
理解数据包如何流经 iptables,就像理解快递如何经过各个检查站:
text
数据包进入服务器
│
▼
┌──────────────┐
│ raw │ PREROUTING (连接跟踪前)
│ 表 │
└──────┬───────┘
▼
┌──────────────┐
│ mangle │ PREROUTING (修改包头)
│ 表 │
└──────┬───────┘
▼
┌──────────────┐
│ nat │ PREROUTING (DNAT:修改目的地址)
│ 表 │
└──────┬───────┘
▼
路由决策:给本机?还是转发?
┌────┴────┐
▼ ▼
本机 转发 → FORWARD → POSTROUTING → 出去
│
▼
┌──────────────┐
│ filter │ INPUT (过滤:允许还是拒绝?)
│ 表 │
└──────┬───────┘
▼
应用程序收到数据