温馨提示×

如何保存debian iptables规则

小樊
39
2026-09-28 20:26:14
栏目: 智能运维

在 Debian 系统中,iptables 规则默认不会自动保存,重启后会丢失。要持久化 iptables 规则,常见有以下几种方式(按推荐程度排序):


一、使用 iptables-persistent(推荐,最简单)

1. 安装

sudo apt update
sudo apt install iptables-persistent

安装过程中会询问是否保存当前规则,可选 Yes。

2. 保存当前规则

sudo netfilter-persistent save

或(老版本):

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

3. 规则保存位置

  • IPv4:/etc/iptables/rules.v4
  • IPv6:/etc/iptables/rules.v6

4. 开机自动恢复

由 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

⚠️ 这种方式不会自动开机恢复,需要自己写启动脚本。


三、使用 systemd 开机自动恢复(手动方案)

如果你手动保存了规则,可创建 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 新版本注意(nftables)

从 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,我可以给你更精确的操作步骤。

0 踩