Linux 下 DHCP 获取失败(无法自动获取 IP)是常见问题,原因可以从网络层、系统配置、服务、驱动/硬件几个层面来排查。下面按最常见原因 + 对应排查方法说明。
ip addr
或
ifconfig
重点看:
eth0, ens33)UP如果没 UP:
ip link set eth0 up
dhclient -v eth0
或
dhcpcd eth0
常见错误:
No DHCPOFFERS received → 网络侧问题Permission denied → 权限 / SELinuxbind: Address already in use → 多个 DHCP 客户端冲突不同发行版不同:
which dhclient
which dhcpcd
如果没有:
# Debian / Ubuntu
apt install isc-dhcp-client
# RHEL / CentOS
yum install dhcp-client
如果你手动跑 dhclient,但系统用的是 NetworkManager:
systemctl status NetworkManager
✅ 推荐做法(用系统管理):
nmcli device status
nmcli connection up eth0
或设置自动 DHCP:
nmcli con mod eth0 ipv4.method auto
nmcli con up eth0
查看配置:
cat /etc/network/interfaces # Debian
cat /etc/sysconfig/network-scripts/ifcfg-eth0 # CentOS
如果有:
BOOTPROTO=static
或
address 192.168.x.x
说明不是 DHCP。
在另一台机器测试:
ping 网关
或抓包:
tcpdump -i eth0 port 67 or port 68
没有 DHCP Discover/Offer → 网络没响应。
| 现象 | 原因方向 |
|---|---|
No DHCPOFFERS |
路由器/交换机 |
eth0: DOWN |
网卡未启用 |
command not found |
没装 DHCP 客户端 |
| 手动能通,重启失效 | NetworkManager 配置 |
| 虚拟机突然不行 | 虚拟网卡变更 |
如果你愿意,可以告诉我:
ip addr 和 dhclient -v 的输出我可以直接帮你定位到具体原因。