温馨提示×

为什么linux dhcp失效

小樊
45
2026-09-03 15:54:11
栏目: 智能运维

Linux 下 DHCP 失效(无法获取 IP) 是很常见的问题,原因通常可以归结为以下几类。我按「最常见 → 较少见」帮你梳理,并给出排查思路。


一、最常见原因

1. 网卡没启用(interface down)

ip link

如果网卡状态是 DOWN

ip link set eth0 up

或(旧系统):

ifconfig eth0 up

2. 没有运行 DHCP 客户端

不同发行版用的 DHCP 客户端不一样:

  • dhclient
  • dhcpcd
  • systemd-networkd
  • NetworkManager

检查是否运行:

ps aux | grep -E 'dhclient|dhcpcd|NetworkManager'

手动获取 IP:

dhclient eth0
# 或
dhcpcd eth0

3. NetworkManager 未管理网卡

常见于服务器版:

nmcli device status

如果是 unmanaged

nmcli device set eth0 managed yes

或编辑:

# /etc/NetworkManager/NetworkManager.conf
[keyfile]
unmanaged-devices=*,except:interface-name:eth0

4. /etc/network/interfaces 配置错误(Debian/Ubuntu)

错误示例:

iface eth0 inet static

应为:

iface eth0 inet dhcp

修改后:

ifdown eth0 && ifup eth0

二、网络层问题

5. DHCP 服务器没响应

确认:

  • 交换机/路由器开启了 DHCP
  • 网线正常
  • 不在隔离 VLAN

测试:

tcpdump -i eth0 port 67 or port 68

没有 DHCP Offer → 网络侧问题


6. 防火墙拦截 DHCP

DHCP 使用:

  • UDP 67(服务器)
  • UDP 68(客户端)

检查:

iptables -L

临时关闭测试:

iptables -F

三、系统和配置问题

7. 多个 DHCP 客户端冲突

例如同时运行:

  • NetworkManager
  • dhclient
  • dhcpcd

解决:只保留一个


8. MAC 地址被绑定 / 黑名单

路由器可能:

  • MAC 过滤
  • 地址池耗尽

可在 Linux 修改 MAC 测试:

ip link set eth0 down
ip link set eth0 address 00:11:22:33:44:55
ip link set eth0 up

9. systemd-networkd 未配置

如果使用 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

五、如果你愿意

你可以告诉我:

  • Linux 发行版(Ubuntu / CentOS / Debian / Arch)
  • 物理机 / 虚拟机 / 容器
  • 用的是 NetworkManager / systemd-networkd / 手动配置

我可以给你精确到命令的修复方案

0