iptables 四表五链:新手友好版解释
一、核心概念类比
简单理解:iptables就像快递分拣中心
四表 = 不同的分拣规则手册 五链 = 快递流水线上的5个检查点 规则 = 具体的分拣指令(比如:来自上海的包裹发往1号货架)二、五链(5个检查点)
想象一个快递包裹进入分拣中心的过程:
1. PREROUTING链(进门前检查)
包裹刚送到分拣中心大门口 ↓ 检查包裹标签(修改目的地址) ↓ 决定这个包裹该去哪个仓库(路由决策)简单说:数据包刚进入Linux系统,还没决定发往哪里的时候
2. INPUT链(收件人签收处)
包裹确定是发给本大楼的 ↓ 送到前台签收处 ↓ 收件人(本机上的程序)签收简单说:数据包的目标是本机上的某个程序时(比如有人访问本机的Web服务)
3. FORWARD链(中转站)
包裹不是发给本大楼的 ↓ 经过本大楼中转 ↓ 转发给其他目的地简单说:本机作为路由器,数据包只是路过,目标不是本机时
4. OUTPUT链(寄件处)
本大楼要寄出的包裹 ↓ 在寄件处打包 ↓ 贴上标签发出去简单说:本机主动向外发送数据包时(比如浏览器访问网站)
5. POSTROUTING链(出门前检查)
包裹即将离开分拣中心 ↓ 检查并修改寄件人地址 ↓ 贴上最终的发货标签简单说:数据包离开Linux系统前的最后处理
三、四表(4本规则手册)
不同检查点使用的规则手册不同:
1. filter表(保安的检查手册)
主要工作:决定"让不让过" 常用指令:ACCEPT(允许)、DROP(丢弃)、REJECT(拒绝) 使用地点:INPUT、FORWARD、OUTPUT链类比:
- 快递中心的保安
- 检查包裹是否危险、是否允许进入
2. nat表(地址翻译员的手册)
主要工作:修改IP地址 常用指令:SNAT(改源地址)、DNAT(改目的地址) 使用地点:PREROUTING、OUTPUT、POSTROUTING链类比:
- 快递中心的地址翻译员
- 把"上海市人民广场"翻译成"仓库A区"
3. mangle表(包裹改造员的手册)
主要工作:修改数据包的特殊标记 常用指令:TOS(服务类型)、TTL(生存时间) 使用地点:所有5个链都可以用类比:
- 快递中心的特殊处理员
- 给包裹贴上"加急"、"易碎"标签
4. raw表(优先处理员的手册)
主要工作:决定是否跟踪连接状态 常用指令:NOTRACK(不跟踪) 使用地点:PREROUTING、OUTPUT链类比:
- 快递中心的VIP通道处理员
- 决定哪些包裹不走正常流程
四、完整流程图(快递中心的一天)
网络数据包 → Linux系统 ↓ ┌─────────────────────────────────────┐ │ PREROUTING链 (大门口) │ │ ↓ │ │ 1. raw表:VIP通道检查 │ │ 2. mangle表:贴特殊标签 │ │ 3. nat表:修改目的地地址(DNAT) │ └─────────────────────────────────────┘ ↓ ┌─── 路由决策:这个包裹给谁? ───┐ │ │ ↓ 发给本机 ↓ 发给别人 ↓ 本机发出 INPUT链 FORWARD链 OUTPUT链 (前台签收) (中转站) (寄件处) ↓ ↓ ↓ filter表 filter表 filter表 (保安检查) (保安检查) (保安检查) ↓ ↓ ↓ mangle表 mangle表 mangle表 (特殊处理) (特殊处理) (特殊处理) ↓ ↓ ↓ 本机程序 转发 POSTROUTING链 ↓ nat表:改寄件地址(SNAT) ↓ mangle表:最后检查 ↓ 离开系统五、生活中的例子
场景:你家的智能门禁系统
四表 = 4本不同的管理手册: 1. 访客名单手册(filter表)- 谁可以进 2. 地址转换手册(nat表)- 快递改地址 3. 特殊标签手册(mangle表)- 贴"重要"标签 4. 快速通道手册(raw表)- 家人直接进 五链 = 5个检查点: 1. PREROUTING - 快递员在小区门口(还没到你家) 2. INPUT - 快递到你门口(给你的) 3. FORWARD - 快递给邻居的(只是路过你家) 4. OUTPUT - 你寄出的快递 5. POSTROUTING - 快递离开小区六、简单记忆口诀
四表功能各不同: filter - 让不让过(安检) nat - 改不改地址(翻译) mangle - 贴不贴标签(标记) raw - 跟不跟踪(VIP通道) 五链位置要记清: PRE-INPUT-FORWARD-OUT-POST 前 - 入 - 转 - 出 - 后七、查看现有的表和链
# 查看filter表的所有规则(默认表)iptables -L# 查看nat表规则iptables -t nat -L# 查看mangle表规则iptables -t mangle -L# 查看规则时显示链名iptables -L -v# 会显示:# Chain INPUT (policy ACCEPT)# Chain FORWARD (policy ACCEPT)# Chain OUTPUT (policy ACCEPT)八、新手常见疑惑解答
Q1:表和链什么关系?
A:表是规则分类(做什么事),链是执行位置(在哪做)。
每个链可以使用多个表,每个表可以在多个链中使用。
Q2:为什么需要这么多表和链?
A:为了分工明确、效率高。就像快递中心,不同员工负责不同环节,不会互相干扰。
Q3:我平时最常用的是哪个?
A:
- 普通用户:主要用filter表的INPUT链(控制谁能访问我的电脑)
- 网络管理员:还会用到nat表(做网络地址转换)
- mangle和raw表一般用不到
Q4:规则的执行顺序是什么?
A:按照链的流程走,在每个链中按表的固定顺序执行:
raw → mangle → nat → filter (VIP通道 → 贴标签 → 改地址 → 安检)记住这个核心:表决定做什么,链决定在哪做。刚开始先掌握filter表和常用的INPUT链即可,其他慢慢了解。