根本原因是Netplan默认使用systemd-networkd作为渲染器,导致NetworkManager被绕过;需将Netplan配置中的renderer改为NetworkManager并重启服务。
nmcli device show 显示 unmanaged 怎么办
这是 Ubuntu 22.04+ 最常见的静态 IP 配置失败现象:你用
配了地址,
却显示所有接口状态为
,改完也重启不生效。
根本原因不是 NetworkManager 没装或没启,而是 Netplan 默认把控制权交给了
,直接绕过了 NetworkManager。它甚至不读
下的任何配置。
先确认当前 renderer:
—— 如果输出是
,那就对上了
检查实际运行的服务:
和
,通常前者 active,后者虽然 running 但被“静音”
临时验证:运行
,再看
是否变 managed(但重启后会回退)
netplan 配静态 IP 必须写的三个字段
Netplan 的 YAML 看似简单,但漏掉任意一个关键字段,
就会静默失败或只配一半——比如地址生效但网关/ DNS 不走。
以有线接口
配
为例,最小可用配置必须包含:
:必须带 CIDR,写成
,不能只写
:IPv4 默认网关,不能写进
里替代(旧文档容易误导)
:必须显式声明,即使只配一个 DNS,也要写成
完整示例片段:
想用 nmcli 就别碰 renderer: networkd
如果你明确要交互式管理网络(比如临时开热点、切 WiFi、改 VLAN),就别让 Netplan 把
设成
。这不是功能限制,是设计冲突——
是无状态、只读配置的守护进程,它不响应 D-Bus 请求,也不维护连接生命周期。
Docker Desktop(linux)
当前 Docker 最新稳定版本之一,主要针对稳定性和兼容性进行了修复优化,适合生产环境与日常开发使用。该版本继续强化 AI 开发支持、容器日志管理以及 Docker Engine 的安全能力,对 Windows/macOS/Linux 平台兼容性进行了进一步优化。
下载
正确做法是把 Netplan 改为驱动 NetworkManager:
编辑
,把
改成
删掉或注释掉
和
字段(它们由 NM 自己处理更可靠)
运行
,然后
之后所有操作交给
:比如
注意:
后,
只起初始声明作用;后续修改必须用
,否则下次
会覆盖 NM 的运行时配置。
netplan try 为什么有时不回滚
的本意是防止配错导致失联,但它依赖一个前提:你没动过底层服务状态。一旦你手动
或
过,
的超时检测就可能失效。
典型失效场景:
在 SSH 会话里执行
,但配置错误导致新连接无法建立,而旧连接因 TCP keepalive 超时断开 → 回滚触发前已失联
配置中混用了
和
,netplan 语法校验通过,但
启动失败,
认为“没变化”,不回滚
使用
时,
实际调用的是 NM 的临时连接,但 NM 本身没实现原子回滚,只能靠超时关闭临时连接
所以真要试配置,优先用本地终端或带 Console 的云平台;远程操作时,建议先
或
套一层,再加
保底。
nmclinmcli device showunmanagedsystemd-networkd/etc/NetworkManager/system-connections/cat /etc/netplan/*.yaml | grep rendererrenderer: networkdsystemctl is-active systemd-networkdsystemctl is-active NetworkManagersudo systemctl stop systemd-networkd && sudo systemctl start NetworkManagernmcli dnetplan applyeth0192.168.1.100/24addresses[192.168.1.100/24]192.168.1.100gateway4routesnameserversaddresses: [8.8.8.8]network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: false
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 114.114.114.114]renderernetworkdsystemd-networkd/etc/netplan/*.yamlrenderer: networkdrenderer: NetworkManagergateway4nameserverssudo netplan applysudo systemctl restart NetworkManagernmclinmcli connection modify "Wired connection 1" ipv4.addresses "192.168.1.100/24"renderer: NetworkManager/etc/netplan/nmclinetplan applynetplan trysystemctl restart systemd-networkdnmcli connection downnetplan trynetplan trydhcp4: trueaddressessystemd-networkdtryrenderer: NetworkManagernetplan tryscreentmuxsleep 30 && sudo netplan apply