“Linux 上 DHCP 不分配 IP”原因很多,下面按最常见 → 较少见给你一个排查清单,你可以逐条对照。
systemctl status dhcpd # ISC DHCP
systemctl status isc-dhcp-server
systemctl status dnsmasq
没运行就启动:
systemctl start dhcpd
systemctl enable dhcpd
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"
cat /var/lib/dhcpd/dhcpd.leases
如果 binding state active 很多,可能 IP 用光了。
DHCP 是 广播协议:
iptables -L -n
确保允许:
udp 67,68
ip addr
如果是静态 IP,说明没走 DHCP。
客户端应配置:
/etc/network/interfaces
auto eth0
iface eth0 inet dhcp
或 NetworkManager 中设为 Automatic (DHCP)
手动测试:
dhclient -v eth0
看是否有:
DHCPDISCOVER
DHCPOFFER
DHCPREQUEST
DHCPACK
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 请求。
如果你愿意,可以告诉我:
我可以直接帮你精确到配置。