[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、FORWARDiptable_filter
nat实现网络地址转换(NAT)PREROUTING、POSTROUTING、OUTPUTiptable_nat
mangle修改数据包属性(如 TTL、标记)所有 5 条链(INPUT、OUTPUT、FORWARD、PREROUTING、POSTROUTING)iptable_mangle
raw关闭连接追踪(提高性能)PREROUTING、OUTPUTiptable_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 防火墙技术看似复杂,但核心是 “通过规则控制数据包流向”。只要理清表、链、规则的逻辑,多动手实践,就能快速上手,为系统搭建坚实的安全屏障。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/917195.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/917195.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

函数fdopendir的用法

以下是关于 fdopendir 函数的详细解析,结合其核心功能、参数说明及典型应用场景:🔍 ‌一、函数功能与原型‌‌核心作用‌将已打开的目录文件描述符(fd)转换为目录流指针(DIR*),用于后…

[源力觉醒 创作者计划]_文心4.5开源测评:国产大模型的技术突破与多维度能力解析

声明:文章为本人真实测评博客,非广告,并没有推广该平台 ,为用户体验文章 一起来轻松玩转文心大模型吧👉 文心大模型免费下载地址 一、引言:文心4.5开源——开启多模态大模型新时代 2025年6月30日&#x…

微信小程序无法构建npm,可能是如下几个原因

安装位置的问题,【npm安装在cd指定位置】小程序缓存的问题退出小程序,重新构建即可

从 MyBatis 到 MyBatis - Plus:@Options 注解的那些事儿

在 MyBatis 以及 MyBatis - Plus 的开发过程中,注解的使用是提升开发效率和实现特定功能的关键。今天我们就来聊聊 Options 注解,以及在 MyBatis - Plus 中它的使用场景和替代方案。 一、MyBatis 中的 Options 注解 在 MyBatis 框架中,Option…

转换图(State Transition Diagram)和时序图(Sequence Diagram)画图流程图工具

针对程序员绘制状态转换图(State Transition Diagram)和时序图(Sequence Diagram)的需求,以下是一些好用的工具推荐,涵盖在线工具、桌面软件和基于文本的工具,适合不同场景和偏好。这些工具在易…

基于php的在线酒店管理系统(源代码+文档+PPT+调试+讲解)

课题摘要在旅游住宿行业数字化转型的背景下,传统酒店管理存在房态更新滞后、预订渠道分散等问题。基于 PHP 的在线酒店管理系统,凭借其开发高效、兼容性强的特点,构建集客房管理、预订处理、客户服务于一体的综合性管理平台。 系统核心功能包…

视频质量检测中卡顿识别准确率↑32%:陌讯多模态评估框架实战解析

原创声明本文为原创技术解析,核心技术参数与架构设计引用自《陌讯技术白皮书》,禁止未经授权的转载与改编。一、行业痛点:视频质量检测的现实挑战在实时流媒体、在线教育、安防监控等领域,视频质量直接影响用户体验与业务可信度。…

流式输出阻塞原因及解决办法

流式输出不懂可看这篇文章:流式输出:概念、技巧与常见问题 正常情况,如下代码所示: async def event_generator():# 先输出数字1yield "data: 1\n\n"# 然后每隔2秒输出数字2,共输出10次for i in range(10):…

linux系统----Ansible中的playbook简单应用

目录 Playbooks中tasks语法使用 1、file 创建文件:touch 创建目录:directory 2、lineinfile 修改文件某一行文本 3、replace 根据正则表达式替换文件内容(指定换字符串) 5、template/copy 模板作用类似于copy&#xff0…

bmcweb工作流程

在openbmc中,bmcweb是一个web服务程序,类似于lighttpd,提供web服务。本文将简单介绍这个服务进程的执行流程。 bmcweb的入口函数main(). main() -> run() run()先注册routes,最后调用app.run(). 第一个注册的route为crow::webassets:requestRoutes(). crow::webasse…

伞状Meta分析重构癌症幸存者照护指南:从矛盾证据到精准决策

还记得你第一次做出Meta分析时的成就感吗?那种从海量文献中抽丝剥茧,最终得出可靠结论的感觉,简直不要太爽!但是,时代在进步,科研在卷动,Meta分析也有它的"升级版"——伞状Meta分析&a…

IOMMU Client设备DMA配置过程分析(九)

1.设备树 cp0_pcie0是一个PCIe RC控制器,使用SMMU将PCIe设备的IOVA转换成物理地址,使用iommu-map-mask和iommu-map定义PCIe设备使用的Stream ID。设备树定义如下所示。 [arch/arm64/boot/dts/marvell/armada-ap80x.dtsi] smmu: iommu100000 {compatibl…

使用node-cron实现Node.js定时任务

1. 简介 node-cron 是一个轻量级的Node.js库,用于在指定时间或间隔执行任务。它是Unix系统cron工具的JavaScript实现,适用于需要定时执行脚本的场景(如数据备份、定期爬虫等)。 2. 安装 npm install node-cron # 或 yarn add node…

前缀和-525.连续数组-力扣(LeetCode)

一、题目解析1、只包含0、1的二进制数组2、找到含有相同数量的0和1,并返回其子数组长度二、算法原理解法1:暴力枚举 时间复杂度O(N^2)解法2:前缀和哈希表对于统计子数组中的0和1的数量有点困难,我们可以将其转化一下转化&#xff…

汽车电子控制系统开发的整体安全理念

1. 摘要在汽车制造商和一级供应商避免责任的背景下,公认的技术规则作为法律要求的标准具有重要的实际意义。道路车辆电子控制单元的安全性目前主要通过 ISO 26262 的要求和流程来保障。特别是随着道路交通自动化程度的不断提高以及现代车辆随之而来的复杂性&#xf…

IDEA重新安装常用设置

IDEA重新安装常用设置 展示固定导航栏 项目构建和运行操作委托给maven 参考:IDEA build委托到Maven build

微服务的编程测评系统9-竞赛新增-竞赛编辑

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录前言1. 竞赛新增1.1 竞赛基本信息增加-后端开发1.2 竞赛新增题目-后端1.3 竞赛基本信息-前端1.4 竞赛新增题目-前端2. 竞赛编辑2.1 竞赛详情-后端2.2 竞赛详情-前端2…

《零基础入门AI:线性回归进阶(梯度下降算法详解)》

在上一篇博客中,我们学习了线性回归的基本概念、损失函数(如MSE)以及最小二乘法。最小二乘法通过求解解析解(直接计算出最优参数)的方式得到线性回归模型,但它有一个明显的局限:当特征数量很多时…

基于C语言实现的KV存储引擎(一)

基于C语言实现的KV存储引擎项目简介整体架构网络模块的实现recatorproactorNtyco项目简介 本文主要是基于 C 语言来实现一个简单的 KV 存储架构,目的就是将网络模块跟实际开发结合起来。 首先我们知道对于数据的存储可以分为两种方式,一种是在内存中进…

c++和python联合编程示例

安装 C与 Python 绑定工具 pip install pybind11这其实相当于使用 python 安装了一个 c的库 pybind11,这个库只由头文件构成, 支持基础数据类型传递以及 python 的 numpy 和 c的 eigen 库之间的自动转换。 编写 CMakeList.txt cmake_minimum_required(VERSION 3.14)…