当前位置:

首页 > 系统应用 > Linux怎么配置NFTables防火墙 Linux下一代防火墙配置详解

Linux怎么配置NFTables防火墙 Linux下一代防火墙配置详解

nftables已取代iptables成为Linux默认防火墙。配置基础过滤表需四步:创建inet表、添加基链并设默认拒绝策略、放行回环接口、允许已建连接。常见问题包括SSH规则因顺序或地址簇选择不当而失效,建议明确限定新连接。规则持久化需导出至/etc/nftables.conf并启用系统服务。调试时可使用counter计数器或log日志来验证规则命中情况

Linux怎么配置NFTables防火墙 Linux下一代防火墙配置详解

提到Linux防火墙,现在绕不开nft了。它已经取代iptables,成为主流发行版的默认选择。别被“下一代防火墙”这个名头唬住,它并非碘伏性的新事物,更像是把旧工具的逻辑彻底重构了一遍,变得更干净、更统一。对于新手来说,最快的学习路径不是啃完所有语法,而是直接动手配置,在操作中理解。

怎么快速建一个能用的 filter 表

大部分场景下,我们只需要管理入站流量,比如只开放SSH端口,其他一概拒绝。这时候,使用inet地址簇是最省心的选择,它能同时处理IPv4和IPv6,避免为两种协议写两套重复的规则。

搭建一个基础防火墙,四步就够了:

  • 创建表:nft add table inet filter
  • 添加基链:nft add chain inet filter input { type filter hook input priority 0 \; policy drop \; }。这里有个细节要注意,末尾的反斜杠和分号是Shell环境下的转义要求。policy drop将默认策略设为拒绝,这是构建安全规则的最佳起点。
  • 放行回环接口:nft add rule inet filter input iifname "lo" accept
  • 允许已建立的连接:nft add rule inet filter input ct state established,related accept(这里的ct是conntrack的缩写)

执行完这四条命令,运行nft list ruleset就能看到完整的规则结构了。不过,这时候SSH还连不上——因为还没有明确放行22端口,这一点和iptables的逻辑是一致的。

为什么 tcp dport 22 accept 有时不生效

一个常见的问题是:明明添加了SSH端口规则,连接却依然失败。nft list ruleset显示规则存在,ss -tlnp | grep :22也确认sshd服务在监听。问题往往出在细节上。

首先,tcp dport 22只匹配TCP协议。虽然极其罕见,但如果客户端的SYN包在传输过程中被某些中间设备修改了协议类型,或者规则中误用了ip protocol tcp这类冗余写法,都可能导致匹配失败。

其次,规则的位置至关重要。nft会按照链内的顺序逐条匹配。如果把一条类似ct state invalid drop的兜底规则放在了SSH规则前面,那么新的连接请求会在匹配到SSH规则之前就被丢弃。

最后,地址簇的选择是个隐形陷阱。如果只在ip(仅IPv4)表里添加规则,而客户端实际通过IPv6连接,规则自然就失效了。这也是为什么一开始就推荐使用inet表。

一个更稳妥的写法是:nft add rule inet filter input tcp dport 22 ct state new accept。它明确限定只放行新连接(SYN包),既精准,又提升了安全性。

nft 规则重启后丢失怎么办

通过命令行添加的规则只存在于内存中,系统重启就会消失。实现持久化,标准路径其实很清晰:

  • 导出规则到文件:nft list ruleset > /etc/nftables.conf
  • 启用系统服务:systemctl enable nftables。这里需要注意,像RHEL 8+或AlmaLinux这类发行版可能默认已启用,而Debian或Ubuntu则需要先手动安装nftables软件包,再启用服务。
  • 检查服务配置:运行systemctl status nftables,确认“Loaded”一行指向的配置文件路径是/etc/nftables.conf。

记住,不要画蛇添足地使用rc.local或自定义脚本去重新加载规则。nftables服务本身就会在启动时读取/etc/nftables.conf文件并载入规则,额外操作反而容易引入错误。另外,/etc/sysconfig/nftables.conf是旧版RHEL/CentOS 7使用的路径,新版本系统已经统一到了/etc/nftables.conf。

日志和调试最实用的三招

