Ubuntu 在 DHCP 获取地址失败,通常不是单一原因,而是网络环境、配置、驱动或服务中的某一个环节出了问题。下面按最常见 → 较少见的顺序,帮你系统排查。
ip a
如果接口是 DOWN:
sudo ip link set eth0 up
(把 eth0 换成你的接口名,如 ens33)
Ubuntu 桌面版默认用 NetworkManager,服务器版常用 systemd-networkd。
检查谁在管理网络:
sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd
✅ 建议:
Ubuntu 默认使用 dhclient 或 systemd-networkd 的 DHCP。
手动请求一次:
sudo dhclient -v eth0
如果报错:
No DHCPOFFERS received → 不是 Ubuntu 问题,是网络/路由器问题Ubuntu 18.04+ 使用 Netplan
查看配置:
cat /etc/netplan/*.yaml
✅ 正确 DHCP 示例:
network:
version: 2
ethernets:
eth0:
dhcp4: true
应用配置:
sudo netplan apply
⚠️ 常见错误:
如果之前配置过静态 IP,DHCP 会失败。
检查:
ip addr
确认:
在 Ubuntu 上抓包验证:
sudo tcpdump -i eth0 port 67 or port 68
如果 完全看不到 DHCP Offer → 问题在路由器或交换机
测试:
sudo nmap --script broadcast-dhcp-discover
lspci -k | grep -A3 Ethernet
如果驱动未加载:
sudo modprobe <驱动名>
| 环境 | 常见问题 |
|---|---|
| VMware | 网卡类型选 E1000 / VMXNET3 |
| VirtualBox | 网络模式选 桥接 或 NAT |
| 云服务器 | 禁用 cloud-init 会断网 |
ip a
sudo netplan apply
sudo dhclient -v eth0
如果仍失败:
journalctl -u NetworkManager
journalctl -u systemd-networkd
你可以直接贴出以下信息,我可以精准定位:
lsb_release -a)ip a 输出/etc/netplan/*.yaml 内容dhclient -v 报错信息我可以一步一步带你修好 ✅