Linux 下 DHCP 失败 的原因很多,一般不会只有一个原因。下面按常见场景 + 排查思路给你一个系统性的总结,基本能覆盖 90% 的情况。
ip link
DOWN → 没起来LOWER_UP → 物理链路不通✅ 解决:
ip link set eth0 up
不同发行版用的不一样:
| 发行版 | 客户端 |
|---|---|
| Ubuntu / Debian | dhclient / NetworkManager |
| CentOS / RHEL 7+ | dhclient / NetworkManager |
| Arch | dhcpcd / NetworkManager |
which dhclient
which dhcpcd
✅ 没装就装:
apt install isc-dhcp-client
# 或
yum install dhcp-client
dhclient eth0
如果卡住或报错,常见原因:
✅ 排查:
tcpdump -i eth0 port 67 or port 68
如果 只有 Discover,没有 Offer → 网络里没 DHCP
iptables -L
systemctl status firewalld
getenforce
✅ 临时关闭测试:
systemctl stop firewalld
setenforce 0
✅ 指定接口:
dhclient -v eth0
systemctl status NetworkManager
✅ 解决方式之一:
nmcli device reapply eth0
或禁用 NetworkManager(服务器不推荐):
systemctl disable NetworkManager
错误示例:
iface eth0 inet static
但没写地址
✅ 正确 DHCP:
iface eth0 inet dhcp
| 模式 | 是否有 DHCP |
|---|---|
| NAT | ✅ 有 |
| 桥接 | 看物理网络 |
| 仅主机 | ❌ 通常没有 |
✅ 检查虚拟机设置
journalctl -u NetworkManager
journalctl -u dhclient
或:
dmesg | grep eth
ip a
ip route
ping 8.8.8.8
dhclient -v eth0
journalctl -xe
| 报错 | 含义 |
|---|---|
| No DHCPOFFERS received | 没 DHCP 服务器 |
| bound to xxx | 成功 |
| DHCPDECLINE | IP 冲突 |
| Network is unreachable | 路由 / 链路问题 |
你可以直接贴出:
ip adhclient -v eth0 的输出我可以 直接帮你定位是哪一类问题 ✅