在使用 NetworkManager 管理网络的 Linux 系统中,用户常遇到“unknown connection ens160.nmconnection”问题,表现为网络接口 ens160 无法正常获取 IP 地址或频繁断连。该问题通常由 NetworkManager 配置文件损坏、重复的连接配置或网卡重命名不一致引起。修复方法包括:删除无效的 nm-connection 文件(位于 `/etc/NetworkManager/system-connections/ens160.nmconnection`),通过 `nmcli con delete ens160` 清除残留连接,重启 NetworkManager 服务,并重新添加正确的网络配置。同时需检查 udev 网络命名规则是否稳定,避免接口名称变动导致配置错乱。
1条回答 默认 最新
冯宣 2025-10-20 13:58关注深入解析 NetworkManager 中 “unknown connection ens160.nmconnection” 问题
1. 问题现象与初步诊断
在使用 NetworkManager 管理网络的 Linux 系统中,用户常遇到如下报错:
Unknown connection 'ens160.nmconnection'该错误通常伴随网络接口 ens160 无法获取 IP 地址、DHCP 失败或连接频繁断开。通过
nmcli con show命令查看当前连接列表时,可能发现重复条目或名称异常的连接配置。此问题多发于虚拟机迁移、系统克隆、内核升级或硬件变更后,核心原因可归结为:NetworkManager 配置文件损坏、连接定义冲突、网卡命名不一致。
2. 根本原因分析
- 配置文件损坏:位于
/etc/NetworkManager/system-connections/ens160.nmconnection的配置文件可能因写入中断或权限问题导致结构异常。 - 重复连接定义:多次执行
nmcli con add或导入备份配置可能导致同名连接冲突。 - udev 网络命名规则变动:系统启动时 udev 可能因 MAC 地址变化或 BIOS 设置不同,将同一物理网卡命名为 ens161、ens192 等,造成原配置失效。
- SELinux 或文件权限限制:配置文件权限非 root:root 或 SELinux 上下文错误,也会阻止 NetworkManager 正常读取。
3. 修复步骤详解
- 停止 NetworkManager 服务以避免运行时冲突:
systemctl stop NetworkManager- 检查并删除无效的 nm-connection 文件:
rm -f /etc/NetworkManager/system-connections/ens160.nmconnection- 清除残留连接配置(即使文件已删,内存中仍可能存在):
nmcli con delete ens160- 验证是否仍有其他相关连接:
nmcli con show | grep ens160- 若存在,一并清理:
nmcli con delete <connection-name>- 重启 NetworkManager 服务:
systemctl start NetworkManager- 重新添加正确的网络连接:
nmcli con add type ethernet con-name ens160 ifname ens160 autoconnect yes ipv4.method auto- 启用连接并测试:
nmcli con up ens160
4. 预防机制与最佳实践
项目 建议做法 工具/命令 配置备份 定期导出有效连接配置 nmcli con export ens160 > backup.nmconnection命名一致性 禁用 predictable naming 或统一命名策略 内核参数: net.ifnames=0 biosdevname=0权限管理 确保配置文件属主为 root:root,权限 600 chmod 600 /etc/NetworkManager/system-connections/*自动化检测 部署监控脚本检查连接状态 nmcli -t -f DEVICE,STATE dev status5. 高级排查:结合 udev 与 systemd 分析
当网卡名称不稳定时,需深入 udev 规则层。查看当前网卡的 udev 属性:
udevadm info -a -p /sys/class/net/ens160检查是否存在持久化命名规则:
ls /etc/udev/rules.d/*net*.rules可通过创建固定规则绑定 MAC 与接口名:
SUBSYSTEM=="net", ACTION=="add", ATTR{address}=="00:50:56:aa:bb:cc", NAME="ens160"保存至
/etc/udev/rules.d/70-persistent-net.rules并重启生效。6. 故障复现与流程图建模
graph TD A[系统启动] --> B{NetworkManager 加载配置} B --> C{读取 /etc/NetworkManager/system-connections/ens160.nmconnection} C -->|文件损坏或权限错误| D[标记为 unknown connection] C -->|文件正常但接口名不匹配| E[连接失败] B --> F{udev 提供的接口名是否稳定?} F -->|否| G[生成新接口名如 ens161] G --> H[原配置失效] F -->|是| I[成功建立连接] D --> J[执行修复流程] E --> J J --> K[删除无效文件与连接] K --> L[重建连接] L --> M[验证连通性]本回答被题主选为最佳回答 , 对您是否有帮助呢?解决 无用评论 打赏 举报- 配置文件损坏:位于