在 Ubuntu 系统中,iptables 的规则默认不会持久化保存。这意味着在系统重启后,之前设置的规则将会丢失。为了使 iptables 规则在重启后依然生效,你需要将规则保存到文件中,并在系统启动时自动加载这些规则。
以下是保存和恢复 iptables 规则的步骤:
iptables 规则使用 iptables-save 命令保存规则:
sudo iptables-save > /etc/iptables/rules.v4 这条命令会将当前的 IPv4 规则保存到 /etc/iptables/rules.v4 文件中。如果你需要保存 IPv6 规则,可以使用:
sudo iptables-save > /etc/iptables/rules.v6 确保规则文件可读:
确保 /etc/iptables/rules.v4 和 /etc/iptables/rules.v6 文件对 root 用户是可读的。
sudo chmod 600 /etc/iptables/rules.v4 sudo chmod 600 /etc/iptables/rules.v6 iptables 规则使用 iptables-restore 命令恢复规则:
在系统启动时,你可以使用 iptables-restore 命令来加载保存的规则。你可以通过编辑 /etc/network/if-pre-up.d/iptables 文件来实现这一点。
创建或编辑 /etc/network/if-pre-up.d/iptables 文件:
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 测试脚本:
你可以手动运行脚本来测试它是否正常工作:
sudo /etc/network/if-pre-up.d/iptables ufw(Uncomplicated Firewall)如果你更喜欢使用 ufw 来管理防火墙规则,ufw 会自动保存和恢复规则。你可以通过以下命令启用 ufw:
sudo ufw enable 然后,你可以使用 ufw 命令来管理规则,例如:
sudo ufw allow 80/tcp sudo ufw status ufw 会在系统启动时自动加载和保存规则。
通过以上步骤,你可以确保 iptables 规则在 Ubuntu 系统重启后依然生效。