如何将 NetworkManager 设置导出并迁移到新系统?

如何将 NetworkManager 设置导出并迁移到新系统?

如何将 NetworkManager 设置导出并迁移到新系统?

用例是:

  • 重新安装机器
  • 将网络配置从笔记本电脑移动到台式机系统(反之亦然)

应迁移所有设置,包括:

  • 默认和自定义网络连接
  • 带密码的 wifi 连接
  • VLAN配置
  • VPN 配置(如果可能的话带有密钥)

我查了一下 Arch wiki,没有关于迁移的内容,所以我在这里向你们询问。

答案1

NetworkManager 中配置的每个连接都存储在以下文件中

/etc/NetworkManager/system-connections

通常,您可以将所需的文件从一台计算机复制到另一台计算机(当然是通过root)。

警告:某些配置文件可以引用外部资源。例如,在我的一个 openvpn 文件中,我有一行类似cert=/home/andcoz/somedir/somefile.crt.您需要复制任何引用的文件。

警告2:默认情况下,密码不会出现在这些文件上。看文档。相反,诸如 之类的行private-key-flags=1,表示密码保存在您的秘密代理中(例如kde wallet)。在大多数 GUI 客户端中,这是通过每个密码下的下拉菜单“仅存储此用户的密码(加密)”来控制的。如果更改为其他值,该-flags值将更改为0,并且密码将位于这些文件上(仅由 root 读取)。

答案2

正如其他人提到的,system-connections目录中的 Wi-Fi 连接文件包含接口 MAC 地址。这需要与您当前的设置相匹配,因此过程是:

  1. 将所有文件从旧机器复制到新机器的目录:

    /etc/NetworkManager/system-connections
    
  2. 将每个文件中的 MAC 地址条目从旧 MAC 更改为新 MAC。作为根用户:

    cd /etc/NetworkManager/system-connections
    sed -i -e 's/<old mac>/<new mac>/ *
    
  3. 以防万一,重新启动网络管理器:

    systemctl restart NetworkManager
    

旧 Mac 可以从您复制的任何文件中进行检查,如果不确定是否可以检查新 Mac,则可以检查ip link(或者从安装系统时可能创建的用于复制文件的连接的文件)。

注意:上面假设您的旧设置和新设置中都有一个 Wi-Fi 接口,但相同的逻辑应该适用于多个接口。

答案3

以下内容对我有用ubuntu:20.10

/etc/NetworkManager/system-connections复制上面的内容

确保permissions=user:newusername:;与您的运行用户匹配(您想要使用 VPN 的那个 -echo $( whoami )可以提供帮助)

接下来确保您拥有安装了正确的软件包。如果您正在使用openvpn那么您需要

network-manager-openvpn
network-manager-openvpn-gnome

您还需要service-type安装正确的软件包。例如使用时service-type=org.freedesktop.NetworkManager.l2tp 那么您需要安装l2tp网络管理器

最后我遇到的问题是权限对于我来说,这些文件/etc/NetworkManager/system-connections 需要以下权限:

-rw------- 1 root root

当我复制这些文件时,我的用户作为其所有者拥有 775 权限,这导致 NetworkManager 由于某种原因无法使用它们。

答案4

我花了很长时间才弄清楚这一点,但您可以使用以下命令导出个别内容(例如 VPN 设置)nmcli

# List connections
nmcli connection

# Export one
nmcli connection export ConnectionName > yourfile

无论您的配置文件在哪里,这都有效,但我认为没有办法一次导出多个文件。不幸的是,这似乎至少不保留密码凭据 - 它可能保留证书凭据。

相关内容