温馨提示×

debian iptables为何重启丢失

小樊
56
2026-09-10 16:11:26
栏目: 智能运维

在 Debian 系统中,iptables 规则重启后丢失,根本原因通常是:

iptables 规则只存在于内存(kernel netfilter)中,系统默认不会自动保存/恢复。

下面分点说明。


一、为什么会丢失

1. iptables 本身不持久化

  • iptables 命令是临时生效
  • 规则写在 Linux 内核 中
  • 重启 = 内核重新初始化 → 规则清空

2. Debian 默认没有启用规则保存机制

Debian 不会自动保存:

  • 你 iptables -A ... 的规则
  • 关机 / 重启前的内容

3. 你可能没用持久化工具

常见误区:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 重启后没了

二、Debian 下正确的“持久化”方式

✅ 方法一(推荐):iptables-persistent

安装

apt update
apt install iptables-persistent

安装时会问是否保存当前规则:

  • 选 Yes

保存规则(以后用)

netfilter-persistent save
# 或
iptables-save > /etc/iptables/rules.v4

开机自动恢复

  • 由 netfilter-persistent 服务完成
  • 文件位置:
/etc/iptables/rules.v4
/etc/iptables/rules.v6

✅ 方法二:手动保存 & 恢复(不推荐但可用)

保存:

iptables-save > /etc/iptables.rules

恢复(写入启动脚本):

iptables-restore < /etc/iptables.rules

例如加到:

/etc/rc.local

✅ 方法三:systemd 服务(高级)

自己写 service 调用 iptables-restore


三、如果你用的是 nftables(Debian 新版本)

Debian 10+ 默认可能用 nftables

检查:

nft list ruleset

如果是 nftables:

  • 用 nft 而不是 iptables
  • 配置文件:
/etc/nftables.conf

启用:

systemctl enable nftables

四、排查建议

# 看是否有持久化服务
systemctl status netfilter-persistent

# 看规则文件是否存在
ls -l /etc/iptables/

五、一句话总结

Debian 中 iptables 重启丢失,是因为规则未保存;用 iptables-persistent 保存即可解决。

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

  • Debian 版本
  • 是否用 nftables
  • 当前怎么配的 iptables

我可以给你最合适的配置示例。

0 踩