在Linux系统中,使用iptables命令配置的防火墙规则通常不会自动保存。当系统重启时,这些规则会丢失。为了在重启后保留iptables规则,你需要将它们保存到一个文件中,并在启动时自动加载这些规则。以下是在不同Linux发行版上保存和恢复iptables规则的方法:
保存规则:
sudo iptables-save > /etc/iptables/rules.v4
恢复规则: 在系统启动时自动加载规则,可以创建一个启动脚本:
sudo nano /etc/network/if-pre-up.d/iptables
添加以下内容:
#!/bin/sh /sbin/iptables-restore < /etc/iptables/rules.v4
赋予脚本执行权限:
sudo chmod +x /etc/network/if-pre-up.d/iptables
保存规则:
sudo service iptables save
或者
sudo iptables-save > /etc/sysconfig/iptables
恢复规则: 在系统启动时自动加载规则,可以编辑/etc/rc.d/rc.local
文件(在较新的系统中可能是/etc/rc.d/rc.local.d/
目录下的文件):
sudo nano /etc/rc.d/rc.local
在exit 0
之前添加以下行:
iptables-restore < /etc/sysconfig/iptables
保存规则:
sudo service iptables save
或者
sudo iptables-save > /etc/firewalld/zones/public.xml
恢复规则: 使用firewalld服务来管理iptables规则:
sudo firewall-cmd --runtime-to-permanent
保存规则:
sudo iptables-save > /etc/iptables/iptables.rules
恢复规则: 创建一个启动脚本:
sudo nano /etc/systemd/system/iptables-restore.service
添加以下内容:
[Unit] Description=Restore IPTables rules After=network.target [Service] Type=oneshot ExecStart=/sbin/iptables-restore < /etc/iptables/iptables.rules [Install] WantedBy=multi-user.target
启用并启动服务:
sudo systemctl enable iptables-restore.service sudo systemctl start iptables-restore.service
请注意,不同的Linux发行版可能会有不同的包和服务名称,例如iptables-services
或firewalld
。确保你使用的是适合你系统的命令和方法。此外,如果你使用的是SELinux,可能还需要配置相关的策略以允许iptables规则的加载。