Skip to content

🧱 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 (过滤:允许还是拒绝?)
│  表          │
└──────┬───────┘

   应用程序收到数据