在 Linux 下排查 DHCP 问题,可以按「网络接口 → DHCP 客户端 → 服务端 → 报文层面」逐层排查。下面是一套常用且实用的排错思路。
ip link
ip addr
常见异常:
DOWN127.0.0.1 或 fe80::)启用网卡:
ip link set eth0 up
ethtool eth0
关注:
Link detected: yes| 系统 | 客户端 |
|---|---|
| CentOS 7 | dhclient |
| CentOS 8 / Rocky / Alma | NetworkManager |
| Ubuntu | systemd-networkd / NetworkManager |
| 嵌入式 | udhcpc |
dhclient -v eth0
或释放后再请求:
dhclient -r eth0
dhclient -v eth0
看到:
DHCPDISCOVERDHCPOFFERDHCPREQUESTDHCPACK说明 DHCP 正常。
ip addr show eth0
cat /var/lib/dhcp/dhclient.leases
systemctl status NetworkManager
nmcli device status
nmcli connection show
重新激活:
nmcli connection down eth0
nmcli connection up eth0
systemctl status systemd-networkd
networkctl status eth0
配置示例(/etc/systemd/network/eth0.network):
[Match]
Name=eth0
[Network]
DHCP=yes
如果是你自己的 DHCP 服务器:
systemctl status dhcpd
# 或
systemctl status isc-dhcp-server
cat /etc/dhcp/dhcpd.conf
常见问题:
journalctl -u dhcpd -f
# 或
tail -f /var/log/messages
tcpdump -i eth0 port 67 or port 68 -nn -v
正常流程应看到:
如果:
| 现象 | 可能原因 |
|---|---|
| 一直卡在 obtaining IP | 服务端无响应 / 防火墙 |
| 能拿到 IP 但马上掉 | 地址冲突 / 租约异常 |
| 虚拟机无 DHCP | 虚拟交换机未开 DHCP |
| 容器无 IP | 网络驱动问题 |
| 只拿到 IPv6 | DHCPv4 被禁用 |
iptables -L -n
firewall-cmd --list-all
DHCP 需要:
ip addrdhclient -v eth0tcpdump port 67 or 68如果你愿意,可以告诉我:
我可以给你针对性的命令。