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

val*_*ntt 26 networking networkmanager

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

用例是:

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

应迁移所有设置,其中包括:

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

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

and*_*coz 19

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

/etc/NetworkManager/system-connections
Run Code Online (Sandbox Code Playgroud)

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

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

  • 这个答案是不完整的。NetworkManager 为每个似乎基于接口 MAC 地址的系统连接分配一个 UUID。如果您更改硬件,NetworkManager 将不会使用旧的系统连接,因为 UUID 不再符合预期。 (11认同)
  • @divestoclimb 是否有一些指南解释了如何将 UUID 从旧系统重命名为新系统? (3认同)
  • UUID 只是一个随机生成的标识符。您必须确保每个连接都有唯一的标识符(在每台机器上)。 (2认同)

小智 9

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

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

    /etc/NetworkManager/system-connections
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将每个文件中的 MAC 地址条目从旧 MAC 更改为新 MAC。作为根:

    cd /etc/NetworkManager/system-connections
    sed -i -e 's/<old mac>/<new mac>/ *
    
    Run Code Online (Sandbox Code Playgroud)
  3. 以防万一,重启网络管理器:

    systemctl restart NetworkManager
    
    Run Code Online (Sandbox Code Playgroud)

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

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

  • VPN conf文件的MAC行是什么?我只看到 UUID。如何在新机器上重新生成新的 UUID? (2认同)

val*_*ntt 5

无线设置(至少在 Fedora 上)保存在此目录中:

/etc/sysconfig/network-scripts 
Run Code Online (Sandbox Code Playgroud)

每个 wifi 连接有两个文件。第一个文件名为ifcfg-YOURSSID包含 wifi 网络设置并keys-YOURSSID包含无线网络密码。

还有一个相关的问题可以解释这一点: NetworkManager's WiFi settings storage?


小智 5

以下内容在 ubuntu 上对我有用:20.10

/etc/NetworkManager/system-connections复制over的内容

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

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

network-manager-openvpn
network-manager-openvpn-gnome
Run Code Online (Sandbox Code Playgroud)

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

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

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

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