温馨提示×

ubuntu iptables为何无法保存

小樊
76
2026-09-09 22:24:04
栏目: 智能运维

在 Ubuntu 上 iptables 规则“无法保存”,通常不是 iptables 本身的问题,而是保存方式或系统机制不对。下面按常见原因和正确做法说明。


一、最常见原因:你用的是 iptables,但系统用的是 nftables

现象

  • iptables-save 能看到规则
  • 重启后规则没了
  • 或 iptables 实际是 nftables 的兼容层

检查

ls -l /usr/sbin/iptables

如果看到:

iptables -> /etc/alternatives/iptables

再查:

update-alternatives --list iptables

可能包含:

  • iptables-legacy
  • iptables-nft

✅ Ubuntu 20.04+ 默认使用 nftables


二、正确的保存方式(按你用的是哪种)

✅ 方案 1:使用 iptables-legacy(传统方式)

如果你明确想用传统 iptables:

1. 切换为 legacy

sudo update-alternatives --set iptables /usr/sbin/iptables-legacy
sudo update-alternatives --set ip6tables /usr/sbin/ip6tables-legacy

2. 保存规则

sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6

3. 安装并启用保存服务

sudo apt install iptables-persistent

安装时会问是否保存当前规则,选 Yes

开机自动恢复:

sudo systemctl enable netfilter-persistent

✅ 这是最常用、最稳定的方式


✅ 方案 2:你其实在用 nftables(推荐)

如果你不需要“必须用 iptables”,建议直接用 nftables

保存

sudo nft list ruleset > /etc/nftables.conf

启用开机加载

sudo systemctl enable nftables
sudo systemctl start nftables

⚠️ 注意:
iptables-save 保存的规则 不会影响 nftables


三、为什么“直接改了 iptables 但重启就没了”

因为:

  • iptables 规则在内存中
  • 不写文件 = 重启即丢
  • Ubuntu 不会自动保存

以下命令只是查看,不保存:

iptables -A ...
iptables-save   # 只输出,不写磁盘

四、常见错误总结

❌ 只在终端加规则,不保存
❌ 用 iptables-save 但没重定向到文件
❌ 系统用 nftables,却用 iptables-persistent
❌ 忘了 systemctl enable


五、快速自检清单

# 1. 看当前用的是哪种
iptables -V

# 2. 是否保存过
ls /etc/iptables/

# 3. 是否启用持久化
systemctl status netfilter-persistent
# 或
systemctl status nftables

如果你愿意,可以告诉我:

  • Ubuntu 版本(22.04 / 24.04?)
  • iptables -V 输出
  • 你是 服务器 / 桌面 / 容器

我可以直接给你一步到位的可复制命令。

0 踩