在 CentOS 上 dhclient “不生效”是很常见的问题,通常不是命令本身坏了,而是使用方式或系统管理机制导致的。下面按最常见原因 → 排查思路 → 解决方法来说明。
CentOS 7/8/Stream 默认使用 NetworkManager,而不是传统的 network 服务。
如果你直接执行:
dhclient eth0
但系统仍由 NetworkManager 管理,结果可能:
dhclient 进程被立刻杀掉✅ 确认是否被 NetworkManager 管理
nmcli device status
如果状态是 connected / managed,说明不是你手动 dhclient 的天下。
✅ 正确做法(推荐)
nmcli connection modify eth0 ipv4.method auto
nmcli connection up eth0
dhclient 不会对未启用的网卡生效。
ip link show eth0
如果看到 state DOWN:
ip link set eth0 up
dhclient eth0
CentOS 网络配置文件可能覆盖了 DHCP:
cat /etc/sysconfig/network-scripts/ifcfg-eth0
如果看到:
BOOTPROTO=none
或
BOOTPROTO=static
那 dhclient 不会自动改配置。
✅ 改为:
BOOTPROTO=dhcp
ONBOOT=yes
然后:
systemctl restart network
# 或
nmcli connection up eth0
一个网卡只能有一个 dhclient。
ps aux | grep dhclient
杀掉旧的:
pkill dhclient
dhclient eth0
不一定是客户端问题。
排查:
tcpdump -i eth0 port 67 or port 68
如果没有 DHCP Discover/Offer,说明:
network 服务CentOS 8 以后:
systemctl status network
可能不存在。
✅ 只用:
nmcli
或
nmtui
nmcli connection modify eth0 ipv4.method auto
nmcli connection up eth0
ip link set eth0 up
dhclient -v eth0
ip link 网卡是 UPBOOTPROTO=dhcp如果你愿意,可以贴一下:
ip addrifcfg-eth0nmcli device status我可以直接帮你判断是哪一种情况。