nftables精讲与例子(NAT、限速、限流量、禁ping等例子)

发布时间:2026/7/27 2:55:34

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之旅吧

相关新闻

如何免费解锁九大网盘高速下载?这个开源工具让你告别限速烦恼

如何免费解锁九大网盘高速下载?这个开源工具让你告别限速烦恼

2026/7/27 2:55:34

如何免费解锁九大网盘高速下载?这个开源工具让你告别限速烦恼 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘…

Go语言并发编程:从volatile原理到内存模型与职业发展思考

Go语言并发编程:从volatile原理到内存模型与职业发展思考

2026/7/27 2:55:34

1. 项目概述:从“volatile”到职业焦虑的跨界思考 最近在整理Go语言并发编程的笔记时,我又一次遇到了那个经典且容易引发困惑的问题: “在Go里,什么时候需要用到volatile?” 这个问题看似是纯技术细节,但…

7 月 AI CLI 工具开发总结:从 idea 到可用的 31 天全记录与关键决策

7 月 AI CLI 工具开发总结:从 idea 到可用的 31 天全记录与关键决策

2026/7/27 2:45:34

7 月 AI CLI 工具开发总结:从 idea 到可用的 31 天全记录与关键决策 一、31 天路线图:从混乱到有序的结构化复盘 7 月 1 号我打开 cargo new 的时候,脑子里只有一句话:"我要一个能在终端里直接问 AI 的东西"。31 天后&a…

【2027最新】基于SpringBoot+Vue的课程作业管理系统管理系统源码+MyBatis+MySQL

【2027最新】基于SpringBoot+Vue的课程作业管理系统管理系统源码+MyBatis+MySQL

2026/7/27 3:55:36

博主介绍:💼 毕业设计解决方案 构建完整的毕业设计生态支撑体系,为学生提供从选题到交付的全链路技术服务: 技术选题库 微信小程序生态:精选100个符合市场趋势的前沿选题 Java企业级应用:汇集500个涵盖主流…

自动化消息工具的技术原理与伦理思考

自动化消息工具的技术原理与伦理思考

2026/7/27 3:55:36

1. 项目背景与核心功能解析最近在技术社区看到一个名为"ZuAnBot一键自动发送信息工具"的项目引发了不少讨论。这个工具的核心功能是通过预设脚本实现自动化信息发送,其中包含了一个颇具争议的"随机骂人语录"模块。作为从业十余年的自动化工具开…

硅光子光交换芯片设计:突破数据中心带宽与能耗瓶颈

硅光子光交换芯片设计:突破数据中心带宽与能耗瓶颈

2026/7/27 3:55:36

1. 项目概述在数据中心流量爆炸式增长的今天,传统电互连技术正面临带宽密度和能耗的双重瓶颈。我们团队最近完成的光交换芯片设计项目,正是针对这一行业痛点提出的创新解决方案。这种基于硅光子学的光交换芯片,实测带宽密度达到传统电互连的8…

C++高性能服务器实战:从Reactor模型到内存优化

C++高性能服务器实战:从Reactor模型到内存优化

2026/7/27 3:55:36

1. 项目概述:为什么选择C打造高性能服务器?在当今这个数据爆炸、实时交互需求旺盛的时代,服务器应用的性能直接决定了用户体验和业务天花板。无论是支撑千万级并发的在线游戏、处理高频交易的金融系统,还是需要低延迟响应的物联网…

AI论文降重实战:48小时突破高校检测系统

AI论文降重实战:48小时突破高校检测系统

2026/7/27 3:55:36

1. 论文降重实战背景:当AI检测成为毕业拦路虎去年帮表弟处理毕业论文时,我们遇到了一个棘手问题:他用了某AI写作工具生成的初稿,在Turnitin等查重系统里显示原创度没问题,但学校新增的AI检测模块却给出了90%的AI生成概…

GitLab SSH密钥配置全解析:从非对称加密原理到多密钥管理实战

GitLab SSH密钥配置全解析:从非对称加密原理到多密钥管理实战

2026/7/27 3:45:36

1. 项目概述:从“输入密码”到“自动登录”的本质跨越每次在终端里敲下git push或git pull,看着代码行云流水般与远程仓库同步,你是否想过,为什么我们不再需要反复输入用户名和密码了?这背后默默工作的功臣&#xff0c…

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

[具身智能-649]:个人电脑搭建 RTSP 服务完整方案(Windows / Ubuntu 双平台,适配 RDK X5 rtsp2display 调试)

2026/7/26 0:04:02

目标:电脑作为RTSP 服务端,循环推送 H264/H265 视频流; RDK X5 通过 rtsp2display 拉流预览,完全不需要在开发板编译 live555。 提供两套成熟方案: ✅ 方案 A:FFmpeg(最简单,优先推…

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

PDF合并与动态水印的工程化方案:2026国内免费工具实测对比

2026/7/26 0:04:02

一、背景与测试方案 在实际项目交付中,PDF文件合并与版权保护水印的叠加是一个高频但容易被低估的技术需求。典型的处理链路涉及:多源PDF的文件流合并、页面级水印渲染(含透明度混合与图层叠加)、输出文件体积控制。看似简单的操作…

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

PDF拆分压完图糊了?2026国内免费实测,档案员都在用的组合方案

2026/7/26 0:04:02

说实话,提到PDF拆分再压缩,我真是被折腾得够呛。 上个月公司年度合同归档,一份300多页的PDF总合同,需要按年份拆分成三个独立文件,再分别压缩到10MB以内方便邮件发送各部门确认。我心想这还不简单?先找个海…

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计

2026/7/27 0:05:04

多模态 AI 前端工程——图像上传、压缩与流式返回的协同设计 一、多模态对话的「首字节延迟」:上传与流式的协同鸿沟 多模态 AI 应用的前端体验,往往卡在"首字节延迟"上。用户上传一张图片,提一个问题,然后盯着空白对…

【微科普】网红水晶香薰真相拆解:透明固体香薰并非香精结晶,一文理清各类无火香薰释香机理

【微科普】网红水晶香薰真相拆解:透明固体香薰并非香精结晶,一文理清各类无火香薰释香机理

2026/7/27 0:05:04

文章目录第一章 大众普遍存在的认知误区:水晶香薰是芳香烃结晶产物1.1 聚丙烯酸钠凝胶水晶珠体系(市面占比90%家用水晶香薰)1.2 无机盐硬质结晶载体:泻盐与钾明矾香薰原石1.3 植物多糖与PVA整块果冻型水晶香膏1.4 唯一特例&#x…

优启通3.7修改版:深度优化的PE系统维护工具

优启通3.7修改版:深度优化的PE系统维护工具

2026/7/27 0:05:04

1. 项目概述今天要跟大家分享的是一个经过深度优化的PE工具——优启通3.7(2025修改版)。这个版本是在原版基础上进行了大量功能增强和兼容性改进的12月最新版本,特别适合系统维护人员和电脑爱好者使用。作为一个长期从事IT运维的老兵&#xf…