Linux 下 DHCP 失效(无法获取 IP) 是很常见的问题,原因通常可以归结为以下几类。我按「最常见 → 较少见」帮你梳理,并给出排查思路。
ip link
如果网卡状态是 DOWN:
ip link set eth0 up
或(旧系统):
ifconfig eth0 up
不同发行版用的 DHCP 客户端不一样:
dhclientdhcpcdsystemd-networkd检查是否运行:
ps aux | grep -E 'dhclient|dhcpcd|NetworkManager'
手动获取 IP:
dhclient eth0
# 或
dhcpcd eth0
常见于服务器版:
nmcli device status
如果是 unmanaged:
nmcli device set eth0 managed yes
或编辑:
# /etc/NetworkManager/NetworkManager.conf
[keyfile]
unmanaged-devices=*,except:interface-name:eth0
错误示例:
iface eth0 inet static
应为:
iface eth0 inet dhcp
修改后:
ifdown eth0 && ifup eth0
确认:
测试:
tcpdump -i eth0 port 67 or port 68
没有 DHCP Offer → 网络侧问题
DHCP 使用:
检查:
iptables -L
临时关闭测试:
iptables -F
例如同时运行:
解决:只保留一个
路由器可能:
可在 Linux 修改 MAC 测试:
ip link set eth0 down
ip link set eth0 address 00:11:22:33:44:55
ip link set eth0 up
如果使用 systemd:
# /etc/systemd/network/eth0.network
[Match]
Name=eth0
[Network]
DHCP=yes
然后:
systemctl restart systemd-networkd
ip link
ip addr
ip route
cat /etc/network/interfaces
systemctl status NetworkManager
dhclient -v eth0
tcpdump -i eth0 udp port 67
你可以告诉我:
我可以给你精确到命令的修复方案。