在 CentOS 上 dhclient 失败是比较常见的问题,原因通常可以归为几类。下面按最常见 → 较少见的顺序说明,并给出排查思路。
ip link
如果网卡是 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
检查:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
如果有:
BOOTPROTO=none
或
BOOTPROTO=static
dhclient 不会生效。
改为:
BOOTPROTO=dhcp
然后:
systemctl restart network
可能原因:
测试:
tcpdump -i eth0 port 67 or port 68
没有 DHCP 请求/响应 → 网络侧问题
ps aux | grep dhclient
清理:
kill -9 $(pgrep dhclient)
rm -f /var/run/dhclient*.pid
dhclient eth0
rm -f /var/lib/dhclient/dhclient*.leases
dhclient eth0
dhclient 需要 root:
sudo dhclient eth0
CentOS 8 推荐:
nmcli connection modify eth0 ipv4.method auto
nmcli connection up eth0
临时测试:
setenforce 0
systemctl stop firewalld
ip addr
ip link
ping 8.8.8.8
journalctl -xe
dhclient -v eth0
如果你愿意,可以贴出:
cat /etc/redhat-release)ip addr)dhclient -v eth0 的完整输出我可以直接告诉你具体是哪一条原因。