温馨提示×

Linux DHCP备份与恢复方法

小樊
37
2025-12-23 22:48:44
栏目: 智能运维

Linux DHCP备份与恢复方法

一 适用场景与准备

  • 适用软件:主流为 ISC DHCP Server(isc-dhcp-server)dnsmasq。先确认正在使用的软件与版本,避免路径与服务名不一致。
  • 关键数据:配置文件(如 /etc/dhcp/dhcpd.conf/etc/dnsmasq.conf)与租约数据库(如 /var/lib/dhcp/dhcpd.leases)。租约文件记录客户端 IP 分配状态,对业务连续性很重要。
  • 建议做法:备份前尽量保持数据一致性(必要时短暂停止服务)、校验配置语法、将备份文件存放到 异地/远程 位置,并做好 定期与可回滚 管理。

二 备份步骤

  • ISC DHCP Server
    • 配置文件:
      • 主配置:/etc/dhcp/dhcpd.conf
      • 启动参数(部分发行版):/etc/default/isc-dhcp-server
      • IPv6(如启用):/etc/dhcp/dhcpd6.conf
    • 租约数据库:/var/lib/dhcp/dhcpd.leases
    • 命令示例(可先停服务以保证一致性):
      • 停服务:sudo systemctl stop isc-dhcp-server
      • 备份:sudo cp /etc/dhcp/dhcpd.conf /path/to/backup/dhcpd.conf.bak
      • 备份租约:sudo cp /var/lib/dhcp/dhcpd.leases /path/to/backup/dhcpd.leases.bak
      • 备份启动参数:sudo cp /etc/default/isc-dhcp-server /path/to/backup/isc-dhcp-server.bak
      • 归档备份:sudo tar -czvf /backup/dhcp_backup_$(date +%F).tar.gz /etc/dhcp /var/lib/dhcp/dhcpd.leases
  • dnsmasq
    • 配置文件:/etc/dnsmasq.conf
    • 命令示例:
      • 备份:sudo cp /etc/dnsmasq.conf /path/to/backup/dnsmasq.conf.bak
      • 归档备份:sudo tar -czvf /backup/dnsmasq_backup_$(date +%F).tar.gz /etc/dnsmasq.conf
  • 远程/增量备份建议
    • 使用 rsync 同步到远程主机:sudo rsync -avz /etc/dhcp/ user@backup:/backup/dhcp/
    • 使用 cron 定时执行备份脚本,保留多份历史以便回滚。

三 恢复步骤

  • ISC DHCP Server
    • 停服务:sudo systemctl stop isc-dhcp-server
    • 恢复文件:
      • sudo cp /path/to/backup/dhcpd.conf.bak /etc/dhcp/dhcpd.conf
      • sudo cp /path/to/backup/dhcpd.leases.bak /var/lib/dhcp/dhcpd.leases
      • 如存在:sudo cp /path/to/backup/isc-dhcp-server.bak /etc/default/isc-dhcp-server
    • 校验配置:sudo dhcpd -t
    • 启动服务:sudo systemctl start isc-dhcp-server
    • 状态与端口检查:
      • 状态:sudo systemctl status isc-dhcp-server
      • 端口:sudo ss -ulnp | grep ':67\b'
  • dnsmasq
    • 停服务:sudo systemctl stop dnsmasq
    • 恢复文件:sudo cp /path/to/backup/dnsmasq.conf.bak /etc/dnsmasq.conf
    • 启动服务:sudo systemctl start dnsmasq
    • 状态与端口检查:
      • 状态:sudo systemctl status dnsmasq
      • 端口:sudo ss -ulnp | grep ':67\b'
  • 提示:若租约文件缺失,服务可能仍能启动,但已分配租约信息会丢失,可能导致 IP 冲突租约时间异常,请优先恢复租约文件。

四 自动化与验证

  • 自动化备份脚本示例
    • 单文件备份:
      • #!/bin/bash BACKUP_DIR="/backup" DATE=$(date +%Y%m%d%H%M%S) mkdir -p "$BACKUP_DIR" cp /etc/dhcp/dhcpd.conf "$BACKUP_DIR/dhcpd.conf.$DATE.bak" cp /var/lib/dhcp/dhcpd.leases "$BACKUP_DIR/dhcpd.leases.$DATE.bak" echo "Backup completed at $DATE" | tee -a "$BACKUP_DIR/backup.log"
    • 归档与远程同步:
      • tar -czvf "$BACKUP_DIR/dhcp_backup_$DATE.tar.gz" /etc/dhcp /var/lib/dhcp/dhcpd.leases
      • rsync -avz "$BACKUP_DIR/" user@backup:/backup/dhcp/
    • 定时任务(每天 02:00 执行):
      • 0 2 * * * /usr/local/bin/backup_dhcp.sh
  • 验证要点
    • 配置语法:sudo dhcpd -t(仅 ISC)
    • 服务状态:sudo systemctl status isc-dhcp-serversudo systemctl status dnsmasq
    • 端口监听:sudo ss -ulnp | grep ':67\b'
    • 日志排查:sudo journalctl -u isc-dhcp-server -xesudo tail -n 200 /var/log/syslog | grep dhcp
    • 业务侧验证:在客户端执行 ip a/ipconfig /all 确认可正常获取 IP网关/DNS

0