在 Ubuntu 上排查 DHCP 问题,可以按从底层到上层逐步检查。下面是一套常用排查流程(适用于 Ubuntu 18.04+ / 20.04 / 22.04,使用 Netplan + systemd-networkd / NetworkManager)。
ip addr
ip link
重点看:
eth0、ens33)UP如果接口是 DOWN:
sudo ip link set eth0 up
Ubuntu 通常使用:
systemctl status NetworkManager
systemctl status systemd-networkd
sudo dhclient -v eth0
观察输出:
DHCPDISCOVERDHCPOFFERsudo nmcli device reapply eth0
# 或
sudo nmcli connection down "连接名"
sudo nmcli connection up "连接名"
cat /etc/netplan/*.yaml
示例(DHCP 正确配置):
network:
version: 2
ethernets:
eth0:
dhcp4: true
应用配置:
sudo netplan apply
⚠ 常见错误:
dhcp4: nojournalctl -u NetworkManager
journalctl -u systemd-networkd
journalctl | grep -i dhcp
看是否有:
DHCPv4 request timed outNo DHCP offers receivedsudo dhclient eth0
sudo tcpdump -i eth0 port 67 or port 68
应看到:
DHCP DiscoverDHCP Offer如果只有 Discover 没有 Offer → DHCP 服务器问题 / 网络隔离
sudo ufw status
确认未阻断:
如果是虚拟机:
| 现象 | 可能原因 |
|---|---|
| 无 IP | DHCP 服务器未响应 |
| 一直 timeout | 防火墙 / VLAN / 网线 |
| 有 IP 但上不了网 | 网关 / DNS 错误 |
| 重启失效 | Netplan 配置错误 |
| 虚拟机异常 | 网卡模式错误 |
如果你愿意,可以贴出:
ip addr/etc/netplan/*.yamljournalctl | grep dhcp我可以帮你精确判断是哪一步出的问题。