iptables规则默认重启后丢失,需保存至磁盘并配置开机加载:Ubuntu/Debian用iptables-persistent,CentOS/RHEL写入/etc/sysconfig/iptables,通用法用iptables-save导出+systemd服务自动恢复。

iptables 规则默认只在内存中运行,重启系统后会全部丢失。要让修改后的规则永久生效,关键在于把当前运行的规则显式保存到磁盘文件,并配置系统在开机时自动加载。不同发行版做法略有差异,但核心逻辑一致。
Ubuntu/Debian 系统:用 iptables-persistent
这是最推荐新手的方式,安装即用、支持 IPv4 和 IPv6:
- 安装服务:sudo apt install iptables-persistent(安装过程中会弹窗询问是否保存当前规则,选 Yes)
- 若已安装但未保存过,手动执行:sudo netfilter-persistent save
- 验证是否生效:sudo netfilter-persistent reload && sudo iptables -L -n,能看到你添加的规则
- 服务默认开机自启,无需额外启用
CentOS/RHEL 7+ 系统:写入 /etc/sysconfig/iptables
传统方式,规则直接存为静态配置文件:
- 先配置好所有规则(例如放行 SSH、HTTP、HTTPS),再执行:sudo iptables-save > /etc/sysconfig/iptables
- 确保 iptables 服务已启用:sudo systemctl enable iptables
- 重启服务测试:sudo systemctl restart iptables,它会自动读取并应用该文件
- 注意:不要手动编辑 /etc/sysconfig/iptables 后直接重启——应先改规则、再 iptables-save 覆盖文件,最后 restart
通用手动法(跨发行版都适用)
不依赖特定包,适合想掌握底层逻辑或使用小众发行版的用户:
- 导出规则:sudo mkdir -p /etc/iptables && sudo iptables-save > /etc/iptables/rules.v4
- 创建 systemd 服务文件 /etc/systemd/system/iptables-restore.service,内容包含:
[Unit]
Description=Restore iptables rules
Before=network.target
[Service]
Type=oneshot
ExecStart=/sbin/iptables-restore < /etc/iptables/rules.v4
[Install]
WantedBy=multi-user.target - 启用服务:sudo systemctl daemon-reload && sudo systemctl enable iptables-restore.service
验证和常见误区
保存后务必验证,避免锁死自己:
- 执行 sudo iptables -L -n 确认规则存在
- 重启前建议留一个备用登录方式(如控制台或另一终端)
- 别混淆 iptables-save(导出)和 iptables-restore(导入)
- 规则修改后必须重新保存,否则下次重启仍用旧规则


















