在 Ubuntu 下,iptables 本身不会自动保存规则,重启后会丢失。你需要手动保存并在开机时恢复。常见做法有以下几种:
iptables-save / iptables-restore(最通用)sudo iptables-save > /etc/iptables/rules.v4
(如果目录不存在可以先建)
sudo mkdir -p /etc/iptables
编辑 /etc/rc.local(或 systemd 方式):
sudo iptables-restore < /etc/iptables/rules.v4
或手动执行:
sudo iptables-restore < /etc/iptables/rules.v4
sudo apt update
sudo apt install iptables-persistent
sudo netfilter-persistent save
sudo netfilter-persistent reload
规则会保存在:
/etc/iptables/rules.v4/etc/iptables/rules.v6✅ 推荐方式(简单稳定)
创建服务文件:
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
RemainAfterExit=yes
[Install]
WantedBy=multi-user.target
启用:
sudo systemctl enable iptables-restore
sudo iptables -L -n -v
sudo iptables-save
| 方式 | 推荐度 |
|---|---|
iptables-persistent |
⭐⭐⭐⭐⭐ |
iptables-save 手动 |
⭐⭐⭐ |
| systemd 自定义 | ⭐⭐⭐⭐ |
如果你是 Ubuntu 20.04 / 22.04 / 24.04,直接用 iptables-persistent 最省事。
需要我帮你写一份完整规则 + 保存示例吗?