在不断开连接的情况下将 Ubuntu 服务器从 NetPlan 迁移到 NetworkManager(可能通过 SSH)

Val*_*ozz 1 ssh network-manager networking dhcp netplan

我看到安装后的 Ubuntu 服务器默认带有带有 DHCP 配置的 NetPlan(至少在 Ubuntu 22.04 焦点窝中)。

有些用户不需要 NetPlan,只需要 NetworkManager,例如使用nmclinmtui导入 VPN 配置等,因此安装后我认为迁移到 NetworkManager 是很常见的。

目前,这是我在全新安装后从 NetPlan 迁移到 NetworkManager 的过程。

创建这个文件:

/etc/netplan/01-er-netplan-fix.yaml
Run Code Online (Sandbox Code Playgroud)

有了这个内容:

# 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
Run Code Online (Sandbox Code Playgroud)

然后运行这些命令:

# 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
Run Code Online (Sandbox Code Playgroud)

问题:当我重新启动时,服务器显然会断开连接,但它也不会通过 DHCP 更新其 IP。

作为解决方法,我在服务器上打开一个物理终端,运行dhclient,然后继续使用nmtuiDHCP 添加简单的以太网配置,一切又恢复正常。

所以我的问题是:如何从 NetPlan 迁移到 NetworkManager?可能会自动更新IP?可能根本没有任何断开连接?这样你的 SSH 连接就不会中断。

请随意建议作为答案,在重新启动后至少预填充有效的 DHCP 的有效 NetworkManager 配置,但我仍然不明白我是否也可以完全避免重新启动并保持有效的 SSH 连接来完成整个迁移过程。

谢谢你的想法!也许这个问题很愚蠢,但我不知道NetPlan,因为我通常使用Debian并且没有这些问题。

小智 5

有点晚了,但最近在继承一些 Ubuntu 服务器后遇到了类似的问题。

经过多次全新安装和测试后,这些是我想出的步骤 - 这应该可以通过 SSH 不间断地完成。

  1. 安装 NetworkManager sudo apt install network-manager(这将使nmclinmtui可用。
  2. 指示NetworkManager默认管理所有接口类型,创建/etc/NetworkManager/conf.d/manage-all.conf包含以下内容的文件:
[keyfile]
unmanaged-devices=none
Run Code Online (Sandbox Code Playgroud)
  1. 使用 重新启动 NetworkManager sudo systemctl restart NetworkManager
  2. 检查您的接口现在是否由 NetworkManager 使用 进行管理nmcli
  3. 此步骤可能有点令人困惑 - 虽然 NetworkManager 显示接口的当前配置,但这是基于通过 netplan 应用的配置,并且从 NetworkManager 的角度来看不是持久的。要保存当前配置(并采用从 netplan 迁移到 NetworkManager 时会丢失的一些默认配置选项),请运行以下命令:
[keyfile]
unmanaged-devices=none
Run Code Online (Sandbox Code Playgroud)
  1. 确保配置已保存 -cat /etc/NetworkManager/system-connections/*
  2. 禁用网络并清除网络规划:
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
Run Code Online (Sandbox Code Playgroud)
  1. 如果 DNS 在此阶段似乎不起作用,请重新启动 NetworkManager -sudo systemctl restart NetworkManager

这将使您的 Ubuntu 服务器配置为使用 NetworkManager 并完全绕过 netplan。步骤可能略有不同,但这是我发现在全新安装 Ubuntu 22.04 时适用的过程。