在 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 系统重启后依然生效。