温馨提示×

Debian DHCP如何做冗余

小樊
40
2026-07-30 10:37:34
栏目: 智能运维

在 Debian 上实现 DHCP 冗余(高可用),最常用、最稳定的方案是 ISC DHCP Server + Failover(故障转移)。下面我按 原理 → 拓扑 → 配置 → 验证 → 常见问题 来系统说明。


一、DHCP 冗余的两种常见方式

✅ 推荐方式:ISC DHCP Failover(标准做法)

  • 两台 DHCP 服务器
  • 主备或双主
  • 自动同步租约
  • 客户端无感知切换

⚠️ 不推荐方式

  • 两台服务器配置相同地址池(易冲突)
  • 靠“手工切”或脚本(不可靠)

二、典型拓扑

        +-------------------+
        |   LAN / VLAN      |
        +-------------------+
           |           |
     +--------+     +--------+
     | DHCP-A |     | DHCP-B |
     | 主/备  |<--->| 备/主  |
     +--------+     +--------+
  • 两台 Debian 服务器
  • 同一网段
  • 使用 Failover 协议

三、安装 DHCP 服务(两台都做)

sudo apt update
sudo apt install isc-dhcp-server -y

四、网络接口配置

假设 DHCP 服务监听 eth0

sudo nano /etc/default/isc-dhcp-server
INTERFACESv4="eth0"

五、Failover 原理简述(很重要)

  • 两台 DHCP 服务器:
    • 一个 primary
    • 一个 secondary
  • 共享:
    • 地址池
    • 租约数据库
  • 通过 TCP 连接 同步状态

六、DHCP Failover 配置示例

1️⃣ 主服务器(Primary)

# /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;
  }
}

2️⃣ 备服务器(Secondary)

# /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

八、验证 Failover 是否生效

1️⃣ 查看状态

journalctl -u isc-dhcp-server

看到类似:

failover peer dhcp-failover: I move from normal to communications-interrupted

或:

failover peer dhcp-failover: peer state normal

2️⃣ 查看租约文件

cat /var/lib/dhcp/dhcpd.leases

两台服务器应能同步租约。


九、测试冗余

  1. 关闭主 DHCP:
    sudo systemctl stop isc-dhcp-server
    
  2. 客户端重新申请 IP:
    dhclient -r eth0
    dhclient eth0
    
  3. 客户端仍能获得 IP ✅

十、防火墙注意(非常重要)

Failover 使用 TCP 647

sudo ufw allow 647/tcp

或 iptables:

iptables -A INPUT -p tcp --dport 647 -j ACCEPT

十一、常见问题

❌ 两台都分配 IP,冲突?

  • 没有配置 failover peer
  • 或 pool 没有绑定 failover

❌ 启动失败

检查:

dhcpd -t

❌ 时间不同步

  • 必须 NTP 同步
sudo apt install chrony

十二、进阶方案(可选)

方案 说明
Kea DHCP ISC 新方案,支持 HA
DHCP Relay + 两台服务器 大型网络
Anycast + DHCP 数据中心级

总结一句话

Debian DHCP 冗余 = ISC DHCP + Failover(primary/secondary)

如果你愿意,我可以:

  • ✅ 给你 Kea DHCP 高可用配置
  • ✅ 画一张 完整网络拓扑图
  • ✅ 帮你排查当前配置错误

直接告诉我你的 网络环境(是否 VLAN / 多个子网) 即可。

0