温馨提示×

为何linux dhcp不分配

小樊
46
2026-10-21 06:42:09
栏目: 智能运维

“Linux 上 DHCP 不分配 IP”原因很多,下面按最常见 → 较少见给你一个排查清单,你可以逐条对照。


一、DHCP 服务端(最常见问题)

1. DHCP 服务没启动

systemctl status dhcpd        # ISC DHCP
systemctl status isc-dhcp-server
systemctl status dnsmasq

没运行就启动:

systemctl start dhcpd
systemctl enable dhcpd

2. 监听的网卡不对

DHCP 默认只在某些接口监听。

检查配置(以 ISC DHCP 为例):

/etc/dhcp/dhcpd.conf

确认:

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.100 192.168.1.200;
}

并且:

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

3. 地址池用完

cat /var/lib/dhcpd/dhcpd.leases

如果 binding state active 很多,可能 IP 用光了。


二、网络层问题(非常常见)

4. 客户端和服务端不在同一广播域

DHCP 是 广播协议:

  • 跨 VLAN / 子网 → 必须配置 DHCP Relay(中继)
  • 防火墙阻断 UDP 67/68

5. 防火墙拦截

iptables -L -n

确保允许:

udp 67,68

三、Linux 客户端问题

6. 客户端没用 DHCP

ip addr

如果是静态 IP,说明没走 DHCP。

客户端应配置:

/etc/network/interfaces
auto eth0
iface eth0 inet dhcp

或 NetworkManager 中设为 Automatic (DHCP)

7. 客户端 DHCP 请求失败

手动测试:

dhclient -v eth0

看是否有:

DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK

四、虚拟环境常见坑

8. 虚拟机网络模式不对

  • NAT / 桥接:通常有 DHCP
  • Host-only / 内网:可能没 DHCP 服务

9. MAC 被拒绝

dhcpd.conf
host badclient {
  hardware ethernet xx:xx:xx:xx:xx:xx;
  deny booting;
}

五、日志是最好用的工具

服务端

journalctl -u dhcpd -f

或

tail -f /var/log/messages

客户端

journalctl -u NetworkManager -f

快速判断一句话总结

Linux DHCP 不分配,90% 是:服务没起、网卡不对、跨网段没中继、或客户端没发 DHCP 请求。

如果你愿意,可以告诉我:

  • 是 服务端还是客户端?
  • 物理机 / 虚拟机?
  • 用的 dhcpd / dnsmasq / systemd-networkd?

我可以直接帮你精确到配置。

0 踩