#操作系統? #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知識搶先一步,持續更新中 👇