温馨提示×

ubuntu dhcp为何分配不到地址

小樊
43
2026-10-01 04:58:08
栏目: 智能运维

在 Ubuntu 上出现 DHCP 获取不到 IP 地址 的原因有很多,下面按常见原因 → 排查方法 → 解决办法给你一个系统性的思路。


一、先确认基础网络状态

1. 查看网卡是否识别

ip link
  • 看不到网卡(如 eth0、ens33)→ 驱动或虚拟机的网卡问题
  • 网卡状态是 DOWN:
sudo ip link set ens33 up

2. 查看当前 IP

ip addr

如果只有 127.0.0.1,说明没拿到地址。


二、Ubuntu 网络管理方式(很关键)

Ubuntu 18.04+ 默认使用 netplan,而不是 /etc/network/interfaces。

查看 netplan 配置

ls /etc/netplan/
cat /etc/netplan/*.yaml

正确示例(DHCP)

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true

应用配置

sudo netplan apply

❌ 常见错误:

  • dhcp4: no
  • 缩进错误(YAML 对空格敏感)
  • 网卡名写错

三、手动测试 DHCP(最直接)

sudo dhclient -v ens33

观察输出:

  • 有 DHCPOFFER → 网络没问题,是配置问题
  • 卡住或超时 → 网络/服务端问题

释放并重试:

sudo dhclient -r ens33
sudo dhclient ens33

四、常见导致 DHCP 失败的原因

1️⃣ DHCP 服务器没开 / 地址池满

  • 路由器、交换机、VM 的 DHCP 服务未启用
  • 虚拟机没开 “桥接 / NAT 自带 DHCP”

✅ 检查:

  • 其他设备能否拿到 IP
  • 路由器 DHCP 地址池是否耗尽

2️⃣ 虚拟机网络模式错误(非常常见)

  • VMware / VirtualBox
    • 选了“仅主机”
    • 没开 NAT DHCP

✅ 建议:

  • VMware:NAT 或 桥接
  • VirtualBox:Bridge / NAT

3️⃣ 防火墙或 SELinux 拦截(少见但存在)

sudo ufw status

临时关闭测试:

sudo ufw disable

4️⃣ NetworkManager 与 netplan 冲突

systemctl status NetworkManager
systemctl status systemd-networkd

如果两者都在管理同一网卡,可能冲突。

✅ 解决:

  • 统一使用 netplan
  • 或统一使用 NetworkManager

5️⃣ MAC 地址被绑定 / 被封

  • DHCP 做了 MAC 白名单
  • 静态绑定冲突

✅ 检查服务器 DHCP 日志


五、查看 DHCP 日志(定位问题)

journalctl -u systemd-networkd -u NetworkManager -b

或:

sudo tcpdump -i ens33 port 67 or port 68
  • 能看到 DHCP 请求但没回复 → 网络侧问题
  • 看不到请求 → 本机配置问题

六、快速自检清单 ✅

  • [ ] 网卡 UP
  • [ ] netplan 配置正确
  • [ ] dhclient 能跑
  • [ ] 虚拟机网络模式正确
  • [ ] DHCP 服务器正常
  • [ ] 没有防火墙拦截

如果你愿意,可以把下面信息发我,我可以精准判断:

  1. Ubuntu 版本
  2. 物理机还是虚拟机(VMware / VirtualBox / 云)
  3. ip addr 和 netplan 配置内容
  4. dhclient -v 的输出

我可以直接帮你改到能用。

0 踩