在 Debian 系统中,iptables 规则重启后丢失,根本原因通常是:
iptables 规则只存在于内存(kernel netfilter)中,系统默认不会自动保存/恢复。
下面分点说明。
iptables 命令是临时生效Debian 不会自动保存:
iptables -A ... 的规则常见误区:
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# 重启后没了
iptables-persistentapt update
apt install iptables-persistent
安装时会问是否保存当前规则:
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
自己写 service 调用 iptables-restore
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保存即可解决。
如果你愿意,可以告诉我:
我可以给你最合适的配置示例。