在 Debian 系统中,iptables 规则默认不会自动保存,重启后会丢失。要持久化 iptables 规则,常见有以下几种方式(按推荐程度排序):
iptables-persistent(推荐,最简单)sudo apt update
sudo apt install iptables-persistent
安装过程中会询问是否保存当前规则,可选 Yes。
sudo netfilter-persistent save
或(老版本):
sudo /etc/init.d/netfilter-persistent save
/etc/iptables/rules.v4/etc/iptables/rules.v6由 netfilter-persistent 服务在启动时自动加载,无需额外配置。
sudo iptables-save > /etc/iptables/rules.v4
sudo ip6tables-save > /etc/iptables/rules.v6
sudo iptables-restore < /etc/iptables/rules.v4
sudo ip6tables-restore < /etc/iptables/rules.v6
⚠️ 这种方式不会自动开机恢复,需要自己写启动脚本。
如果你手动保存了规则,可创建 service:
sudo nano /etc/systemd/system/iptables-restore.service
内容示例:
[Unit]
Description=Restore iptables rules
Before=network-pre.target
Wants=network-pre.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore /etc/iptables/rules.v4
ExecStart=/sbin/ip6tables-restore /etc/iptables/rules.v6
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl enable iptables-restore
从 Debian 10 开始,默认防火墙框架是 nftables:
iptables 命令仍然存在,但是 nftables 的兼容层nftables,应保存为:sudo nft list ruleset > /etc/nftables.conf
并确保:
sudo systemctl enable nftables
| 场景 | 推荐方式 |
|---|---|
| 普通 Debian 用户 | iptables-persistent |
| 脚本/容器 | iptables-save / restore |
| 新系统 | 考虑直接用 nftables |
如果你愿意,可以告诉我你的 Debian 版本 和 是否使用 IPv6,我可以给你更精确的操作步骤。