在Ubuntu上切换网络管理器需明确指定renderer值并启停对应服务:桌面版默认用NetworkManager,若配置为networkd则需改为NetworkManager并启用服务;服务器版需安装NetworkManager、禁用systemd-networkd、修改netplan renderer为NetworkManager;切回networkd时须屏蔽NetworkManager、启用systemd-networkd并改renderer为networkd。

在Ubuntu上切换网络管理器,意味着要明确让NetworkManager接管或退出对网卡的控制,否则netplan配置可能被忽略、IP设置不生效、nmcli命令报错或连接反复断开。
先确认当前谁在管网络
打开终端,运行三行命令:
ip addr show → 查看主网卡名(如enp0s3、wlan0);
nmcli device status → 如果某设备显示connected或unmanaged,说明NetworkManager已介入或正在争抢;
ls /etc/netplan/ && cat /etc/netplan/*.yaml 2>/dev/null | grep renderer → 【关键看renderer字段值是networkd还是NetworkManager】,它决定了netplan最终把配置交给谁执行。
桌面版启用NetworkManager(默认已启用,但可能被禁用)
Ubuntu桌面版通常预装并启用NetworkManager,但如果之前手动禁用了,需恢复:
sudo systemctl unmask NetworkManager
sudo systemctl enable --now NetworkManager
检查是否运行中:systemctl is-active NetworkManager → 应返回 active。
若此前netplan配置里renderer写的是networkd,必须改成NetworkManager,否则nmcli改的设置不会落地。编辑/etc/netplan/*.yaml,将renderer: networkd改为renderer: NetworkManager,再执行sudo netplan apply。
服务器版安装并启用NetworkManager
Ubuntu Server默认不装NetworkManager,需手动安装并接管网络:
方法一:一键安装+启用
sudo apt update && sudo apt install -y network-manager
sudo systemctl enable --now NetworkManager
方法二:禁用systemd-networkd(必须做)
sudo systemctl disable --now systemd-networkd
sudo systemctl mask systemd-networkd
⚠️ 这一步不做,两个服务会冲突,导致网络时通时断。
方法三:更新netplan配置
编辑/etc/netplan/*.yaml,确保含以下内容:
network:
version: 2
renderer: NetworkManager
ethernets:
enp0s3:
dhcp4: true
保存后运行sudo netplan apply。
从NetworkManager切回systemd-networkd
第一步:停用并屏蔽NetworkManager
sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager
sudo systemctl mask NetworkManager
第二步:解封并启用systemd-networkd
sudo systemctl unmask systemd-networkd
sudo systemctl enable --now systemd-networkd
第三步:修改netplan配置
将renderer: NetworkManager改为renderer: networkd,并确认ethernets下接口配置完整(如addresses、gateway4等),否则systemd-networkd无法生成有效配置。
第四步:应用配置
sudo netplan apply → 此时netplan会把YAML转成/systemd/network/*.network文件供systemd-networkd读取。











