温馨提示×

ubuntu dhcp为何失败

小樊
77
2026-07-12 17:15:55
栏目: 智能运维

Ubuntu 上 DHCP 失败 的原因很多,下面按最常见 → 进阶排查给你一个系统性的排查思路,基本能覆盖 90% 情况。


一、最常见原因(优先检查)

1️⃣ NetworkManager 与 netplan 冲突(最常见)

Ubuntu 18.04+ 默认使用 netplan,如果同时启用了 NetworkManager 且无正确配置,DHCP 会失败。

检查:

ps aux | grep -E 'NetworkManager|systemd-networkd'

查看 netplan 配置:

cat /etc/netplan/*.yaml

✅ 典型 DHCP 配置示例:

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

应用配置:

sudo netplan apply

2️⃣ 网卡未 UP

DHCP 在网卡 DOWN 时必然失败。

ip link

如果看到:

eth0: <BROADCAST,MULTICAST> state DOWN

手动 UP:

sudo ip link set eth0 up

3️⃣ DHCP 客户端未运行

Ubuntu 默认使用 systemd-networkdNetworkManager 处理 DHCP。

检查 DHCP 客户端状态:

systemctl status systemd-networkd
systemctl status NetworkManager

重启:

sudo systemctl restart systemd-networkd
# 或
sudo systemctl restart NetworkManager

二、网络环境问题(非常常见)

4️⃣ 没有 DHCP 服务器

  • 路由器未开启 DHCP
  • 公司/数据中心网络是静态 IP
  • 虚拟机的网络模式错误(NAT / 桥接)

验证:

sudo dhclient -v eth0

如果卡住或超时,说明 没有 DHCP 响应


5️⃣ 防火墙 / iptables 阻挡 DHCP

DHCP 使用:

  • UDP 67(服务器)
  • UDP 68(客户端)

排查:

sudo iptables -L

临时关闭测试:

sudo ufw disable

三、配置或系统问题

6️⃣ netplan 配置语法错误

YAML 缩进必须严格

❌ 错误示例:

dhcp4: true
  optional: true

✅ 正确:

dhcp4: true
  optional: true

测试配置:

sudo netplan try

7️⃣ 多个 DHCP 客户端冲突

如果你手动运行了:

dhclient

而 systemd-networkd 也在运行,会冲突。

解决:

sudo killall dhclient
sudo systemctl restart systemd-networkd

8️⃣ MAC 地址被路由器拉黑

  • 路由器绑定了旧 MAC
  • DHCP 地址池已满

✅ 检查:

ip link show eth0

✅ 临时更换 MAC 测试:

sudo ip link set eth0 down
sudo ip link set eth0 address 00:11:22:33:44:55
sudo ip link set eth0 up

四、快速定位命令(强烈推荐)

ip addr
ip route
journalctl -u systemd-networkd -f
journalctl -u NetworkManager -f

五、常见错误日志含义

日志 含义
DHCPDISCOVER 无响应 没 DHCP 服务器
DHCPNAK IP 被拒绝
No lease DHCP 失败
Timeout 网络不通

六、如果你愿意,我可以直接帮你定位

你可以直接贴出以下信息(打码敏感内容):

ip addr
cat /etc/netplan/*.yaml
journalctl -u systemd-networkd -n 50

我可以直接告诉你 是哪一步失败 + 怎么改

0