网络管理器系统连接文件的结构是什么样的?

网络管理器系统连接文件的结构是什么样的?

有人可以列出配置文件的完整结构吗?网络管理器将已知网络存储在 /etc/NetworkManager/system-connections 中?

示例(文件名为 askUbuntu):

[connection]
id=askUbuntu
uuid=81255b2e-bdf1-4bdb-b6f5-b94ef16550cd
type=802-11-wireless

[802-11-wireless]
ssid=askUbuntu
mode=infrastructure
mac-address=00:08:CA:E6:76:D8

[ipv6]
method=auto

[ipv4]
method=auto

我想使用脚本自己创建其中一些。但在这样做之前,我想知道每一个可能的选择。

此外,这种结构似乎在某种程度上类似于使用 dbus 获取的活动连接信息。

dbus-send --system --print-reply \
    --dest=org.freedesktop.NetworkManager \
    "$active_setting_path" \ # /org/freedesktop/NetworkManager/Settings/2
    org.freedesktop.NetworkManager.Settings.Connection.GetSettings 

会告诉你:

array [
  dict entry(
     string "802-11-wireless"
     array [
        dict entry(
           string "ssid"
           variant                   array of bytes "askUbuntu"
        )
        dict entry(
           string "mode"
           variant                   string "infrastructure"
        )
        dict entry(
           string "mac-address"
           variant                   array of bytes [
                 00 08 ca e6 76 d8
              ]
        )
        dict entry(
           string "seen-bssids"
           variant                   array [
                 string "02:1A:11:F8:C5:64"
                 string "02:1A:11:FD:1F:EA"
              ]
        )
     ]
  )
  dict entry(
     string "connection"
     array [
        dict entry(
           string "id"
           variant                   string "askUbuntu"
        )
        dict entry(
           string "uuid"
           variant                   string "81255b2e-bdf1-4bdb-b6f5-b94ef16550cd"
        )
        dict entry(
           string "timestamp"
           variant                   uint64 1383146668
        )
        dict entry(
           string "type"
           variant                   string "802-11-wireless"
        )
     ]
  )
  dict entry(
     string "ipv4"
     array [
        dict entry(
           string "addresses"
           variant                   array [
              ]
        )
        dict entry(
           string "dns"
           variant                   array [
              ]
        )
        dict entry(
           string "method"
           variant                   string "auto"
        )
        dict entry(
           string "routes"
           variant                   array [
              ]
        )
     ]
  )
  dict entry(
     string "ipv6"
     array [
        dict entry(
           string "addresses"
           variant                   array [
              ]
        )
        dict entry(
           string "dns"
           variant                   array [
              ]
        )
        dict entry(
           string "method"
           variant                   string "auto"
        )
        dict entry(
           string "routes"
           variant                   array [
              ]
        )
     ]
  )
]

我可以使用 dbus(/org/freedesktop/NetworkManager/Settings 中的 AddSettings())传递以下类型的输入来创建新的设置文件,所以向我解释这个结构并告诉我所有可能的选项也会有所帮助。据我所知,这是一个 Dictionary{String, Dictionary{String, Variant}}。

直接创建配置文件和使用 dbus 有什么区别吗?

答案1

该文件不是供用户编辑的,而是由网络管理器工具编辑的。您可以使用以下方式阅读手册:

man nm-settings

文件

  /etc/NetworkManager/system-connections

  or distro plugin-specific location

该列表太长/太广泛并且随时可能发生变化,因此建议使用手册页,因为它与您的 NM 版本同步。

答案2

添加到Braiam 的回答(对于评论来说太长了),一些可能有用的细节可以避免/etc/NetworkManager/system-connections/askUbuntu上面命名的密钥文件中的地址/标识符冲突:

1)为了不与系统中已经存在的 UUID 冲突,您可以创建一个在终端运行的随机 UUID ,并将其输出粘贴到文件部分中的uuidgen密钥中。uuid=[connection]/etc/NetworkManager/system-connections/askUbuntu

2) 为了不与您家庭网络中已在使用的另一个 IPv4(假设)发生冲突(在您的网关内安全无虞),您可以选择从 192.168.0.0 到 192.168.255.255 范围内的地址,然后在 部分中将[ipv4]密钥更改method=为并使用您选择的地址manual创建密钥。address1=

2.1)如果你不知道地址,你可以shuf -i 1:255 -n 2在终端中运行以获取最后的位置——65k 次碰撞中只有一次机会

相关内容