Qual é a estrutura dos arquivos de conexões de sistema dos gerenciadores de rede?

5

alguém poderia listar a estrutura completa dos arquivos de configuração, que o gerenciador de rede armazena para redes conhecidas em / etc / NetworkManager / system-connections para redes conhecidas?

Exemplo (nome do arquivo 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

Eu gostaria de criar alguns deles usando um script. No entanto, antes de fazê-lo, gostaria de saber todas as opções possíveis.

Além disso, essa estrutura parece se assemelhar às informações que você pode obter usando o dbus para conexões ativas.

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

dirá:

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 [
              ]
        )
     ]
  )
]

Eu posso criar novos arquivos de configuração usando o dbus (AddSettings () em / org / freedesktop / NetworkManager / Settings) passando este tipo de entrada, então me explicando esta estrutura e me informando todas as opções possíveis também ajudará. Afaik, este é um dicionário {String, Dictionary {String, Variant}}.

Haverá alguma diferença na criação de arquivos de configuração diretamente ou usando o dbus?

    
por Oyks Livede 30.10.2013 / 16:47

2 respostas

5

Esse arquivo não deve ser editado pelo usuário, mas pelas ferramentas do Network Manager. Você pode ler o manual usando:

man nm-settings
  

ARQUIVOS

  /etc/NetworkManager/system-connections

  or distro plugin-specific location

A lista é muito longa / extensa e pode mudar a qualquer momento, por isso, é recomendável usar a página de manual, pois ela está sincronizada com sua versão do NM.

    
por Braiam 07.11.2013 / 00:53
0

Adicionando a resposta da Braiam (seria muito longa para um comentário), alguns detalhes potencialmente úteis para evitar endereço / colisão de identificador no seu arquivo-chave chamado /etc/NetworkManager/system-connections/askUbuntu acima:

1) para não colidir com um UUID já existente em seu sistema, você pode criar um UUID aleatório executando uuidgen no terminal e colando sua saída na chave uuid= na seção [connection] no arquivo /etc/NetworkManager/system-connections/askUbuntu .

2) para não colidir com outro IPv4 já em uso (digamos) em sua rede doméstica (sã e salva dentro do seu gateway), você pode escolher um endereço na faixa de 192.168.0.0 a 192.168.255.255 e depois , na seção [ipv4] , você altera a chave method= para manual e cria a chave address1= com sua escolha de endereço.

2.1) Caso você esteja sem ideias para um endereço, você pode executar shuf -i 1:255 -n 2 no terminal para obter a última posição - uma chance em 65k de colisão

    
por Marcelo Ventura 24.04.2018 / 07:35