在 Linux 环境下迁移 DHCP 服务,通常指的是把一台 DHCP 服务器(如 ISC DHCP / Kea / dnsmasq)的配置和租约数据,迁移到另一台 Linux 服务器,并尽量保证客户端不中断或最少中断。
下面按**最常见场景(ISC DHCP Server)**说明,并补充 Kea / dnsmasq 差异。
# ISC DHCP
ps aux | grep dhcpd
# Kea
ps aux | grep kea
# dnsmasq
ps aux | grep dnsmasq
配置文件
/etc/dhcp/dhcpd.conf
/etc/dhcp/dhcpd6.conf # IPv6(如有)
租约文件
/var/lib/dhcp/dhcpd.leases
/var/lib/dhcp/dhcpd6.leases
打包:
tar czvf dhcp_backup.tar.gz \
/etc/dhcp \
/var/lib/dhcp
# Debian / Ubuntu
apt install isc-dhcp-server
# RHEL / CentOS
yum install dhcp
tar xzvf dhcp_backup.tar.gz -C /
确认接口:
# /etc/default/isc-dhcp-server
INTERFACESv4="eth0"
dhcpd -t -cf /etc/dhcp/dhcpd.conf
systemctl stop isc-dhcp-server
systemctl start isc-dhcp-server
⚠️ 租约会重新分配,但因为有 leases 文件,冲突概率低
使用 DHCP Failover(ISC 原生支持)
failover peer "dhcp-failover" {
primary;
address 192.168.1.10;
peer address 192.168.1.11;
split 128;
}
适合生产环境,零中断。
Kea 使用 JSON 配置 + 数据库(MySQL/PostgreSQL)
mysqldump -u kea -p kea > kea.sql
/etc/kea/kea-dhcp4.conf
mysql -u kea -p kea < kea.sql
/etc/dnsmasq.conf
/var/lib/misc/dnsmasq.leases
直接拷贝即可,重启服务。
journalctl -u isc-dhcp-server
ip addr
tcpdump -i eth0 udp port 67
客户端测试:
dhclient -r
dhclient
❌ 租约文件权限不对
✅ chown dhcpd:dhcpd
❌ 防火墙阻断 67/68
✅ ufw allow 67/udp
❌ 两台 DHCP 同时运行无 failover
✅ 会造成 IP 冲突
如果你能告诉我:
我可以给你一份精确到命令的迁移方案。