iptables 里INPUT、OUTPUT、FORWARD 三个链(Chain)详解

在 iptables 里,INPUT、OUTPUT、FORWARD 是最核心的三个链(Chain) ,它们定义了数据包在本机处理过程中的三个关键路径。下面我会通俗地解释它们的含义和作用:


🔁 总体概念:什么是链(Chain)?

iptables 把数据包的处理过程分为多个"链",每条链就是一组规则,规则之间按顺序匹配。三大最常用的链如下:

链名称 作用方向 数据包路径
INPUT 进入本机 外部数据包 → 本地程序
OUTPUT 从本机发出 本地程序 → 外部网络
FORWARD 本机转发(不处理) 外部设备 → 外部设备(经由本机)

📥 1. INPUT 链

作用:控制访问本机的网络流量

  • 只要是别人访问你(比如你开了一个 web 服务,别人访问你的 80 端口),就会经过 INPUT 链。

  • 适用于:SSH、HTTP、HTTPS、Ping 等所有入站连接。

示例:

bash 复制代码
iptables -A INPUT -p tcp --dport 22 -j ACCEPT

允许其他主机访问本机的 22 端口(SSH)。


📤 2. OUTPUT 链

作用:控制本机发出的流量

  • 当你在本机执行 curl、ping、apt-get、wget、ssh 等命令时,这些"出站"请求都会经过 OUTPUT 链。

示例:

bash 复制代码
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

允许本机访问外部 HTTP(80 端口)网站。


🔀 3. FORWARD 链

作用:控制"路由转发"流量(本机作为中转,不是源也不是目的)

  • 本机如果做了网关、路由器、NAT、VPN、Docker 桥接等转发行为,就会用到 FORWARD 链。

  • 比如一个包从网卡 eth0 进来,经由本机,从网卡 eth1 转出去,就会用到 FORWARD 链。

示例:

bash 复制代码
iptables -A FORWARD -s 192.168.1.0/24 -d 10.0.0.0/24 -j ACCEPT

允许本机转发来自 192.168.1.* 到 10.0.0.* 的流量。


🧠 总结对比

链名称 流量方向 是否发给本机 是否来自本机 示例
INPUT 入站流量 ✅ 是 ❌ 否 别人访问你
OUTPUT 出站流量 ❌ 否 ✅ 是 你访问别人
FORWARD 转发流量 ❌ 否 ❌ 否 本机充当中转(如路由器)
相关推荐
南京码讯光电技术有限公司2 天前
工业5G/4G路由器怎么选?核心参数解析与工业级网关选购指南
网络·智能路由器
feng_you_ying_li3 天前
linux之数据链路层
linux·网络·智能路由器
huainingning7 天前
锐捷10.X路由器版本升级不生效问题排查
运维·网络·智能路由器
huainingning10 天前
Windows syslog日志服务器搭建与模拟器对接
运维·服务器·智能路由器
外收内放10 天前
ENSP学习记录(4)
服务器·学习·智能路由器
半壶清水10 天前
[软考网规考点笔记]-局域网之冗余网关技术
网络·笔记·智能路由器
贝猫说python10 天前
为什么要拆分成 mac 地址和 ip 地址,放一起为什么不行
网络·智能路由器
海绵宝宝转agent10 天前
计网基础知识
网络·笔记·学习·智能路由器
别讲概念11 天前
JavaEE(5)网络原理初识
网络·java-ee·智能路由器
外收内放11 天前
ENSP学习记录(2)
网络·智能路由器