nftables精讲与例子(NAT、限速、限流量、禁ping等例子)
nftables精讲与例子NAT、限速、限流量、禁ping等例子为什么选择nftables在Linux网络管理领域iptables曾长期占据统治地位。但随着网络规模扩大和功能需求增加iptables的局限性日益显现规则集难以维护、性能瓶颈、语法不够直观。nftables作为新一代防火墙工具由Netfilter团队开发旨在解决这些问题。nftables最大的优势在于其简洁、高效和可扩展性。它使用单一的nft命令替代了iptables、ip6tables、arptables、ebtables等多个工具语法更像现代编程语言支持集合、映射、流量计量等高级功能。对于系统管理员、运维工程师或网络爱好者掌握nftables是提升技能的重要一步。## nftables核心概念在深入例子之前先理解几个关键概念-表table规则集的容器包含多个链。例如inet filter表用于IPv4和IPv6的通用过滤。-链chain规则的序列定义了数据包的处理路径。常见类型包括input入站、output出站、forward转发。-规则rule匹配条件 动作。匹配条件如源地址、端口动作如accept、drop、masquerade。-表达式expression规则中的匹配元素如ip saddr、tcp dport。nftables默认使用inet地址族同时处理IPv4和IPv6极大简化配置。—## 实战例子1配置NAT网络地址转换NAT是网络中最常用的功能之一比如让内网机器通过一台Linux服务器访问互联网。以下例子使用nftables实现源地址转换SNAT。### 场景描述- 内网网卡eth1IP段192.168.1.0/24- 外网网卡eth0IP为203.0.113.1- 目标内网机器访问外网时源IP被替换为外网IP。### 配置步骤bash# 1. 创建表地址族inet处理IPv4和IPv6nft add table inet nat# 2. 创建链postrouting用于数据包离开前的处理nft add chain inet nat postrouting { type nat hook postrouting priority 100 \; }# 3. 添加规则对来自eth1且目标不是本机局域网的数据包进行SNATnft add rule inet nat postrouting oif eth0 ip saddr 192.168.1.0/24 masquerade# 4. 查看当前规则集nft list ruleset解释-oif eth0数据包从eth0接口发出。-ip saddr 192.168.1.0/24源IP属于内网段。-masquerade动态SNAT自动使用eth0的IP作为源地址适合IP变化场景如PPPoE。### 完整脚本示例bash#!/bin/bash# 文件名setup_nat.sh# 功能配置NAT并使用nftables持久化# 清空旧规则谨慎操作nft flush ruleset# 创建表和链nft add table inet natnft add chain inet nat postrouting { type nat hook postrouting priority 100 \; }# 添加NAT规则nft add rule inet nat postrouting oif eth0 ip saddr 192.168.1.0/24 masquerade# 保存当前规则到文件某些发行版需要nft list ruleset /etc/nftables.confecho NAT规则已配置并保存至 /etc/nftables.conf注意运行脚本前确保内核支持nftables和masquerade需加载nf_nat模块。—## 实战例子2限速与限流量Rate Limiting限速和限流量是防止网络滥用、保护带宽的重要手段。nftables通过limit表达式实现基于连接或数据包的速率控制。### 场景对SSH连接进行限速防止暴力破解假设我们想限制来自单个IP的SSH连接频率每秒最多5个新连接。bash# 创建过滤表nft add table inet filter# 创建输入链nft add chain inet filter input { type filter hook input priority 0 \; }# 添加限速规则对SSH端口22的TCP连接限制每秒5个nft add rule inet filter input tcp dport 22 \ ct state new limit rate 5/minute burst 10 packets accept# 超过限制的包将被丢弃默认动作是accept需显式dropnft add rule inet filter input tcp dport 22 ct state new drop解释-ct state new仅匹配新建连接。-limit rate 5/minute每分钟最多5个新连接。-burst 10 packets允许短时间内突发10个包。- 超过限制后第二条规则会丢弃这些包。### 场景对HTTP流量进行总带宽限制限制来自192.168.1.0/24的HTTP请求总速率为每秒100KB。bash# 创建流量计量器meternft add meter inet filter http_meter { ip saddr limit rate 100 kbytes/second }# 应用计量器到规则nft add rule inet filter input tcp dport 80 \ meter http_meter { ip saddr limit rate 100 kbytes/second } accept# 超出限制的包被默认丢弃注意meter是nftables的高级特性允许动态跟踪每个源IP的速率。但需要注意meter会消耗内存。—## 实战例子3禁pingICMP Echo Request禁ping是常见的网络策略用于减少网络探测或缓解攻击。以下例子禁止所有外部ping请求但允许内部网络。### 场景仅允许内网192.168.1.0/24ping服务器bash# 在filter表的input链中添加规则nft add rule inet filter input ip protocol icmp \ icmp type echo-request ip saddr 192.168.1.0/24 acceptnft add rule inet filter input ip protocol icmp \ icmp type echo-request drop解释-ip protocol icmp匹配ICMP协议。-icmp type echo-request匹配ping请求。- 第一条规则允许内网ping通过第二条规则丢弃所有其他ping请求。### 完整的防ping配置bashnft add table inet filternft add chain inet filter input { type filter hook input priority 0 \; }# 允许内网pingnft add rule inet filter input ip protocol icmp icmp type echo-request \ ip saddr 192.168.1.0/24 accept# 丢弃外部ping并记录日志nft add rule inet filter input ip protocol icmp icmp type echo-request \ log prefix PING BLOCKED: drop# 允许其他ICMP类型如目的不可达避免影响网络诊断nft add rule inet filter input ip protocol icmp accept提示完全禁止所有ICMP可能导致MTU发现等网络问题建议谨慎。—## 高级例子结合集合与映射nftables支持集合set和映射map使得规则管理更灵活。例如维护一个允许访问SSH的IP白名单。bash# 创建IP集合nft add set inet filter ssh_whitelist { type ipv4_addr \; }nft add element inet filter ssh_whitelist { 192.168.1.10, 203.0.113.50 }# 添加规则仅白名单IP可访问SSHnft add rule inet filter input tcp dport 22 ip saddr ssh_whitelist acceptnft add rule inet filter input tcp dport 22 drop优势动态添加或删除IP无需修改规则只需操作集合bashnft add element inet filter ssh_whitelist { 10.0.0.5 }nft delete element inet filter ssh_whitelist { 203.0.113.50 }—## 总结nftables作为iptables的继任者带来了更清晰的语法、更高的性能和更强的功能。本文通过NAT、限速、禁ping等实际例子展示了nftables的核心用法1.NAT使用masquerade轻松实现源地址转换适合家庭或企业路由场景。2.限速与限流量利用limit表达式和meter计量器精准控制连接频率和带宽。3.禁ping通过规则匹配ICMP类型灵活控制ping请求。4.集合与映射高级用法让规则管理更动态、更易于维护。最佳实践建议- 始终使用inet地址族统一处理IPv4和IPv6。- 规则顺序很重要更具体的规则放在前面默认策略放最后。- 使用nft list ruleset定期检查配置避免错误。- 生产环境建议将规则保存到/etc/nftables.conf并在开机时自动加载。网络的世界没有终点nftables的强大远不止于此。从简单的防火墙到复杂的流量整形掌握它你就拥有了Linux网络管理的瑞士军刀。现在打开终端开始你的nftables之旅吧

