在 Ubuntu 上调试 DHCP 问题,通常分为客户端(获取 IP)和服务端(提供 IP)两种情况。下面按常见场景给你一套系统化的排查方法。
isc-dhcp-server / dnsmasq 等,给别人分配 IPip addr
ip link
确认网卡是 UP 状态(不是 DOWN)。
sudo dhclient -r eth0
sudo dhclient -v eth0
-v 可以看到详细交互过程。
journalctl -u NetworkManager
journalctl -u systemd-networkd
或实时看:
journalctl -f
sudo tcpdump -i eth0 port 67 or port 68 -n
正常应看到:
如果只有 Discover 没有 Offer → 网络或服务器端问题。
cat /etc/netplan/*.yaml
示例(DHCP 客户端):
network:
version: 2
ethernets:
eth0:
dhcp4: true
修改后:
sudo netplan apply
systemctl status isc-dhcp-server
# 或
systemctl status dnsmasq
journalctl -u isc-dhcp-server -f
常见错误:
(以 isc-dhcp-server 为例)
sudo nano /etc/dhcp/dhcpd.conf
确认:
subnet 正确range 合理/etc/default/isc-dhcp-server 中指定INTERFACESv4="eth0"
sudo tcpdump -i eth0 port 67 -n
看不到 Discover → 客户端或网络问题。
| 现象 | 可能原因 |
|---|---|
| 一直卡在 DHCP Discover | 防火墙、VLAN、交换机隔离 |
| DHCP Offer 有但无 ACK | 地址池耗尽、冲突 |
| dhclient 报错 | 接口名错、权限问题 |
| Netplan 不生效 | YAML 缩进错误 |
| 虚拟机能 DHCP,物理机不能 | 交换机端口隔离 |
ip addr
ip route
systemctl status dhcpd
journalctl -u isc-dhcp-server
tcpdump -i eth0 port 67 or 68
dhclient -v eth0
netplan apply
如果你愿意,可以告诉我:
我可以直接帮你定位到具体配置问题。