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.bak
sudo 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解析)。