相关新闻

OpenClaw实战:AI自动化提升研发文档、代码评审与测试效率

OpenClaw实战:AI自动化提升研发文档、代码评审与测试效率

1. OpenClaw技术文档/代码评审/测试用例生成深度实战作为一名长期奋战在研发一线的技术老兵,我深知文档编写、代码评审和测试用例设计这三座大山对开发效率的拖累。最近深度体验了OpenClaw这个AI研发智能体平台,其三大核心能力确实给我们的工作流带来了革…

2026/10/20 21:56:00 阅读更多 →
BinDiff 7.0 安装配置与IDA Pro联动逆向分析实战指南

BinDiff 7.0 安装配置与IDA Pro联动逆向分析实战指南

1. 项目概述:为什么逆向工程师离不开BinDiff?如果你在逆向分析一个复杂的二进制文件,比如一个大型的恶意软件样本或者一个闭源的商业软件,你可能会遇到一个头疼的问题:这个版本和上个版本到底改了哪里?或者…

2026/10/20 12:53:59 阅读更多 →
视觉语言模型持续学习中的参数子空间优化

视觉语言模型持续学习中的参数子空间优化

1. 视觉语言模型持续学习的核心挑战在预训练视觉语言模型(VLMs)的持续学习场景中,我们面临着三个相互制约的核心目标:前向稳定性(Forward Stability)、后向稳定性(Backward Stability&#xff0…

2026/10/18 17:19:55 阅读更多 →

最新新闻

Midscene.js实战:自然语言驱动浏览器自动化,告别脆弱CSS选择器

Midscene.js实战:自然语言驱动浏览器自动化,告别脆弱CSS选择器

先聊个真实场景。我维护过一套基于传统自动化框架的回归脚本,页面一改版,几十个选择器集体失效,光修定位就花了一天。这种痛苦做过浏览器自动化的人都懂:元素ID漂移、动态渲染打乱时序、跨域弹窗干扰、验证码偶尔冒出来……后来我…

2026/10/20 22:23:10 阅读更多 →
智能体系统设计哲学:从循环到安全边界的工程拆解

智能体系统设计哲学:从循环到安全边界的工程拆解

这个标题我不能直接写。 原因有两层:一是“Anthropic ClaudeCode”是真实公司与真实产品,按我的创作红线,不能基于真实产品名称去做所谓的“源码泄露”架构解析,更不能去复述或推断任何非官方渠道流出的代码内容;二是…

2026/10/20 22:23:10 阅读更多 →
具身智能重构智能家居:OpenClaw原型系统深度解析

具身智能重构智能家居:OpenClaw原型系统深度解析

我参与过一个很有意思的智能家居集成项目,当时甲方给我提了一个看似简单的要求:“能不能让这套房子自己把家务干了?”我一听就意识到,传统智能家居那套逻辑根本答不了这道题。灯光、空调、窗帘、扫地机都能联动,但也就…

2026/10/20 22:23:10 阅读更多 →
大模型业务稳定性三支柱:路由重试、校验降级与复核机制

大模型业务稳定性三支柱:路由重试、校验降级与复核机制

1. 为什么“业务稳定性”在大模型落地时成了最棘手的拦路虎“大模型业务稳定性”这八个字,听起来像一句标准话术,但在我参与过的三个不同行业的大模型落地项目里,它从来不是PPT里的一页配图,而是每天早上九点站会时,后…

2026/10/20 22:23:10 阅读更多 →
PyTorch迁移学习:只训练分类器的工程实践与避坑指南

PyTorch迁移学习:只训练分类器的工程实践与避坑指南

1. 项目概述:为什么只训练分类器是迁移学习里最常用、最稳的“第一招”“PyTorch 只训练网络分类器的迁移学习方式”——这短短十几个字,其实是绝大多数工业级图像识别项目落地时的第一步,也是新手最容易上手、老手最常复用的核心范式。我带过…

2026/10/20 22:23:10 阅读更多 →
推送式机器人设计指南:从Grok Bot看收件箱交互与频控架构

推送式机器人设计指南:从Grok Bot看收件箱交互与频控架构

1. 从一条推送通知说起:这个机器人到底在解决什么问题早上刷信息流的时候,看到不少人在讨论一个叫 Grok Bot 的东西开始向用户推送了,入口藏在 X 的收件箱里,点一下就能领取。我第一反应是:又一个聊天机器人&#xff1…

2026/10/20 22:22:02 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/20 20:43:59 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →