在 Ubuntu 上 dhclient 失败是很常见的问题,原因可能有很多种。下面按常见原因 → 表现 → 解决办法给你梳理一下。
Ubuntu 桌面版默认使用 NetworkManager,它自己会管理 DHCP,而不是你手动跑 dhclient。
现象
sudo dhclient eth0
失败或无反应,或立刻退出。
解决
dhclientnmcli device reapply eth0
# 或
sudo systemctl restart NetworkManager
Ubuntu 18.04+ 使用 predictable network names:
ens33enp0s3eth0检查
ip addr
错误示例
dhclient eth0
# eth0 不存在 → 失败
接口没启用,dhclient 无法工作。
检查
ip link show
解决
sudo ip link set ens33 up
sudo dhclient ens33
测试
sudo tcpdump -i ens33 port 67 or port 68
如果没有 DHCP Discover/Offer,说明网络层问题。
现象
dhclient: bound to XXX
# 或
dhclient: Answer already exists
解决
sudo pkill dhclient
sudo rm -f /var/lib/dhcp/dhclient*.leases
sudo dhclient ens33
Ubuntu 已不再推荐手动 dhclient。
正确方式
sudo netplan apply
示例 /etc/netplan/01-netcfg.yaml:
network:
version: 2
ethernets:
ens33:
dhcp4: true
可能使用 systemd-networkd 而不是 NetworkManager。
systemctl status systemd-networkd
journalctl -u NetworkManager
journalctl -u systemd-networkd
或:
sudo dhclient -v ens33
ip addr 看接口名如果你愿意,可以把下面信息发我,我可以精准判断:
ip addr 输出sudo dhclient -v 接口名 的完整报错我可以直接告诉你该用哪条命令。