nftables规则开机自启需将当前规则保存至/etc/nftables.conf并启用nftables.service:先检查服务状态和配置文件存在性,执行sudo nft list ruleset > /etc/nftables.conf导出规则,再sudo systemctl enable --now nftables启用服务,最后验证规则是否一致。

确认 nftables 服务已启用且配置文件存在
现代主流发行版(如 Debian 12+、Ubuntu 22.04+、RHEL 9+/CentOS Stream)默认已安装 nftables 并提供 `/etc/nftables.conf` 模板。先检查:
- 执行 sudo systemctl status nftables,若显示 inactive (dead),说明服务未启用
- 运行 ls -l /etc/nftables.conf,确认该文件存在(通常含注释示例,可能被注释掉的 include 行)
- 若文件不存在,可手动创建:sudo touch /etc/nftables.conf
将当前规则导出为标准配置文件
不要手动拼写规则——用 nft list ruleset 查看当前所有规则,再用 nft list ruleset -a(带句柄)便于调试;但持久化必须用 nft list ruleset 的输出直接覆盖配置文件:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 执行:sudo nft list ruleset > /etc/nftables.conf
- 这会生成符合语法的完整规则集,包含表、链、规则等全部结构
- 注意:如果此前用过
include方式组织规则(如分文件管理),需确保主配置中include路径正确,且被包含文件也已存在
启用 systemd 服务并验证加载逻辑
nftables.service 默认行为就是读取 `/etc/nftables.conf` 并执行 nft -f 加载。只需确保服务启用:
- 启用开机自启:sudo systemctl enable nftables
- 立即加载当前配置:sudo systemctl restart nftables
- 验证是否成功:sudo nft list ruleset 应与之前一致;sudo systemctl status nftables 显示 active (exited) 表示加载完成(不是运行中服务,而是“执行完就退出”的设计)
常见问题排查要点
规则没生效?多数卡在这几个地方:
- firewalld 或 iptables 服务仍在运行:它们会冲突。停用并禁用:sudo systemctl disable --now firewalld iptables ip6tables
- /etc/nftables.conf 权限错误:应为 root:root,644 权限。修复:sudo chmod 644 /etc/nftables.conf && sudo chown root:root /etc/nftables.conf
-
规则顺序或策略导致拦截:比如 INPUT 链 policy 是 drop,但忘了放行 SSH(端口 22)或 established 连接。建议在保存前先加好基础规则:
nft add rule inet filter input ct state established,related acceptnft add rule inet filter input iifname "lo" acceptnft add rule inet filter input tcp dport 22 ct state new accept










