在 CentOS 中 dhclient 不生效(执行了但拿不到 IP / 配置没生效)是比较常见的问题,通常由以下几类原因导致。下面按「最常见 → 较少见」给你一个排查清单。
CentOS 7/8 默认使用 NetworkManager,它会自己调用 dhclient,你手动执行 dhclient 反而会被忽略或立刻被收回。
表现
dhclient eth0 执行没报错ip addr 看不到 IP解决
# 查看 NetworkManager 是否管理该网卡
nmcli device status
# 方法一:用 nmcli(推荐)
nmcli connection up eth0
# 方法二:彻底禁用 NetworkManager(服务器环境)
systemctl stop NetworkManager
systemctl disable NetworkManager
dhclient 不会自动 up 网卡。
ip link show eth0
如果是 DOWN:
ip link set eth0 up
dhclient eth0
如果 /etc/sysconfig/network-scripts/ifcfg-eth0 中有:
BOOTPROTO=static
dhclient 不会生效。
解决
BOOTPROTO=dhcp
ONBOOT=yes
然后:
ifdown eth0
ifup eth0
ps aux | grep dhclient
如果有旧进程:
kill -9 $(pgrep dhclient)
rm -f /var/run/dhclient*.pid
dhclient eth0
tcpdump -i eth0 port 67 or port 68
CentOS 8 可能用内部 DHCP 客户端。
nmcli connection show eth0 | grep dhcp
可强制使用 dhclient:
nmcli connection modify eth0 ipv4.dhcp-client-id mac
nmcli connection up eth0
ip link
nmcli device status
cat /etc/sysconfig/network-scripts/ifcfg-eth0
ps aux | grep dhclient
dhclient -v eth0
ip addr
CentOS 上 dhclient 不生效,90% 是 NetworkManager 在管网卡,或网卡是 static / down 状态。
如果你愿意,可以贴:
ifcfg-eth0 内容nmcli device status我可以直接帮你定位是哪一种。