[Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables
目录
一、防火墙基础:netfilter 与 iptables 的关系
1️⃣什么是 netfilter?
2️⃣什么是 iptables?
二、iptables 核心:五链四表与规则体系
1️⃣什么是 “链”(Chain)?
2️⃣ 什么是 “表”(Table)?
3️⃣规则与动作:数据包的 “处理指令”
常用动作(Target):
三、iptables 数据包匹配流程:数据是如何 “闯关” 的?
1️⃣表的处理顺序
2️⃣链的处理顺序:按数据包流向区分
3️⃣链内规则的匹配逻辑
四、新一代防火墙:nftables 的崛起
1️⃣nftables 的核心优势
2️⃣支持 nftables 的 Linux 发行版
3️⃣基本操作命令
五、总结:学习路径与应用建议
对于 Linux 初学者来说,防火墙是保障系统网络安全的核心工具。无论是限制非法访问、管理端口权限,还是实现内外网通信,都离不开防火墙技术。
一、防火墙基础:netfilter 与 iptables 的关系
在学习具体工具前,我们需要先理清两个核心概念:netfilter和iptables,这是理解 Linux 防火墙的基础。
1️⃣什么是 netfilter?
netfilter 是 Linux 内核中的 “安全框架”,属于内核空间(Kernel Space)。它就像系统内部的 “交通指挥中心”,在网络数据包经过协议栈的关键位置(称为 “钩子点”)注册了处理函数,负责抓取数据包、匹配规则并执行处理动作(如允许、拒绝)。
简单说,netfilter 是 “真正干活的”,它具备三大核心功能:
- 网络地址转换(NAT):修改数据包的源 / 目的 IP 或端口;
- 数据包内容修改:如调整 TTL(生存周期)、TOS(服务类型);
- 数据包过滤:决定是否允许数据包通过。
2️⃣什么是 iptables?
iptables 并非真正的防火墙,而是一个位于用户空间的命令行工具。它的作用是 “翻译” 管理员的配置(规则),并将这些规则传递给内核中的 netfilter 框架。
打个比方:如果 netfilter 是 “工厂生产线”,iptables 就是 “操作面板”—— 管理员通过 iptables 设置规则,netfilter 则按照规则处理数据包。
iptables 的核心功能是:
- 控制进出系统的数据包流向(过滤);
- 实现网络地址转换(NAT);
- 自定义安全策略,增强系统安全性。
二、iptables 核心:五链四表与规则体系
iptables 的规则管理依赖 “表” 和 “链” 的分层结构,这是它的核心设计。理解 “五链四表”,就能掌握 iptables 的大半逻辑。
1️⃣什么是 “链”(Chain)?
链是规则的 “容器”,相当于数据包经过的 “关卡”。Linux 内核预设了 5 条链,分别对应数据包在网络流程中的 5 个关键节点:
链名称 | 作用场景 | 核心功能 |
---|---|---|
INPUT | 数据包目标是防火墙本机(入站) | 控制哪些数据包能进入本机(如限制 SSH 访问),管理ICMP数据包(如ping请求) |
OUTPUT | 数据包由防火墙本机发出(出站) | 控制本机能发送哪些数据包(如禁止访问特定 IP) |
FORWARD | 数据包需要经防火墙转发到其他地址 | 管理内网到外网、或不同网段间的转发(如端口映射),允许转发来自特定源IP地址的TCP端口80(HTTP)的数据包 |
PREROUTING | 数据包进入系统后,路由选择前 | 主要用于目标地址转换(DNAT,如外部访问内网服务),将数据包的目标地址从公网地址转换为私有地址,用于实现NAT网关功能 |
POSTROUTING | 数据包经过路由选择后,发送到网络接口前 | 主要用于源地址转换(SNAT,如内网共享公网 IP 上网),将内部私有IP地址转换为公网IP地址,实现内部网络访问互联网的功能 |
2️⃣ 什么是 “表”(Table)?
表是 “功能相同的规则集合”,相当于给规则 “分类归档”。iptables 预设了 4 种表,每种表对应特定功能:
表名称 | 功能描述 | 包含的链 | 内核模块 |
---|---|---|---|
filter | 最常用,负责数据包过滤(允许 / 拒绝) | INPUT、OUTPUT、FORWARD | iptable_filter |
nat | 实现网络地址转换(NAT) | PREROUTING、POSTROUTING、OUTPUT | iptable_nat |
mangle | 修改数据包属性(如 TTL、标记) | 所有 5 条链(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING) | iptable_mangle |
raw | 关闭连接追踪(提高性能) | PREROUTING、OUTPUT | iptable_raw |
3️⃣规则与动作:数据包的 “处理指令”
规则是管理员定义的 “条件 + 动作”:当数据包满足条件(如源 IP、端口、协议)时,执行预设动作。
常用动作(Target):
- ACCEPT:允许数据包通过,继续后续流程;
- DROP:直接丢弃数据包,不回复(客户端会等待超时);
- REJECT:拒绝数据包,并向客户端发送 “拒绝响应”;
- SNAT:修改源 IP(如内网 IP→公网 IP,解决多设备共享上网);
- DNAT:修改目标 IP(如公网 IP→内网服务器 IP,实现外部访问内网服务);
- MASQUERADE:SNAT 的特殊形式,适用于公网 IP 动态变化的场景(如拨号上网);
- LOG:将数据包信息记录到
/var/log/messages
,不中断后续规则匹配。
注意:除 LOG 外,其他动作匹配后会 “停止后续规则检查”,因此规则顺序极其重要(先严格后宽松)。
三、iptables 数据包匹配流程:数据是如何 “闯关” 的?
数据包进入系统后,会按固定顺序经过表和链的检查,这个流程是理解 iptables 的关键。
1️⃣表的处理顺序
当数据包到达时,表的检查顺序固定为:
raw表 → mangle表 → nat表 → filter表
2️⃣链的处理顺序:按数据包流向区分
根据数据包的 “去向”(入站、出站、转发),链的检查顺序不同:
-
入站数据(目标是本机):
PREROUTING链(raw→mangle→nat) → 路由选择 → INPUT链(mangle→filter) → 本机应用
-
出站数据(本机发出):
本机应用 → OUTPUT链(raw→mangle→nat→filter) → 路由选择 → POSTROUTING链(mangle→nat)
-
转发数据(经本机转发):
PREROUTING链(raw→mangle→nat) → 路由选择 → FORWARD链(mangle→filter) → POSTROUTING链(mangle→nat)
3️⃣链内规则的匹配逻辑
每条链中的规则按 “从上到下” 顺序检查:
- 一旦匹配到规则(除 LOG 外),立即执行动作并停止检查后续规则;
- 若所有规则都不匹配,则按链的 “默认策略” 处理(通常是 ACCEPT 或 DROP)。
四、新一代防火墙:nftables 的崛起
iptables 虽然经典,但存在一些局限:规则管理复杂、IPv4/IPv6 需分开配置、大规模规则下性能下降等。为此,Linux 推出了新一代工具 ——nftables。
1️⃣nftables 的核心优势
nftables 是内核中的新框架,目标是替代 iptables、ip6tables 等分散工具,它的改进主要体现在:
- 统一管理:一个
nft
命令即可处理 IPv4、IPv6、ARP、网桥等所有类型的数据包,告别工具混乱; - 更灵活的表与链:表需指定 “地址族”(如 ip、ip6、inet 同时支持 IPv4/IPv6),链需指定 “类型”(filter/nat)和 “钩子点”(如 prerouting),并可自定义优先级;
- 简洁语法:规则更接近自然语言,例如 “允许来自 192.168.1.0/24 的 SSH 访问” 可直接表达;
- 高级数据结构:内置集合(Sets)、映射(Maps)等,支持高效匹配大量 IP / 端口(无需依赖外部工具);
- 事务性操作:规则修改要么全成功,要么全回滚,避免中间状态不一致。
2️⃣支持 nftables 的 Linux 发行版
nftables 自 Linux 3.13 内核引入,目前主流发行版已广泛支持:
- Ubuntu 20.04+、Debian 9 + 默认支持;
- Fedora 22+、Arch Linux 默认支持;
- CentOS 8/RHEL 8 + 默认通过 firewalld 基于 nftables 运行。
3️⃣基本操作命令
- 查看内核版本:
uname -r
(确认是否支持 nftables); - 查看 nftables 服务状态:
systemctl status nftables
; - 切换 iptables 到 nftables 模式(部分系统):
sudo update-alternatives --set iptables /usr/sbin/iptables-nft
。
五、总结:学习路径与应用建议
对于初学者,建议按以下步骤学习:
- 先掌握 iptables 的基础:理解 netfilter 与 iptables 的关系,牢记 “五链四表” 的功能和应用场景;
- 实践规则配置:从简单的端口过滤(如允许 SSH、禁止 ping)开始,逐步尝试 NAT 转换;
- 了解 nftables 的优势:作为新一代工具,它是未来趋势,掌握其基本概念即可应对进阶需求。
Linux 防火墙技术看似复杂,但核心是 “通过规则控制数据包流向”。只要理清表、链、规则的逻辑,多动手实践,就能快速上手,为系统搭建坚实的安全屏障。