我发现安装后的 Ubuntu 服务器默认带有具有 DHCP 配置的 NetPlan(至少在 Ubuntu 22.04 焦点窝中)。
有些用户不想要 NetPlan 而只想要 NetworkManager,例如使用nmcli
、nmtui
或导入 VPN 配置等,因此安装后我认为经常会迁移到 NetworkManager。
目前,这是我全新安装后从 NetPlan 迁移到 NetworkManager 的过程。
创建此文件:
/etc/netplan/01-er-netplan-fix.yaml
包含此内容:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
# Set and change netplan renderer to NetworkManager GUI tool
network:
version: 2
renderer: NetworkManager
然后运行以下命令:
# install Network Manager
sudo apt install network-manager
# disable NetPlan
mv /etc/netplan/00-installer-config.yaml /etc/netplan/00-installer-config.yaml.bak
# reload NetPlan
netplan apply
# I'm not proud of this but I reboot to apply everything now
reboot
问题:当我重新启动时,服务器显然断开连接,但它也从未通过 DHCP 更新其 IP。
作为解决方法,我在服务器上打开一个物理终端,运行dhclient
,然后继续nmtui
使用 DHCP 添加一个简单的以太网配置,一切都恢复正常。
所以我的问题是:如何从 NetPlan 迁移到 NetworkManager?可能自动更新其 IP?可能根本不会断开连接?这样您的 SSH 连接就不会中断。
请随意建议在重启后至少预填充一个有效的 NetworkManager 配置以获得有效的 DHCP,但我仍然不明白我是否也可以完全避免重启并保持有效的 SSH 连接来完成整个迁移过程。
感谢您的想法!也许这个问题很愚蠢,但我不知道 NetPlan,因为我通常使用 Debian,而且我没有遇到这些问题。
答案1
有点晚了,但最近在继承了一些 Ubuntu 服务器后遇到了类似的问题。
经过多次全新安装和测试后,我想出了以下步骤 -应该可以通过 SSH 不间断地完成。
- 安装 NetworkManager
sudo apt install network-manager
(这将使nmcli
和nmtui
可用。 - 指示 NetworkManager 默认管理所有接口类型,创建
/etc/NetworkManager/conf.d/manage-all.conf
包含以下内容的文件:
[keyfile]
unmanaged-devices=none
- 使用 重新启动 NetworkManager
sudo systemctl restart NetworkManager
。 - 使用 检查您的接口现在是否由 NetworkManager 管理
nmcli
。 - 此步骤可能有点令人困惑 - 虽然 NetworkManager 显示了接口的当前配置,但这是基于通过 netplan 应用的配置,并且从 NetworkManager 的角度来看不是持久的。要保存当前配置(并采用从 netplan 移动到 NetworkManager 时会遗漏的一些默认配置选项),请运行以下命令:
sudo nmcli connection modify enp1s0 autoconnect yes
sudo nmcli connection modify enp1s0 ipv6.method ignore
sudo nmcli connection modify enp1s0 ipv4.dns 8.8.8.8
sudo nmcli device reapply enp1s0
- 确保配置已保存 -
cat /etc/NetworkManager/system-connections/*
- 禁用 networkd 并清除 netplan:
sudo systemctl disable --now systemd-networkd.service systemd-networkd.socket networkd-dispatcher.service && sudo systemctl restart NetworkManager
sudo apt purge netplan netplan.io -y
- 如果 DNS 在此阶段似乎不起作用,请重新启动 NetworkManager -
sudo systemctl restart NetworkManager
这应该会为您配置一个使用 NetworkManager 并完全绕过 netplan 的 Ubuntu 服务器。步骤可能略有不同,但这是我发现在全新安装的 Ubuntu 22.04 上可以运行的过程。
答案2
我相信您没有禁用 systemd-networkd(我想)这一事实与您的问题有关。
在测试机上尝试一下:
安装网络管理器
编辑安装程序创建的 netplan yaml 文件,并添加行渲染器:NetworkManager
netplan generate(生成网络管理器文件)并检查它是否存在(/run/NetworkManager/system-connections)
再次编辑 netplan yaml 文件并将其更改为上面提到的内容
掩码(systemctl mask)使用“systemctl | grep network”找到的所有网络服务
重新启动系统(或者简单地应用 netplan,但它可能会获得不同的 IP 地址,并且你的连接仍然会断开)
我已经在 Ubuntu 22.04 服务器安装上对其进行了测试。