首页/安全/安全加固速查/nftables 基础与持久化(RHEL 9+/Debian 11+ 默认)
防火墙与访问控制50 条

nftables 基础与持久化(RHEL 9+/Debian 11+ 默认)

现代发行版已是 nftables 后端:用 nft 管理规则并持久化到 /etc/nftables.conf,替代 iptables 服务方案。

安全加固速查安全更新于 2026-10-13

新发行版的默认后端

RHEL 9 与 Debian 11 之后的发行版默认使用 nftables:规则用 nft 命令管理,保存到 /etc/nftables.conf,由 nftables 服务在开机时加载。相较 iptables 的链式结构,nftables 用表、链、规则集的层级组织配置,支持一次性原子替换整个规则集,写错时不会出现中间态;旧命令仍可通过兼容层运行,但两套混用会造成混乱。

基本信息

适用平台Linux(RHEL 9+/Debian 11+/Ubuntu 22.04+ 等)
核心命令nft list ruleset、nft -f、nft add/delete
配置文件/etc/nftables.conf
服务systemctl enable --now nftables
基线规则集显式持久化并纳入配置管理

典型使用场景

  • 新系统加固:直接按 nftables 语法编写规则集
  • 从 iptables 迁移:把规则翻译后统一到 nft 一套口径
  • 原子变更:用 nft -f 一次性加载完整规则集,避免中间态暴露
  • 备份与审计:导出规则集文本纳入版本控制
  • 容器与网桥场景:用 inet 表同时处理 IPv4 与 IPv6

查看与应用

查看与应用
nft list ruleset                     # 查看全部表与链
nft -f /etc/nftables.conf            # 一次性加载规则集
systemctl enable --now nftables      # 开机自动加载
nft list ruleset | tee /root/nft-backup-$(date +%F).ruleset   # 备份规则集
nft -c -f /etc/nftables.conf         # 只检查语法不加载,变更前用
systemctl status nftables --no-pager | head -5

最小骨架示例

最小骨架示例
table inet filter {
  chain input { type filter hook input priority 0; policy drop;
    ct state established,related accept   # 放行已建立连接的回包
    iif lo accept                         # 放行本机回环
    tcp dport 22 accept                   # 管理端口
    tcp dport 443 accept                  # 业务端口
  }
  chain forward { type filter hook forward priority 0; policy drop; }
  chain output { type filter hook output priority 0; policy accept; }
}

结构逐层读法

层级含义注意点
table规则集的容器,可按协议族划分inet 表同时处理 IPv4 与 IPv6
chain规则列表与挂载点hook 与 priority 决定生效位置
rule匹配条件与动作按顺序匹配,先命中先生效
policy链的默认动作input 建议 drop,output 按需
ct state连接跟踪状态放行 established,related 才不回包丢
同一台机器上不要混用 nft 与 iptables 命令改同一规则集:两套前端各自记账,容易互相覆盖,排障时以 nft list ruleset 的实际输出为准。

落地要点

  • 变更前先 nft -c -f 校验语法,再实际加载
  • nft list ruleset 的输出可直接作为备份,但恢复时注意计数器差异,必要时先清理
  • 规则集纳入版本控制,变更留痕,便于回溯
  • 迁移时确认 iptables 兼容层是否还被其它脚本使用,避免双写
  • IPv6 规则不要遗漏:inet 表写法能一并覆盖,避免只保护 IPv4
部分发行版默认没有启用 nftables 服务,但内核模块已加载:规则需要显式持久化,不能依赖内存中的临时状态。

易错点

  • 直接 nft -f 加载未校验的规则:语法错误导致规则集部分生效,状态难以判断
  • 与 iptables 命令混用:两套前端互相覆盖,现象与预期不符
  • 只写 IPv4 规则:IPv6 路径未受保护,等于开了一扇侧门
  • 不启用持久化服务:重启后规则集清空,防护消失且不易立刻发现

数据来源与参考

  • nft(8) 手册
  • Red Hat 文档:nftables 迁移
  • Debian Wiki:nftables

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