温馨提示×

linux dhcp为何不分配

小樊
43
2026-09-15 21:59:34
栏目: 智能运维

Linux 下 DHCP 服务端不分配地址 通常由以下几类原因导致,你可以逐项排查:


一、DHCP 服务本身问题

1. 服务未启动

systemctl status dhcpd
# 或(Ubuntu/Debian)
systemctl status isc-dhcp-server

未运行则启动:

systemctl start dhcpd
systemctl enable dhcpd

2. 配置文件错误

常见文件:

  • RHEL/CentOS:/etc/dhcp/dhcpd.conf
  • Ubuntu:/etc/dhcp/dhcpd.conf

检查:

dhcpd -t

常见问题:

  • subnet 网段写错
  • 缺少 range
  • 接口未声明

示例:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
  option routers 192.168.1.1;
  option domain-name-servers 8.8.8.8;
}

3. 绑定的网卡不对

dhcpd.conf 或启动参数中指定了错误接口:

DHCPDARGS=eth0

确认接口名:

ip a

二、网络层问题

4. 不在同一广播域

DHCP 是 广播协议

  • 客户端和服务器必须同 VLAN / 同子网
  • 跨网段需要 DHCP Relay(中继)

5. 防火墙拦截

DHCP 使用:

  • UDP 67(服务器)
  • UDP 68(客户端)

检查:

iptables -L -n

允许:

iptables -I INPUT -p udp --dport 67 -j ACCEPT

三、地址池问题

6. 地址池耗尽

cat /var/lib/dhcpd/dhcpd.leases

若全部已分配,则不会分配新 IP。


7. IP 被 MAC 绑定占用

host pc1 {
  hardware ethernet 00:11:22:33:44:55;
  fixed-address 192.168.1.50;
}

若绑定 IP 不在 range 内,也可能导致异常。


四、客户端问题

8. 客户端未发送 DHCP 请求

  • 网卡未 up
  • 手动设置了静态 IP
  • 防火墙拦截 DHCP

客户端测试:

dhclient -v eth0

五、日志排查(最关键)

服务端日志

journalctl -u dhcpd -f
# 或
tail -f /var/log/messages

客户端日志

journalctl -u NetworkManager

六、快速自检清单 ✅

  • [ ] DHCP 服务已启动
  • [ ] 配置文件通过 dhcpd -t
  • [ ] subnet / range 正确
  • [ ] 同网段 / 有中继
  • [ ] 防火墙放行 67/68
  • [ ] 地址池未满
  • [ ] 日志无报错

如果你愿意,可以把 dhcpd.conf + 报错日志 贴出来,我可以直接帮你定位是哪一条导致的。

0