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链即可其他慢慢了解。