保障nftables规则不丢失的关键是规则持久化+版本可追溯+恢复可验证:先执行sudo nft list ruleset > /etc/nftables.conf导出规则,再sudo systemctl enable --now nftables启用服务实现开机自动加载,并通过备份、diff比对和安全规则集兜底确保可恢复性。

保障 nftables 规则集在重启、误操作或故障后不丢失,关键在于**规则持久化 + 版本可追溯 + 恢复可验证**。它不是简单“保存一次”,而是建立一套轻量但可靠的机制。
规则导出与导入:基础备份动作
nftables 本身不自动保存规则到磁盘,所有规则默认仅驻留内存。每次系统重启,规则就清空。
- 导出当前规则:执行
sudo nft list ruleset > /etc/nftables.conf(推荐路径),生成人类可读的完整规则快照 - 导入规则:用
sudo nft -f /etc/nftables.conf即可加载——注意这不是“恢复”,而是覆盖式重载,需确保文件内容正确 - 验证是否生效:运行
sudo nft list ruleset对比前后输出,确认结构一致
开机自动加载:让规则真正“活下来”
仅存文件不够,必须让系统启动时主动加载它。
- 启用 systemd 服务:
sudo systemctl enable --now nftables,该服务默认读取/etc/nftables.conf - 检查服务状态:
systemctl status nftables,确认 Active: active (exited),且无报错日志 - 避免冲突:若旧 iptables 服务仍在运行,建议禁用:
sudo systemctl disable --now iptables ip6tables
版本管理与变更追踪
生产环境里,规则变更是高风险操作。靠人工记“改了哪一行”不可靠,应引入轻量版本控制。
- 每次修改前,先生成带时间戳的备份:
sudo nft list ruleset > /etc/nftables.conf.$(date +%Y%m%d_%H%M) - 用
diff比较差异:diff /etc/nftables.conf.20260612_1430 /etc/nftables.conf,快速定位改动点 - 配合 Git 管理:
git init /etc/nftables.d/ && git add /etc/nftables.conf && git commit -m "allow SSH + drop invalid",实现回滚和审计
安全恢复与应急兜底
万一新规则导致网络中断(比如 INPUT 链策略设为 drop 后忘记放行 SSH),需有快速退路。
- 保留一个最小可用规则集(如仅开放本地回环+SSH)单独存为
/etc/nftables.safe.conf - 设置超时自动回滚脚本(适用于远程维护):
(sleep 60; sudo nft -f /etc/nftables.safe.conf) &,60 秒内无干预即恢复 - 物理/控制台访问时,可直接执行
sudo nft flush ruleset清空规则,再手动加基础链

















