温馨提示×

Ubuntu为何DHCP获取失败

小樊
35
2026-08-23 04:29:06
栏目: 智能运维

Ubuntu 在 DHCP 获取地址失败,通常不是单一原因,而是网络环境、配置、驱动或服务中的某一个环节出了问题。下面按最常见 → 较少见的顺序,帮你系统排查。


一、最常见原因(90% 都在这里)

1️⃣ 网络接口未启用

ip a

如果接口是 DOWN

sudo ip link set eth0 up

(把 eth0 换成你的接口名,如 ens33


2️⃣ NetworkManager 或 systemd-networkd 冲突

Ubuntu 桌面版默认用 NetworkManager,服务器版常用 systemd-networkd

检查谁在管理网络:

sudo systemctl status NetworkManager
sudo systemctl status systemd-networkd

建议:

  • 桌面版:只用 NetworkManager
  • 服务器版:只用 systemd-networkd
  • 不要同时启用

3️⃣ DHCP 客户端未运行

Ubuntu 默认使用 dhclientsystemd-networkd 的 DHCP。

手动请求一次:

sudo dhclient -v eth0

如果报错:

  • No DHCPOFFERS received → 不是 Ubuntu 问题,是网络/路由器问题

二、Ubuntu 配置问题

4️⃣ Netplan 配置错误(最常见)

Ubuntu 18.04+ 使用 Netplan

查看配置:

cat /etc/netplan/*.yaml

✅ 正确 DHCP 示例:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

应用配置:

sudo netplan apply

⚠️ 常见错误:

  • 缩进错误(必须是空格,不能是 Tab)
  • 接口名写错
  • 同时配置了静态 IP 和 DHCP

5️⃣ 接口被设置为静态 IP

如果之前配置过静态 IP,DHCP 会失败。

检查:

ip addr

三、网络 / 路由器问题(非常常见)

6️⃣ 路由器未开启 DHCP

确认:

  • 路由器 DHCP 服务已启用
  • 地址池未耗尽

在 Ubuntu 上抓包验证:

sudo tcpdump -i eth0 port 67 or port 68

如果 完全看不到 DHCP Offer → 问题在路由器或交换机


7️⃣ 防火墙 / 交换机 / VLAN 问题

  • 交换机端口未放行 DHCP
  • VLAN 不匹配
  • 企业网络限制 MAC

测试:

sudo nmap --script broadcast-dhcp-discover

四、驱动 / 硬件问题

8️⃣ 网卡驱动异常

lspci -k | grep -A3 Ethernet

如果驱动未加载:

sudo modprobe <驱动名>

9️⃣ 虚拟机的特殊问题

环境 常见问题
VMware 网卡类型选 E1000 / VMXNET3
VirtualBox 网络模式选 桥接NAT
云服务器 禁用 cloud-init 会断网

五、快速排查流程(推荐)

ip a
sudo netplan apply
sudo dhclient -v eth0

如果仍失败:

journalctl -u NetworkManager
journalctl -u systemd-networkd

六、我可以进一步帮你

你可以直接贴出以下信息,我可以精准定位

  1. Ubuntu 版本(lsb_release -a
  2. 物理机 / 虚拟机 / 云服务器?
  3. ip a 输出
  4. /etc/netplan/*.yaml 内容
  5. dhclient -v 报错信息

我可以一步一步带你修好 ✅

0