温馨提示×

ubuntu dhclient为何不生效

小樊
44
2026-09-07 17:54:06
栏目: 智能运维

在 Ubuntu 里 dhclient “不生效”是非常常见的问题,通常不是 dhclient 本身坏了,而是被别的东西接管了网络,或者用法不对。下面按最常见原因给你梳理。


一、最常见原因:NetworkManager / systemd-networkd 在管网络

1️⃣ NetworkManager(桌面版 Ubuntu 默认)

如果你用的是 Ubuntu Desktop,网络基本由 NetworkManager 管理:

systemctl status NetworkManager

特点:

  • 你手动跑 dhclient eth0
  • 很快就被 NetworkManager 改回原配置
  • 看起来像“不生效”

✅ 正确做法:

nmcli con show
nmcli con mod <连接名> ipv4.method auto
nmcli con up <连接名>

或直接重启:

systemctl restart NetworkManager

2️⃣ systemd-networkd(服务器版常见)

如果是 Ubuntu Server(18.04+)

systemctl status systemd-networkd

它也会接管 DHCP。

✅ 正确配置:

/etc/netplan/01-netcfg.yaml

示例:

network:
  version: 2
  ethernets:
    eth0:
      dhcp4: true

应用:

netplan apply

二、你运行的 dhclient 方式不对

❌ 错误方式

dhclient

可能:

  • 没指定网卡
  • 被接口已存在 lease 卡住

✅ 正确方式

sudo dhclient -r eth0
sudo dhclient eth0

查看是否拿到地址:

ip addr show eth0

三、接口是 down 状态

dhclient 不会自动 up 网卡:

ip link show eth0

如果是 DOWN

sudo ip link set eth0 up
sudo dhclient eth0

四、/etc/network/interfaces 被忽略(老方式)

Ubuntu 18.04+ 默认 不用 /etc/network/interfaces 管 DHCP。

如果你还在改它,但不会生效。

检查:

cat /etc/network/interfaces

如果是服务器版,应该用 netplan


五、DHCP Server 没响应

确认不是网络问题:

tcpdump -i eth0 port 67 or port 68

如果没有 DHCP Discover / Offer:

  • 交换机端口问题
  • DHCP 服务挂了
  • 网线 / VLAN 错

六、快速判断“谁在管网络”

ps aux | grep -E 'dhclient|NetworkManager|systemd-network'

七、一句话总结

Ubuntu 里 dhclient 不生效,90% 是因为 NetworkManager 或 netplan 在管网络,你手动跑的 dhclient 被覆盖。


如果你愿意,可以贴一下:

  • Ubuntu 版本
  • 桌面版还是服务器版
  • ip addr / netplan 配置

我可以直接帮你指出该改哪里。

0