在 CentOS 上 dhclient 失败是比较常见的问题,原因通常集中在网络配置、接口状态、服务冲突、权限或日志错误这几类。下面按「常见原因 → 排查方法 → 解决办法」来说明。
ip link
如果看到:
eth0: <NO-CARRIER,...> state DOWN
说明网卡没起来。
解决:
ip link set eth0 up
dhclient eth0
CentOS 7/8 默认使用 NetworkManager,手动跑 dhclient 容易被接管或失败。
现象:
dhclient 卡住dhclient is already running解决:
systemctl stop NetworkManager
dhclient eth0
或更好方式:
nmcli con up eth0
ps aux | grep dhclient
如果有旧进程:
kill -9 $(pidof dhclient)
dhclient eth0
查看:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
错误示例:
BOOTPROTO=none
ONBOOT=no
正确示例:
BOOTPROTO=dhcp
ONBOOT=yes
修改后:
systemctl restart network
验证:
tcpdump -i eth0 port 67 or port 68
没有 DHCP 请求/响应 → 网络侧问题
dhclient 需要 root:
sudo dhclient eth0
排查:
getenforce
setenforce 0 # 临时关闭测试
ip addr
ip link set eth0 up
systemctl stop NetworkManager
pkill dhclient
dhclient -v eth0
| 版本 | 推荐方式 |
|---|---|
| CentOS 6 | service network restart |
| CentOS 7 | nmcli / network.service |
| CentOS 8 | NetworkManager 必须 |
你可以贴出:
dhclient -v eth0 的输出ip addr 和 ifcfg-eth0我可以直接帮你定位是哪一条原因。