Linux 无法获取 DHCP(即无法通过 DHCP 拿到 IP 地址)是一个很常见的问题,原因可能涉及网络配置、驱动、服务、物理连接或上游设备。下面按常见原因逐一说明,并给出排查思路。
检查:
ip link
看网卡状态是否是 UP,有没有 NO-CARRIER
网卡被 down 掉也会导致 DHCP 失败。
ip link set eth0 up
Linux 常见 DHCP 客户端:
dhclientdhcpcdsystemd-networkd如果没有安装或没运行:
which dhclient
如果使用 NetworkManager:
systemctl status NetworkManager
如果使用 systemd-networkd:
systemctl status systemd-networkd
如果 /etc/network/interfaces 或 NetworkManager 配置成静态 IP,就不会请求 DHCP。
示例(静态):
iface eth0 inet static
应改为:
iface eth0 inet dhcp
有时 DHCP 拿到了地址,但:
检查:
ip addr
ip route
lspci -k | grep -A3 Ethernet
lsmod | grep driver_name
没有驱动 → 无法发包 → DHCP 失败
抓包验证:
tcpdump -i eth0 port 67 or port 68
如果没有 DHCP Discover 发出 → 本地问题
如果只有 Discover 没有 Offer → 路由器问题
# 查看网卡
ip addr
ip link
# 手动请求 DHCP
dhclient -v eth0
# 看日志
journalctl -u NetworkManager
dmesg | grep eth0
No DHCPOFFERS receivedDHCPDISCOVER on eth0 to 255.255.255.255 port 67carrier lost如果你愿意,可以告诉我:
我可以直接帮你定位具体原因并给修复命令。