在 Linux 下排查 DHCP 问题,可以按“由下到上、由客户端到服务端”的思路来。下面给你一套实战排查清单。
ip addr
ip link
重点看:
查看链路层:
ethtool eth0
(看 Link detected: yes)
dhclientNetworkManagersystemd-networkdps aux | grep -E 'dhclient|NetworkManager|systemd-networkd'
dhclient -v eth0
观察输出:
DHCPDISCOVERDHCPOFFERDHCPACK释放后再请求:
dhclient -r eth0
dhclient -v eth0
ip addr show eth0
或:
ifconfig eth0
看是否有:
inet 地址ip route
应有类似:
default via 192.168.1.1 dev eth0
cat /etc/resolv.conf
应有:
nameserver 192.168.1.1
tcpdump -i eth0 port 67 or port 68 -nn
你应该看到:
如果只有 DISCOVER 没有 OFFER:
isc-dhcp-serverdnsmasqkea-dhcpsystemctl status isc-dhcp-server
journalctl -u isc-dhcp-server -f
cat /etc/dhcp/dhcpd.conf
确认:
✅ 网卡没 UP
✅ 防火墙拦了 67/68
✅ VLAN / 交换机未放行 DHCP
✅ NetworkManager 和 dhclient 冲突
✅ 多网卡导致默认路由错误
✅ DHCP 地址池耗尽
ip addr → 有 IP 吗?dhclient -v → 能拿到吗?tcpdump → 服务器回包吗?如果你愿意,可以告诉我:
我可以直接帮你定位。