CentOS 防火墙备份与恢复
一、先确认防火墙类型
firewall-cmd --state,返回 running/not running 表示正在使用 firewalld。systemctl is-active iptables,返回 active/inactive 表示使用传统 iptables 服务。二、iptables 的备份与恢复
iptables-save > /path/to/iptables-$(date +%F).rulesiptables-restore < /path/to/iptables-$(date +%F).rulesservice iptables save(规则将写入 /etc/sysconfig/iptables)iptables-restore < /etc/sysconfig/iptablesservice iptables stop 停止服务,避免仅 iptables -F 导致空规则风险ip6tables-save > /path/to/ip6tables-$(date +%F).rules;恢复:ip6tables-restore < /path/to/ip6tables-$(date +%F).rules三、firewalld 的备份与恢复
firewall-cmd --runtime-to-permanent > /path/to/firewalld-$(date +%F).xmlfirewall-cmd --permanent --direct --file=/path/to/firewalld-$(date +%F).xmlfirewall-cmd --reload/etc/firewalld/(核心文件如 firewalld.conf 与 /etc/firewalld/zones/*.xml)tar czf firewalld-backup-$(date +%F).tgz /etc/firewalld/tar xzf firewalld-backup-$(date +%F).tgz -C /firewall-cmd --reloadfirewall-cmd --reload 才会生效;firewalld 默认有 9 个 zone,默认 public。四、自动化与回滚建议
#!/usr/bin/env bash
ts=$(date +%F-%H%M%S)
mkdir -p /opt/fw-backup/$ts
if firewall-cmd --state >/dev/null 2>&1; then
firewall-cmd --runtime-to-permanent > /opt/fw-backup/$ts/firewalld-runtime.xml
cp -a /etc/firewalld /opt/fw-backup/$ts/firewalld-conf
echo "firewalld 已备份到 /opt/fw-backup/$ts"
elif systemctl is-active iptables >/dev/null 2>&1; then
iptables-save > /opt/fw-backup/$ts/iptables.rules
ip6tables-save > /opt/fw-backup/$ts/ip6tables.rules 2>/dev/null
echo "iptables 已备份到 /opt/fw-backup/$ts"
else
echo "未检测到正在运行的防火墙服务"
fi
firewall-cmd --reload 或 service iptables restart 使配置生效。五、注意事项
reload/restart 可能导致现有连接短暂中断。--permanent 写入配置,未 reload 前不会影响当前会话;导入/恢复后务必 firewall-cmd --reload。