iptables持久化核心是两步:先配好规则并验证生效,再保存至文件并配置开机自动加载;默认规则仅存内存,重启即失,需用iptables-persistent(Debian/Ubuntu)或iptables-services(CentOS/RHEL)等工具实现持久化。

新手配置 iptables 持久化,核心就两点:先配好规则,再让系统重启后自动加载。默认规则只存在内存里,一重启就清空——这不是你配错了,是设计如此。
确认当前规则已生效
别急着保存,先确保你写的规则真在起作用:
- 用 sudo iptables -L -n 查看当前 INPUT 链有没有你加的规则(比如放行 80 端口)
- 用 sudo ss -tlnp | grep ':80' 确认服务(如 Nginx)确实在监听 0.0.0.0:80,而不是只监听 127.0.0.1
- 务必提前加一条 SSH 放行规则(如 sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT),避免锁死自己
推荐新手用 iptables-persistent(Debian/Ubuntu)
这是最省心、最贴近官方习惯的方式,一行安装,两步操作:
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
- 安装并初始化:sudo apt install iptables-persistent(安装过程中会问“是否保存当前规则”,选 是)
- 后续每次改完规则,只需运行:sudo netfilter-persistent save
- 验证是否持久:重启前执行 sudo iptables -F 清空,再运行 sudo netfilter-persistent reload,规则就回来了
手动保存+开机加载(通用方法)
适合没装 iptables-persistent 或想理解底层逻辑的新手:
- 把当前规则存成文件:sudo iptables-save > /etc/iptables/rules.v4(IPv6 同理用 ip6tables-save > /etc/iptables/rules.v6)
- 创建预启动脚本:sudo nano /etc/network/if-pre-up.d/iptables,填入:
#!/bin/sh
/sbin/iptables-restore < /etc/iptables/rules.v4
/sbin/ip6tables-restore < /etc/iptables/rules.v6
- 赋予执行权限:sudo chmod +x /etc/network/if-pre-up.d/iptables
常见踩坑提醒
新手最容易在这里翻车:
- 没加 ESTABLISHED,RELATED 规则,导致新连接能进、但响应回不来——建议在所有放行规则前加:sudo iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
- 只保存了 IPv4 规则,但系统启用了 IPv6,结果外网能通 IPv4 却连不上 IPv6 ——记得同步处理 ip6tables
- 改完规则忘了 save,以为 reload 就够了;或者 reload 后没验证,结果重启才发现失效

















