Linux DHCP服务器备份与恢复方法
常见Linux DHCP服务器为ISC DHCP Server(软件包:isc-dhcp-server,配置文件:/etc/dhcp/dhcpd.conf,租约文件:/var/lib/dhcp/dhcpd.leases)和dnsmasq(软件包:dnsmasq,配置文件:/etc/dnsmasq.conf,租约文件:/var/lib/misc/dnsmasq.leases)。需根据实际使用的软件调整备份路径。
cp或rsync命令备份配置文件(/etc/dhcp/dhcpd.conf),例如:sudo cp /etc/dhcp/dhcpd.conf /backup/dhcpd.conf.baksudo rsync -avz /etc/dhcp/dhcpd.conf /backup/(保留文件属性并支持远程备份)。/etc/dnsmasq.conf),命令类似:sudo cp /etc/dnsmasq.conf /backup/dnsmasq.conf.bak。/var/lib/dhcp/dhcpd.leases,备份命令:sudo cp /var/lib/dhcp/dhcpd.leases /backup/dhcpd.leases.bak。/var/lib/misc/dnsmasq.leases,备份命令:sudo cp /var/lib/misc/dnsmasq.leases /backup/dnsmasq.leases.bak。编写Shell脚本定期自动备份,例如:
#!/bin/bash
BACKUP_DIR="/backup/dhcp"
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p "$BACKUP_DIR"
# 备份ISC DHCP配置和租约
cp -R /etc/dhcp "$BACKUP_DIR/dhcp_$(date +%F)"
cp /var/lib/dhcp/dhcpd.leases "$BACKUP_DIR/dhcpd.leases_$DATE"
# 备份dnsmasq配置和租约(若存在)
if [ -f /etc/dnsmasq.conf ]; then cp /etc/dnsmasq.conf "$BACKUP_DIR/dnsmasq_$(date +%F)"; fi
if [ -f /var/lib/misc/dnsmasq.leases ]; then cp /var/lib/misc/dnsmasq.leases "$BACKUP_DIR/dnsmasq.leases_$DATE"; fi
echo "DHCP backup completed at $DATE"
赋予执行权限后,可通过cron设置定时任务(如每天凌晨2点运行):
0 2 * * * /path/to/backup_script.sh。
恢复前需停止服务以避免数据冲突:
sudo systemctl stop isc-dhcp-server(ISC DHCP Server)或sudo systemctl stop dnsmasq(dnsmasq)。
sudo cp /backup/dhcpd.conf.bak /etc/dhcp/dhcpd.conf。sudo cp /backup/dnsmasq.conf.bak /etc/dnsmasq.conf。sudo cp /backup/dhcpd.leases.bak /var/lib/dhcp/dhcpd.leases。sudo cp /backup/dnsmasq.leases.bak /var/lib/misc/dnsmasq.leases。恢复配置后,使用以下命令检查语法错误:
sudo dhcpd -t(若输出无错误,则配置有效)。
确认配置无误后,启动服务并设置开机自启:
sudo systemctl start isc-dhcp-server(ISC DHCP Server)或sudo systemctl start dnsmasq(dnsmasq);
sudo systemctl enable isc-dhcp-server(设置开机自启)。
检查DHCP服务是否正常运行:
sudo netstat -tuln | grep 67(监听67端口);sudo netstat -tuln | grep 53(同时监听53端口,用于DNS解析)。