[Linux入门] Linux 防火墙技术入门:从 iptables 到 nftables

发布于:2025-08-02 ⋅ 阅读:(16) ⋅ 点赞:(0)

目录

一、防火墙基础: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

五、总结:学习路径与应用建议

对于初学者,建议按以下步骤学习:

  1. 先掌握 iptables 的基础:理解 netfilter 与 iptables 的关系,牢记 “五链四表” 的功能和应用场景;
  2. 实践规则配置:从简单的端口过滤(如允许 SSH、禁止 ping)开始,逐步尝试 NAT 转换;
  3. 了解 nftables 的优势:作为新一代工具,它是未来趋势,掌握其基本概念即可应对进阶需求。

Linux 防火墙技术看似复杂,但核心是 “通过规则控制数据包流向”。只要理清表、链、规则的逻辑,多动手实践,就能快速上手,为系统搭建坚实的安全屏障。


网站公告

今日签到

点亮在社区的每一天
去签到