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