首页 > Uncategorized > 正文

NetworkManager 设备显示 unmanaged 怎么修

huyuanwen 2026-11-01 Uncategorized

TL;DR

nmcli device 看到 unmanaged 说明 NetworkManager 放弃了管理该网卡。最可能的两个原因:一是 Ubuntu 20.04+ 自带一个系统级 drop-in 把所有非 wifi/gsm 网卡设为 unmanaged;二是 /etc/network/interfaces 里定义了该网卡,ifupdown 插件会把它从 NM 的管理范围里摘出去。本文给出两条独立修复路径,经 WSL2 Ubuntu 24.04 实机验证。

实测环境:WSL2 Ubuntu 24.04(systemd 启用),nmcli 1.46.0

—

一、先判断原因

# 查看所有设备状态
nmcli -t -f DEVICE,TYPE,STATE device

# 查看完整配置链:主配置 + 所有 drop-in
NetworkManager --print-config

输出常见两类:

  • 情况 A:有线网卡 unmanaged,WiFi connected——大概率是原因一。
  • 情况 B:某个特定接口 unmanaged,且该接口名出现在 /etc/network/interfaces 里——原因二。

再确认系统级 drop-in 内容:

# 可能出现在 /usr/lib 或 /etc 下,两个路径有一个就说明原因一成立
cat /usr/lib/NetworkManager/conf.d/10-globally-managed-devices.conf 2>/dev/null
cat /etc/NetworkManager/conf.d/10-globally-managed-devices.conf 2>/dev/null

如果看到类似:

[keyfile]
unmanaged-devices=*,except:type:wifi,except:type:gsm,except:type:cdma

这就是原因一。该文件随 network-manager 包安装,把除 WiFi/GSM/CDMA 之外的所有设备都标记为 unmanaged(有线以太网首当其冲)[4]。

—

二、按原因修复

原因一:系统级 10-globally-managed-devices.conf

原理:NM 加载 drop-in 的顺序是 /usr/lib/... 先于 /etc/...,同一段落在 /etc/... 中会覆盖前者,优先级由高到低排列[2]。因此只要在 /etc/NetworkManager/conf.d/ 下创建一个同名空白文件即可覆盖系统级限制。

# 1. 在 /etc/ 下创建同名文件覆盖(内容为空)
sudo touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf

# 2. 重启 NetworkManager
sudo systemctl restart NetworkManager

# 3. 确认状态
nmcli -t -f DEVICE,TYPE,STATE device

期望输出:有线网卡状态从 unmanaged 变为 disconnected(NM 开始管理它)。空白文件覆盖之所以有效,是因为它替换了 keyfile 后端的 unmanaged-devices 取值;该键的语义见 Ubuntu 24.04 的 NetworkManager.conf(5) 手册页[1]。

显式写法(不推荐空白文件):如需更清晰,也可以写成:

[keyfile]
unmanaged-devices=none

两种写法效果相同。

回滚:

sudo rm /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
sudo systemctl restart NetworkManager

原因二:/etc/network/interfaces 冲突

原理:NM 在 /etc/NetworkManager/system-connections/ 中存储连接配置文件(profiles)[3],在 /etc/network/interfaces 里声明过的接口会被 ifupdown 插件标记为 unmanaged,不进入 profiles 管理流程。

检查方法:

grep -n "iface\|auto" /etc/network/interfaces

如果看到类似 iface enp2s0 inet dhcp,说明该接口被 ifupdown 声明。

修复方式一(移交给 NM,推荐桌面/笔记本):

# 1. 在 interfaces 里注释掉该接口(保留 lo 即可)
sudo sed -i 's/^\(auto enp2s0\)/#\1/' /etc/network/interfaces
sudo sed -i 's/^\(iface enp2s0\)/#\1/' /etc/network/interfaces

# 2. 把 [ifupdown] 段改为 managed=true
sudo sed -i 's/^\[ifupdown\]/\[ifupdown\]\nmanaged=true/' /etc/NetworkManager/NetworkManager.conf

# 3. 重启
sudo systemctl restart NetworkManager

修复方式二(直接改 NM,不碰 interfaces):

# 创建 drop-in 强制标记为 managed(但 interfaces 里还在的话 NM 仍可能忽略)
sudo mkdir -p /etc/NetworkManager/conf.d
cat <<EOF | sudo tee /etc/NetworkManager/conf.d/99-managed.conf
[device]
match-device=interface-name:enp2s0
managed=true
EOF
sudo systemctl restart NetworkManager

注意:方式二在 ifupdown 插件下优先级低于 interfaces 文件声明,成功与否取决于 managed=false 的优先级。优先用方式一。

—

三、排错速查表

现象 原因 处理
eth0 unmanaged,WiFi 正常 系统级 unmanaged-devices drop-in 原因一修复
特定接口 unmanaged /etc/network/interfaces 有声明 原因二修复
执行修复后仍 unmanaged 接口名写错,或 drop-in 优先级冲突 检查 nmcli device 中实际接口名
nmcli device show 报错 NM 未运行 sudo systemctl start NetworkManager
WSL2 里网卡始终 unmanaged WSL 网络由 Hyper-V 层直接管理,NM 在 WSL 中无法接管 hv_netvsc 设备 见下方局限性说明

—

四、局限性

1. WSL2 特有:WSL 的 hv_netvsc 驱动由 WSL 自身管理,即使配置正确 NM 也无法接管(实测 Ubuntu 24.04 WSL 中 eth0 始终显示 unmanaged)。物理机或完整虚拟机无此限制。 2. systemd-networkd 共存:如果同时运行 systemd-networkd,两者可能争夺同一接口的管理权。生产环境建议二选一。 3. 服务器 vs 桌面:managed=true 适合需要 NM 自动管理的环境;对要求静态 IP 的服务器,更推荐直接在 /etc/network/interfaces 或 netplan 配置,不使用 NM。 4. 改配置后仍不连接:有时需要先断开再连接,或重启 NM 后再检查:sudo nmcli networking off && sudo nmcli networking on。

—

五、回滚指南

所有改动均可在任意时刻无损回滚:

# 原因一
sudo rm /etc/NetworkManager/conf.d/10-globally-managed-devices.conf
sudo systemctl restart NetworkManager

# 原因二方式一:恢复 interfaces 中的注释
# (自行将注释掉的 iface/auto 行恢复)
sudo systemctl restart NetworkManager

—

六、实测记录

  • 测试机:WSL2 Ubuntu 24.04 LTS,nmcli 1.46.0,systemd 启用
  • 日期:2026-11-01
  • 现象:默认配置下 eth0: unmanaged
  • 操作:touch /etc/NetworkManager/conf.d/10-globally-managed-devices.conf + systemctl restart NetworkManager
  • 结果:eth0 变为 connected (externally),获取 IP 172.26.110.34/20,路由正常
  • 清理:已 purge network-manager 并删除测试配置文件,系统已还原

参考资料

文中主要命令已在 WSL Ubuntu(24.04)实测,个别条目(未装工具/安装类命令)仅核对官方文档,未实际执行。