当规则不按预期工作时,光查看nft list的输出可能不够,我们需要确认数据包是否真的“走”到了那条规则。下面三个方法非常实用:

  • 使用counter计数器:在规则后加上counter,例如nft add rule inet filter input tcp dport 22 counter accept。之后通过nft list chain inet filter input查看pktcnt(包计数)和bytecnt(字节计数)是否增长,就能直观判断规则是否被命中。
  • 添加log日志记录:使用nft add rule inet filter input tcp dport 22 log prefix "SSH-ATTEMPT: " counter accept。这样匹配的包会被记录到内核日志,通过journalctl -k | grep "SSH-ATTEMPT"命令可以实时观察连接尝试。
  • 结合tcpdump验证:用tcpdump -i any port 22 and host 来确认数据包是否真的到达了本机。再对比nft计数器的数据,就能分辨问题是包被丢弃了,还是根本没匹配上规则。

这里有个关键点:log语句本身不会终止规则的执行,所以它后面必须显式地跟上accept或drop动作。否则,数据包会继续向下匹配,可能被后续的规则意外处理。

说到底,配置nft真正的难点往往不在语法本身,而在于规则顺序、地址簇选择这些设计逻辑,以及忘记了counter和log这两个强大的调试工具。养成一个好习惯:每写完一条关键规则,立刻挂上一个counter验证其是否被命中,这比反复猜测失败原因要高效得多。

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
作者最新文章
系统应用
相关文章 更多
一文盘点近期值得关注的 18 个 NFT 新项目
一文盘点近期值得关注的 18 个 NFT 新项目

律动小编为您盘点比特币、以太坊、Solana和Polygon上近期值得关注的18个NFT新项目。比特币BLOBBLOB绝对是近期最值得关注的比特币项目。除了meme味太浓以外,其团队以及支持该项目的人堪称全明星阵容。BLOB释出的预览图BLOB的这对眼睛真的很meme,在「SENDBLOB」的口号下,这对眼睛被安到了各路人马的脸上,非常具有标志性和记忆点。BLOB眼睛feat.Vitalik,有没有很魔性?Elocremarc是OrdinalsGithub上排名第5的贡献者。他们一直想做一个FreeMin

什么是OCO订单?
什么是OCO订单?

二选一订单(OneCancelstheOther,简称OCO)可让您同时下达两个订单。它结合了限价单和限价止损单,但只能执行其中一个。换句话说,只要其中的限价单被部分或全部成交、止盈止损单被触发,另一个订单将自动取消。请注意,取消其中一个订单也会同时取消另一个订单。在币安交易平台进行交易时,您可以将二选一订单作为交易自动化的基本形式。这个功能可让您选择同时下达两个限价单,从而有助于止盈和最大程度减少潜在损失。如何使用二选一订单?登录您的币安帐户之后,请前往基本交易界面,找到下图所示的交易区域。点击

查看更多
精品专题 更多
装机必备
装机必备

正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

Windows
Windows

正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

PDF教程
PDF教程

正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

Mac软件 更多
Postman macOS版
Postman macOS版
Mac

Postman是一套面向API全生命周期的开发与测试平台,可在Mac上发送和调试多种协议请求,管理集合、环境及认证信息,并完成脚本测试、模拟服务、监控、文档发布和团队协作。它适合开发、测试及运维人员使用,提供个人免费方案。

Docker Desktop macOS版
Docker Desktop macOS版
Mac

Docker Desktop 是 Docker 官方为 Mac 提供的容器开发环境,集成 Docker Engine、命令行工具、Compose、Build、Kubernetes 与图形化管理界面。

Android Studio macOS版
Android Studio macOS版
Mac

Android Studio 是 Google 面向安卓应用开发提供的官方集成开发环境,基于 IntelliJ IDEA 构建。它整合智能代码编辑、Gradle 构建、界面预览、设备模拟、性能分析、调试测试及 APK 分析等工具。

WINDOWS 更多
PixPix 网页版
PixPix 网页版
Windows

PixPix 是面向品牌、卖家和内容团队的在线 AI 图片视频创作平台,提供图视频 Agent、无限画布、图片生成、视频生成、自然语言编辑及商品套图、产品精修和带货视频等电商工具。

Postman Windows版
Postman Windows版
Windows

Postman 是面向 API 全生命周期的开发与协作平台。Windows 桌面版可用于构建和发送 HTTP、GraphQL、gRPC、WebSocket、MQTT 等请求,并提供环境变量、集合、脚本测试、模拟服务、监控、文档及团队工作区等

Docker Desktop Windows版
Docker Desktop Windows版
Windows

Docker Desktop 为 Windows 开发者提供集成式容器环境,内置 Docker Engine、命令行工具、Compose、Build 与 Kubernetes 等组件,可在本机完成镜像构建、容器运行、日志查看和资源管理。