在 Debian 上排查 DHCP 问题,可以按“分层排查”的思路进行:先确认客户端/服务端是否运行,再看网络与配置,最后看日志和报文。下面分别给出客户端无法获取 IP和DHCP 服务器不分配 IP的常见诊断方法。
dhclient 或 systemd-networkd / NetworkManagerisc-dhcp-server 或 dnsmasqip link
ip addr
UPsudo dhclient -v eth0
观察输出是否有:
DHCPDISCOVERDHCPOFFERDHCPREQUESTDHCPACK若卡在 DHCPDISCOVER,说明:
systemctl status dhclient
# 或
systemctl status networking
若使用 NetworkManager:
systemctl status NetworkManager
nmcli device status
journalctl -u dhclient
journalctl -u networking
dmesg | grep eth
sudo tcpdump -i eth0 port 67 or port 68
正常应看到:
systemctl status isc-dhcp-server
# 或
systemctl status dnsmasq
/etc/dhcp/dhcpd.conf
常见错误:
检查监听接口:
/etc/default/isc-dhcp-server
INTERFACESv4="eth0"
dhcpd -t
journalctl -u isc-dhcp-server
常见错误:
Address already in useNo subnet declarationPermission deniediptables -L -n
确保允许:
| 现象 | 可能原因 |
|---|---|
| 一直 DHCPDISCOVER | 网络不通 / 无服务器 |
| 有 OFFER 无 ACK | 地址冲突 / 配置错误 |
| 获取 IP 但无法上网 | 网关 / DNS 配置错误 |
| 偶尔获取不到 | 地址池耗尽 |
| 虚拟机失败 | 桥接模式错误 |
ip addr → 看接口dhclient -v → 看过程tcpdump → 看报文journalctl → 看日志如果你愿意,可以告诉我:
我可以帮你做更精准的分析。