温馨提示×

ubuntu iptables为何重启失效

小樊
36
2026-10-27 10:55:28
栏目: 智能运维

在 Ubuntu 中,iptables 规则重启后失效,通常是因为 iptables 本身不会自动持久化规则。下面分点说明原因和解决方法。


一、为什么 iptables 重启会失效?

1. iptables 规则保存在内存中

  • iptables 的规则是 内核态规则
  • 系统重启后,内核重新加载,内存中的规则会丢失

2. Ubuntu 默认不自动保存 iptables

  • 不像 ufw 或 nftables
  • 单纯的 iptables 命令只是“临时生效”

二、常见误区

❌ 以为 iptables-save 会永久生效
✅ 它只是把规则输出到标准输出或文件

❌ 以为写在 .bashrc 里就行
✅ 那只在登录时执行,不合适


三、正确让 iptables 重启后生效的方法

方法一:使用 iptables-persistent(推荐)

1. 安装

sudo apt update
sudo apt install iptables-persistent

2. 保存当前规则

sudo netfilter-persistent save

或(老版本):

sudo /etc/init.d/iptables-persistent save

3. 规则保存位置

/etc/iptables/rules.v4   # IPv4
/etc/iptables/rules.v6   # IPv6

4. 开机自动加载

由 netfilter-persistent 服务完成,无需额外配置


方法二:手动保存 + 开机恢复(不推荐但可用)

保存规则

sudo iptables-save > /etc/iptables.rules

恢复规则(写入启动脚本)

iptables-restore < /etc/iptables.rules

例如加到:

/etc/rc.local

或 systemd 服务中


方法三:改用 ufw(适合新手)

sudo ufw enable
sudo ufw allow 22

ufw 本质是对 iptables 的封装,规则会自动持久化。


四、Ubuntu 新版本注意(nftables)

Ubuntu 20.04+:

  • 默认后端是 nftables
  • iptables 实际是 iptables-nft

✅ 仍然可以用 iptables-persistent
❌ 不建议混用 iptables 和 nft 命令


五、快速排查清单

  • [ ] 是否执行了 iptables-save?
  • [ ] 是否安装了 iptables-persistent?
  • [ ] 是否重启后没加载规则?
  • [ ] 是否使用了 nftables?

如果你愿意,可以贴出:

  • Ubuntu 版本
  • 你当前的 iptables 规则
  • 是否使用 ufw / nftables

我可以帮你给出最合适的持久化方案。

0 踩