首页/系统/信创系统运维速查/nftables 基础与规则管理
安全加固65 条

nftables 基础与规则管理

nftables 是新内核的包过滤框架,openEuler、较新麒麟已用它承载防火墙;nft 命令交互管理,/etc/nftables.conf 保存持久配置。

信创系统运维速查系统更新于 2026-10-13

nftables 是做什么的

nftables 是较新内核提供的包过滤框架,用统一的 nft 命令替代 iptables、ip6tables、arptables 三套工具,配合 netfilter 内核子系统完成过滤、NAT 与转发。较新的 openEuler 与麒麟版本已用它承载 firewalld 的后端,规则以「表—链—规则」三层组织,规则顺序即匹配顺序。运行时用 nft 命令行管理,持久化配置写入 /etc/nftables.conf 并由 nftables 服务加载。

基本信息

适用平台较新内核 openEuler、麒麟服务器与桌面版本
管理命令nft,支持交互模式与 -f 加载规则文件
持久化/etc/nftables.conf 配合 systemctl enable nftables
语法校验nft -c -f /etc/nftables.conf
兼容命令iptables-nft,把 iptables 规则映射到 nftables 后端

典型使用场景

  • 替代老式 iptables 脚本编写新防火墙策略,用一套语法同时处理 IPv4 与 IPv6
  • 排查 firewalld 放行不生效:直接查看底层 ruleset 确认规则是否真的下发
  • 临时封禁异常来源地址,应急响应时快速阻断外联或横向访问
  • 搭建 NAT 与端口转发,做内网出口或端口映射
  • 审计现有防火墙策略,导出 ruleset 后纳入配置管理与变更评审
  • 容器与虚拟化环境下核对宿主机规则,确认转发与伪装规则符合预期

查看与操作

查看与操作
nft list ruleset                                     # 查看全部表链规则
nft list tables                                      # 只列出所有表
nft list table inet filter                           # 查看指定表
nft add rule inet filter input tcp dport 22 accept   # 追加放行规则到链尾
nft add rule inet filter input ct state established,related accept   # 放行已建立连接
nft -c -f /etc/nftables.conf                         # 只做语法校验不加载
nft list ruleset > /etc/nftables.conf                # 导出为持久配置
systemctl enable --now nftables                      # 开机加载配置

表链规则读法

层级含义常见取值
表 table按协议族划分的规则容器inet 双栈、ip、ip6、arp
链 chain表内的处理链,绑定钩子input、forward、output 与优先级
规则 rule匹配条件加动作tcp dport 22 accept、drop、reject
state连接跟踪状态established、related、new、invalid
handle规则编号删除或插入指定规则时使用
nft 命令行里 add 出来的规则只存在于运行态,重启即丢失;要长期生效必须导出到 /etc/nftables.conf,或直接在配置文件中编写后重启 nftables 服务。
规则按位置顺序匹配,add 默认追加到链尾:如果链前部已有 drop,后面追加的 accept 不会生效;需要精确插位时用 add rule ... position 或 insert。导出覆盖配置文件前先备份,语法错误会导致服务启动失败。

易错点

  • 只在命令行加规则不落盘,重启后策略全部消失,表现为「配了防火墙却形同裸奔」
  • 忽略规则顺序,追加的放行规则被前面的丢弃规则挡住,排查时却以为规则没生效
  • 直接覆盖 /etc/nftables.conf 且未做 nft -c 语法校验,服务启动失败并且可能丢失原有策略
  • 同时维护 firewalld 与手写 nft 规则,两套策略互相覆盖,最终效果与预期不一致

数据来源与参考

  • nftables Wiki(wiki.nftables.org)
  • man 8 nft
  • openEuler 官方文档
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