温馨提示×

CentOS域名如何进行备份

小樊
42
2025-12-17 10:03:01
栏目: 云计算

CentOS 域名解析备份与恢复指南

一、先明确备份对象与总体策略

  • 备份对象通常包括:
    1. BIND 配置(如:/etc/named.conf、包含的 zone 定义文件);
    2. 区域文件(如:/var/named/*.db/var/named/slaves/ 下的从区文件);
    3. 日志目录(如:/var/log/named/);
    4. 如使用 chroot,则相应目录为 /var/named/chroot/ 下的对应子目录。
  • 总体策略建议:
    • 日常用脚本对配置与区域文件做定时离线备份异地/离线留存
    • 架构层面配置主从(Master/Slave)区域复制,从服务器自动持有最新区域副本,作为热备与快速恢复手段。

二、手动备份步骤(适用于 BIND 权威或缓存 DNS)

  • 步骤1 备份配置与区域文件
    • 建议先停止 named 以避免正在写入的区域文件处于不一致状态:
      sudo systemctl stop named
    • 打包配置与区域(示例路径,按实际环境调整):
      sudo tar czvf dns_backup_$(date +%F).tar.gz /etc/named /var/named
    • 如需单独备份关键文件:
      sudo cp -p /etc/named.conf /path/to/backup/named.conf.bak
      sudo cp -p /var/named/example.com.db /path/to/backup/example.com.db.bak
  • 步骤2 备份日志(可选)
    sudo tar czvf dns_logs_$(date +%F).tar.gz /var/log/named
  • 步骤3 传输与校验
    • 将备份拷贝到安全位置(如备份服务器/对象存储):
      rsync -avz dns_backup_*.tar.gz user@backup:/backup/dns/
    • 校验归档完整性(示例):
      tar tvf dns_backup_*.tar.gz | head
  • 步骤4 重启服务
    sudo systemctl start named
  • 说明:若使用 PowerDNS 或其他 DNS 服务,备份路径会不同(如 /etc/powerdns/var/lib/powerdns),思路一致:停服务→打包配置与数据→传输→校验→启动。

三、主从复制实现热备(强烈推荐)

  • 主服务器配置要点(/etc/named.conf 片段):
    zone “example.com” IN {
    type master;
    file “/var/named/example.com.db”;
    allow-transfer { 192.168.1.11; };
    also-notify { 192.168.1.11; };
    };
    • 修改区域后务必递增 SOA 的 Serial,以便从服务器拉取更新。
  • 从服务器配置要点:
    zone “example.com” IN {
    type slave;
    file “slaves/example.com.db”;
    masters { 192.168.1.10; };
    };
  • 防火墙放行 TCP/UDP 53
    sudo firewall-cmd --zone=public --add-port=53/tcp --permanent
    sudo firewall-cmd --zone=public --add-port=53/udp --permanent
    sudo firewall-cmd --reload
  • 验证:
    dig @192.168.1.10 www.example.com
    dig @192.168.1.11 www.example.com
  • 故障演练:临时停用主服务器网络或停止 named,确认从服务器仍能解析,即具备热备能力

四、快速恢复与验证

  • 场景A 从备份恢复单机
    1. 停止服务:sudo systemctl stop named
    2. 恢复归档:sudo tar xzvf dns_backup_YYYY-MM-DD.tar.gz -C /
    3. 权限修正(示例):
      sudo chown root:named /var/named/example.com.db
      sudo chmod 640 /var/named/example.com.db
    4. 语法检查:
      sudo named-checkconf
      sudo named-checkzone example.com /var/named/example.com.db
    5. 启动服务:sudo systemctl start named
  • 场景B 主故障用从服务器顶上
    • 临时将对外 DNS 指向从服务器 IP,或在从服务器上临时将 zone 类型改为 master 并接管写入(变更前先备份现有从区文件)。
  • 验证:
    dig @<服务器IP> www.example.com
    tail -f /var/log/messages | grep named
    确认解析结果与日志无报错。

五、自动化与注意事项

  • 自动化备份脚本示例(保留最近 7 天):
    #!/bin/bash
    BACKUP_DIR=“/backup/dns”
    DATE=$(date +%F)
    mkdir -p “$BACKUP_DIR”
    systemctl stop named
    tar czvf “$BACKUP_DIR/dns_${DATE}.tar.gz” /etc/named /var/named
    systemctl start named
    find “$BACKUP_DIR” -name “dns_*.tar.gz” -mtime +7 -delete
  • 注意事项
    • 区域变更务必递增 SOA Serial,否则从服务器不会拉取更新;
    • 主从之间放通 TCP/UDP 53,并限制 allow-transfer 仅对从服务器开放;
    • 使用 chroot 时,备份与恢复需对应 /var/named/chroot 路径;
    • 定期做恢复演练异地/离线留存,避免单点风险。

0