在 Ubuntu 中,iptables 规则重启后失效,通常是因为 iptables 本身不会自动持久化规则。下面分点说明原因和解决方法。
ufw 或 nftablesiptables 命令只是“临时生效”❌ 以为 iptables-save 会永久生效
✅ 它只是把规则输出到标准输出或文件
❌ 以为写在 .bashrc 里就行
✅ 那只在登录时执行,不合适
iptables-persistent(推荐)sudo apt update
sudo apt install iptables-persistent
sudo netfilter-persistent save
或(老版本):
sudo /etc/init.d/iptables-persistent save
/etc/iptables/rules.v4 # IPv4
/etc/iptables/rules.v6 # IPv6
由 netfilter-persistent 服务完成,无需额外配置
sudo iptables-save > /etc/iptables.rules
iptables-restore < /etc/iptables.rules
例如加到:
/etc/rc.local
或 systemd 服务中
sudo ufw enable
sudo ufw allow 22
ufw 本质是对 iptables 的封装,规则会自动持久化。
Ubuntu 20.04+:
iptables 实际是 iptables-nft✅ 仍然可以用 iptables-persistent
❌ 不建议混用 iptables 和 nft 命令
iptables-save?iptables-persistent?如果你愿意,可以贴出:
我可以帮你给出最合适的持久化方案。