背景是上午过来,发现电脑连不上网络。具体表现在:
- 网线插入,等会亮
- 设置中看不到网络连接
- 系统一切正常,命令行也没啥问题,就是没网络
- 查设备信息,有如下几个
$ nmcli device status
DEVICE TYPE STATE CONNECTION
lo loopback connected (externally) lo
docker0 bridge connected (externally) docker0
eno1 ethernet unavailable –
enp3s0 ethernet unavailable –
尝试手动up了一下网卡,但是报错,报错信息如下
$ nmcli con up enp3s0
Error: Connection activation failed: No suitable device found for this connection (device docker0 not available because profile is not compatible with device (mismatching interface name)).
问了gpt,尝试自己修复(见下文)
然后我就联系了一下公司的IT,请求外部支援。
IT小哥过来之后,搞了个仪器,测了网线,看起来网线没问题。
接着他换了一个网口,然后就好了!!!
猜测原因
猜测是昨晚和同事吹牛的时候,我点了一下软件更新,但是没执行。我就关电脑下班了。
于是我把更新配置选保守一点的,并且重新更新。
更新+重启之后,原来的网口也可以用了。:)
下面是GPT的回答,供参考:
nmcli device status unavailable 怎么处理?
在Ubuntu 24.04中使用nmcli
激活未激活的网络连接,请按以下步骤操作:
1. 查看所有连接配置
nmcli connection show
找到未激活连接的 NAME 或 UUID(记下目标连接的名称)
2. 激活连接(两种方式)
方式一:使用连接名称激活
nmcli connection up "YourConnectionName"
替换 YourConnectionName
为实际连接名称(如 Wired connection 1
)
方式二:使用UUID激活
nmcli connection up uuid Your-UUID-Here
替换 Your-UUID-Here
为实际UUID(从第一步结果中复制)
3. 验证激活状态
nmcli connection show
检查目标连接的 ACTIVE 列是否变为 yes
4. 常见问题解决
如果激活失败:
检查设备状态:
nmcli device status
确保设备(如
enp0s3
)处于disconnected
或unavailable
状态启用网络设备:
nmcli device connect enp0s3 # 替换为你的设备名
重启NetworkManager:
sudo systemctl restart NetworkManager
检查连接配置:
nmcli connection show "YourConnectionName" | grep ipv4.method
确保配置正确(如DHCP应为
auto
)
完整示例流程:
# 查看连接列表
$ nmcli con show
NAME UUID TYPE DEVICE
Wired connection 1 a5eb6490-cc20-4067-97ec-d3dced1a2ff3 ethernet --
MyWiFi 6ab2cd1c-950a-4d68-93b4-5541b350b9f5 wifi wlp4s0
# 激活有线连接
$ nmcli con up "Wired connection 1"
Connection successfully activated
# 验证结果
$ nmcli con show
NAME UUID TYPE DEVICE
Wired connection 1 a5eb6490-cc20-4067-97ec-d3dced1a2ff3 ethernet enp0s3 # 已激活
注意:如果连接需要802.1X认证等特殊配置,请确保提前配置好认证信息:
nmcli connection modify "YourConnection" 802-1x.identity your_username nmcli connection modify "YourConnection" 802-1x.password your_password
通过以上步骤即可成功激活网络连接。如遇硬件问题,请检查网线/无线开关状态。
报错处理:Error: Connection activation failed: No suitable device found for this connection (device docker0 not available because profile is not compatible with device (mismatching interface name)).
这个错误表明 NetworkManager 尝试在 docker0
虚拟接口上激活连接,但该连接配置与物理网络设备不兼容。以下是解决方法:
原因分析:
- 连接配置错误地关联到了 Docker 创建的虚拟网桥
docker0
- 物理网络设备(如 eth0/enp0s3)没有被正确识别或配置
- 连接配置中的接口名称设置错误
解决方案:
步骤 1:检查可用网络设备
nmcli device status
查看输出中的 DEVICE 列,找到你的物理网卡(如 enp0s3
、eth0
或 wlan0
)
步骤 2:检查问题连接的配置
nmcli connection show "YourConnectionName" | grep -E "device|interface"
替换 YourConnectionName
为你的连接名称
步骤 3:修改连接配置(关键步骤)
# 清除错误绑定的接口
nmcli connection modify "YourConnectionName" connection.interface-name ""
# 或者指定正确的物理接口
nmcli connection modify "YourConnectionName" connection.interface-name "enp0s3"
步骤 4:重新激活连接
nmcli connection up "YourConnectionName"
步骤 5:如果仍失败,创建新连接
# 删除问题连接
nmcli connection delete "YourConnectionName"
# 为物理设备创建新连接
nmcli connection add type ethernet con-name "NewConnection" ifname enp0s3
# 激活新连接
nmcli connection up "NewConnection"
步骤 6:检查 Docker 干扰
# 停止 Docker 服务
sudo systemctl stop docker
# 删除 docker0 接口
sudo ip link delete docker0
# 尝试激活网络连接
nmcli connection up "YourConnectionName"
# 重启 Docker(网络恢复后)
sudo systemctl start docker
完整示例:
# 查看设备状态
$ nmcli device status
DEVICE TYPE STATE CONNECTION
docker0 bridge connected bridge-docker0 # 问题在此
enp0s3 ethernet disconnected --
# 修改连接配置
$ nmcli connection modify "Wired connection 1" connection.interface-name enp0s3
# 激活连接
$ nmcli connection up "Wired connection 1"
Connection successfully activated
# 验证
$ nmcli device status
DEVICE TYPE STATE CONNECTION
enp0s3 ethernet connected Wired connection 1 # 成功激活
docker0 bridge connected bridge-docker0
永久解决方案:
在 /etc/NetworkManager/NetworkManager.conf
中添加:
[keyfile]
unmanaged-devices=interface-name:docker0
然后重启服务:
sudo systemctl restart NetworkManager
注意:如果使用 Docker,建议创建专用网络配置:
nmcli connection add type bridge ifname docker0 con-name docker-bridge ipv4.method disabled ipv6.method ignore
通过以上步骤,你应该能成功激活物理网络连接,同时保持 Docker 网络功能正常。