在 Debian 上实现 DHCP 冗余(高可用),最常用、最稳定的方案是 ISC DHCP Server + Failover(故障转移)。下面我按 原理 → 拓扑 → 配置 → 验证 → 常见问题 来系统说明。
+-------------------+
| LAN / VLAN |
+-------------------+
| |
+--------+ +--------+
| DHCP-A | | DHCP-B |
| 主/备 |<--->| 备/主 |
+--------+ +--------+
sudo apt update
sudo apt install isc-dhcp-server -y
假设 DHCP 服务监听 eth0
sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0"
# /etc/dhcp/dhcpd.conf
failover peer "dhcp-failover" {
primary;
address 192.168.1.10;
port 647;
peer address 192.168.1.11;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8;
pool {
failover peer "dhcp-failover";
range 192.168.1.100 192.168.1.200;
}
}
# /etc/dhcp/dhcpd.conf
failover peer "dhcp-failover" {
secondary;
address 192.168.1.11;
port 647;
peer address 192.168.1.10;
peer port 647;
max-response-delay 30;
max-unacked-updates 10;
load balance max seconds 3;
}
subnet 192.168.1.0 netmask 255.255.255.0 {
option routers 192.168.1.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8;
pool {
failover peer "dhcp-failover";
range 192.168.1.100 192.168.1.200;
}
}
sudo systemctl restart isc-dhcp-server
sudo systemctl enable isc-dhcp-server
journalctl -u isc-dhcp-server
看到类似:
failover peer dhcp-failover: I move from normal to communications-interrupted
或:
failover peer dhcp-failover: peer state normal
cat /var/lib/dhcp/dhcpd.leases
两台服务器应能同步租约。
sudo systemctl stop isc-dhcp-server
dhclient -r eth0
dhclient eth0
Failover 使用 TCP 647
sudo ufw allow 647/tcp
或 iptables:
iptables -A INPUT -p tcp --dport 647 -j ACCEPT
failover peer检查:
dhcpd -t
sudo apt install chrony
| 方案 | 说明 |
|---|---|
| Kea DHCP | ISC 新方案,支持 HA |
| DHCP Relay + 两台服务器 | 大型网络 |
| Anycast + DHCP | 数据中心级 |
Debian DHCP 冗余 = ISC DHCP + Failover(primary/secondary)
如果你愿意,我可以:
直接告诉我你的 网络环境(是否 VLAN / 多个子网) 即可。