#操作系统 #Linux #NetworkManager
适用环境
- kylin v10+
- Centos 8
- Redhat 8+
一、故障现象
在CentOS/RHEL(同样适用于kylin v10)系统中,管理员执行 nmcli connection up ens160 命令尝试激活名为 ens160 的网络连接时,遇到以下错误:
[root@db1 ~]# nmcli c up ens160
Error: Connection activation failed: No suitable device found for this connection (device lo not available because device is strictly unmanaged).
错误提示表明,NetworkManager 无法找到适合该连接的网络设备,原因是设备处于 “严格未托管(strictly unmanaged)” 状态,导致连接无法激活,网络服务中断。
二、故障分析
NetworkManager 对网卡的管理状态分为 托管(managed) 和 未托管(unmanaged):
- 若网卡被标记为 unmanaged,NetworkManager 会完全忽略该设备,无法通过 nmcli 配置。
- 常见触发场景:
- 网卡配置文件(如 /etc/sysconfig/network-scripts/ifcfg-ens160)中显式设置 NM_CONTROLLED=no。
- NetworkManager 全局配置(/etc/NetworkManager/NetworkManager.conf)中通过 unmanaged-devices 排除了该网卡。
- NetworkManager 停止管理所有网络设备。
三、 故障定位
3.1. 检查网卡的管理状态
执行以下命令,查看 ens160 的状态:
[root@db1 NetworkManager]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet unmanaged --
lo loopback unmanaged --
若输出中 ens160 对应的 STATE 列显示 unmanaged,则确认设备未被 NetworkManager 托管。
3.2. 检查网卡配置文件
网卡配置文件通常位于 /etc/sysconfig/network-scripts/ 目录下,文件名格式为 ifcfg-<网卡名>(如 ifcfg-ens160)。
cat /etc/sysconfig/network-scripts/ifcfg-ens160
- 若文件中存在 NM_CONTROLLED=no,需修改为 NM_CONTROLLED=yes(表示允许 NetworkManager 管理)。
- 修改后需重启 NetworkManager 服务:
systemctl restart NetworkManager
检查结果:未发现NM_CONTROLLED=no的配置信息
3.3. 检查 NetworkManager 全局配置
查看 NetworkManager.conf 是否通过 unmanaged-devices 显式排除了 ens160:
cat /etc/NetworkManager/NetworkManager.conf
- 若 [keyfile] 段存在类似 unmanaged-devices=interface-name:ens160 的配置,需删除或注释该行。
- 示例:
[main]
plugins=ifcfg-rh,keyfile[keyfile]
# 注释或删除以下行
# unmanaged-devices=interface-name:ens160
- 修改后重启 NetworkManager:
systemctl restart NetworkManager
检查结果:未发现unmanaged-devices的配置信息
3.4 强制将网卡标记为「托管」
若上述方法无效,可通过 nmcli 强制将 ens160 标记为托管:
[root@db1 NetworkManager]# nmcli device set ens160 managed yes
检查设备状态
[root@db1 NetworkManager]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet unmanaged --
lo loopback unmanaged --
仍然没有作用。
3.5. 检查 NetworkManager 网络管理功能
通过nmcli networking connectivity排查NetworkManager 网络管理功能
[root@db1 NetworkManager]# nmcli networking connectivity
none
发现以下关键线索:
- 状态为none,表明 NetworkManager 的整体网络管理功能被关闭,这就是问题根源。
nmcli networking功能说明:
- nmcli networking 用于控制 NetworkManager 对系统网络的整体管理状态(启用 / 禁用)。
- on 表示开启网络管理,让 NetworkManager 接管系统网络设备(如网卡、Wi-Fi 等)的配置和连接管理。
四、故障解决
4.1. 启用 NetworkManager 网络管理功能
执行以下命令,重新启用 NetworkManager 的网络管理功能:
[root@db1 ~]# nmcli networking on
4.2. 验证管理状态
再次执行 nmcli networking connectivity ,确认状态变为 full,表明网络管理已恢复:
[root@db1 ~]# nmcli networking connectivity
full
4.3检查网络连接
已激活 ens160 连接:
[root@db1 NetworkManager]# nmcli c s
NAME UUID TYPE DEVICE
mens160 c8d39396-e2f5-4df9-8d89-6ae971d37992 ethernet ens160
lo f6946c5a-bc63-4bd7-8271-288add3d1882 loopback lo
4.4. 验证设备状态
通过 nmcli device status 检查,ens160 网卡的 STATE 列显示为 connected,确认网络连接正常:
root@db1 NetworkManager]# nmcli device status
DEVICE TYPE STATE CONNECTION
ens160 ethernet connected mens160
lo loopback connected (externally) lo
五、总结
本次故障的核心原因是 NetworkManager 的整体网络管理功能为关闭状态(nmcli networking off),导致所有网络设备进入未托管状态。通过重新启用网络管理(nmcli networking on),快速恢复了 NetworkManager 对设备的控制,解决了连接激活失败的问题。
经验教训
- 当遇到 strictly unmanaged 错误时,优先检查 NetworkManager 的全局管理状态(nmcli networking status)。
- 避免在生产环境中随意执行 nmcli networking off,该操作会导致所有网络连接中断且无法自动恢复。
- 日常运维中,应通过 nmcli device status 和 nmcli networking connectivity快速定位网络管理类故障,减少排查时间。
🚀 更多数据库干货,欢迎关注【安呀智数据坊】
如果你觉得这篇文章对你有帮助,欢迎点赞 👍、收藏 ⭐ 和留言 💬 交流,让我知道你还想了解哪些数据库知识!
📬 想系统学习更多数据库实战案例与技术指南?
📊 实战项目分享
📚 技术原理讲解
🧠 数据库架构思维
🛠 工具推荐与实用技巧
立即关注,get知识抢先一步,持续更新中 👇