NetworkManager-1.42.0

Introdução ao NetworkManager

"NetworkManager" é um conjunto de ferramentas cooperativas que tornam a operação interativa de dispositivos via rede de intercomunicação simples e direta. Quer você use "WiFi", com fio, "3G" ou "Bluetooth", o "NetworkManager" te permite mudar rapidamente de uma rede de intercomunicação para outra: depois que uma rede de intercomunicação tiver sido configurada e conectada uma vez, ela poderá ser detectada e conectada novamente automaticamente na próxima vez que estiver disponível.

Esse pacote é conhecido por construir e funcionar adequadamente usando uma plataforma LFS 11.3.

[Nota]

Nota

Certifique-se de desabilitar o serviço "systemd-networkd" ou configurá-lo para não gerenciar as interfaces que você quiser gerenciar com o "NetworkManager".

Informação do Pacote

Dependências do "NetworkManager"

Exigidas

jansson-2.14 e libndp-1.8

Recomendadas

Opcionais

BlueZ-5.66, D-Bus Python-1.3.2 (para a suíte de teste), GnuTLS-3.8.0 (usado se nss-3.88.1 não for encontrado), GTK-Doc-1.33.2, libpsl-0.21.2, Qt-5.15.8 (para exemplos), ModemManager-1.18.12, Valgrind-3.20.0, dnsmasq, firewalld, libaudit, libteam, mobile-broadband-provider-info, PPP e RP-PPPoE

Observações de Usuário(a): https://wiki.linuxfromscratch.org/blfs/wiki/NetworkManager

Configuração do Núcleo

Se desejar executar os testes, [então] verifique se pelo menos as seguintes opções estão habilitadas na configuração do núcleo. Essas opções foram consideradas necessárias, mas podem não ser suficientes. Recompile o núcleo se necessário:

[*] Networking support--->                               [CONFIG_NET]
      Networking options--->
      [*] TCP/IP networking                               [CONFIG_INET]
      <*/M>   IP: tunelling                               [CONFIG_NET_IPIP]
      <*/M>   IP: GRE demultiplexer                       [CONFIG_NET_IPGRE_DEMUX]
      <*/M>   IP: GRE tunnels over IP                     [CONFIG_NET_IPGRE]
      <*>   The IPv6 protocol --->                        [CONFIG_IPV6]
        <*/M> IPv6: IPv6-in-IPv4 tunnel (SIT driver)      [CONFIG_IPV6_SIT]
        <*/M> IPv6: GRE tunnel                            [CONFIG_IPV6_GRE]
        [*] IPv6: Multiple Routing Tables                 [CONFIG_IPV6_MULTIPLE_TABLES]
      [*]   MPTCP:   Multipath TCP                        [CONFIG_MPTCP]
      [*]     MPTCP: IPv6 support for Multipath TCP       [CONFIG_MPTCP_IPV6]
      <*/M> 802.1Q/802.1ad VLAN Support                   [CONFIG_VLAN_8021Q]
      [*] QoS and/or fair queueing  --->                  [CONFIG_NET_SCHED]
        <*/M> Stochastic Fairness Queueing (SFQ)          [CONFIG_NET_SCH_SFQ]
        <*/M> Token Bucket Filter (TBF)                   [CONFIG_NET_SCH_TBF]
        <*/M> Fair Queue Controlled Delay AQM (FQ_CODEL)  [CONFIG_NET_SCH_FQ_CODEL]
        <*/M> Ingress/classifier-action Qdisc             [CONFIG_NET_SCH_INGRESS]
    Device Drivers --->
    [*] Network device support --->                       [CONFIG_NETDEVICES]
      [*] Network core driver support                     [CONFIG_NET_CORE]
      <*>   Bonding driver support                        [CONFIG_BONDING]
      <*>   Dummy net driver support                      [CONFIG_DUMMY]
      <*>   Ethernet team driver support --->             [CONFIG_NET_TEAM]
      <*>   MAC-VLAN support                              [CONFIG_MACVLAN]
      <*>     MAC-VLAN based tap driver                   [CONFIG_MACVTAP]
      <*>   IP-VLAN support                               [CONFIG_IPVLAN]
      <*>   Virtual eXtensible Local Area Network (VXLAN) [CONFIG_VXLAN]
      <*>   Virtual ethernet pair device                  [CONFIG_VETH]
      <*>   Virtual Routing and Forwarding (Lite)         [CONFIG_VRF]

Instalação do NetworkManager

Se "Qt-5.15.8" estiver instalado e os exemplos baseados em "Qt" forem desejados, [então] corrija dois arquivos "meson.build":

sed -e 's/-qt4/-qt5/'             \
    -e 's/moc_location/host_bins/' \
    -i examples/C/qt/meson.build   &&

sed -e 's/Qt/&5/'                  \
    -i meson.build

Corrija os conjuntos sequenciais de comandos "Python", de forma que eles usem "Python 3":

grep -rl '^#!.*python$' | xargs sed -i '1s/python/&3/'

Instale o "NetworkManager" executando os seguintes comandos:

mkdir build &&
cd   build    &&

CXXFLAGS+="-O2 -fPIC"            \
meson setup                      \
      --prefix=/usr              \
      --buildtype=release        \
      -Dlibaudit=no              \
      -Dlibpsl=false             \
      -Dnmtui=true               \
      -Dovs=false                \
      -Dppp=false                \
      -Dselinux=false            \
      -Dqt=false                 \
      -Dsession_tracking=systemd \
      -Dmodem_manager=false      \
      .. &&
ninja

Uma sessão gráfica já ativa com endereço de barramento é necessária para executar os testes. Para testar os resultados, emita "ninja test".

Uns poucos testes possivelmente falhem, dependendo das opções de núcleo habilitadas.

Agora, como o(a) usuário(a) "root":

ninja install &&
mv -v /usr/share/doc/NetworkManager{,-1.42.0}

Se você não passou a opção "-Ddocs=true" para "meson", [então] você consegue instalar as páginas de manual pré geradas com (como o(a) usuário(a) "root"):

for file in $(echo ../man/*.[1578]); do
   section=${file##*.} &&
   install -vdm 755 /usr/share/man/man$section
   install -vm 644 $file /usr/share/man/man$section/
done

Ainda caso você não tenha usado "-Ddocs=true", a documentação "HTML" pré gerada também pode ser instalada com (como o(a) usuário(a) "root"):

cp -Rv ../docs/{api,libnm} /usr/share/doc/NetworkManager-1.42.0

Explicações do Comando

CXXFLAGS="-O2 -fPIC": Essas opções do compilador são necessárias para construir exemplos baseados em "Qt5".

--buildtype=release: Especifique um tipo de construção adequado para lançamentos estáveis do pacote, pois o padrão possivelmente produza binários não otimizados.

-Ddocs=true: Use essa chave para habilitar a construção de páginas de manual e documentação se "GTK-Doc-1.33.2" estiver instalado.

-Dnmtui=true: Esse parâmetro habilita construir o "nmtui".

-Dlibpsl=false e -Dovs=false: Essas chaves desabilitam a construção com as respectivas bibliotecas. Remova se você tiver as bibliotecas necessárias instaladas.

-Dmodem_manager=false: Essa chave é exigida se o "ModemManager" não estiver instalado. Omita se você tiver construído "ModemManager" e "mobile-broadband-provider-info".

-Dsession_tracking=systemd: Essa chave é usada para configurar o "systemd-logind" como o aplicativo padrão para rastreamento de sessão.

-Dsystemdsystemunitdir=/lib/systemd/system: Essa chave é usada para configurar o diretório correto de instalação para as unidades do "systemd".

-Dppp=false: Esse parâmetro desabilita o suporte "PPP" no "NetworkManager".

-Dlibaudit=no e -Dselinux=false: "libaudit" e "SELinux" não são usados no BLFS.

-Dqt=false: desabilita os exemplos "QT". Omita se você tiver o "QT" disponível e desejar instalar os exemplos.

Configurando o NetworkManager

Arquivos de Configuração

/etc/NetworkManager/NetworkManager.conf

Informação de Configuração

Para o "NetworkManager" funcionar, pelo menos um arquivo de configuração mínima precisa estar presente. Tal arquivo não é instalado com "make install". Emita o seguinte comando como o(a) usuário(a) "root" para criar um arquivo "NetworkManager.conf" mínimo:

cat >> /etc/NetworkManager/NetworkManager.conf << "EOF"
[main]
plugins=keyfile
EOF

Esse arquivo não deveria ser modificado diretamente pelos(as) usuários(as) do sistema. Em vez disso, mudanças específicas do sistema deveriam ser feitas usando arquivos de configuração no diretório "/etc/NetworkManager/conf.d".

Para permitir que o "Polkit" gerencie autorizações, adicione o seguinte arquivo de configuração:

cat > /etc/NetworkManager/conf.d/polkit.conf << "EOF"
[main]
auth-polkit=true
EOF

Para usar algo diferente do cliente "DHCP" integrado (recomendado se usar somente o "nmcli"), use a seguinte configuração (os valores válidos incluem ou "dhclient" ou "internal"):

cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
[main]
dhcp=dhclient
EOF

Para evitar que o "NetworkManager" atualize o arquivo "/etc/resolv.conf", adicione o seguinte arquivo de configuração:

cat > /etc/NetworkManager/conf.d/no-dns-update.conf << "EOF"
[main]
dns=none
EOF

Para opções adicionais de configuração, veja-se "man 5 NetworkManager.conf".

Para permitir que usuários(as) regulares configurem conexões de rede de intercomunicação, você deveria adicioná-los(as) ao grupo "netdev" e criar uma regra do "polkit" que conceda acesso. Execute os seguintes comandos como o(a) usuário(a) "root":

groupadd -fg 86 netdev &&
/usr/sbin/usermod -a -G netdev <nome_usuário(a)>

cat > /usr/share/polkit-1/rules.d/org.freedesktop.NetworkManager.rules << "EOF"
polkit.addRule(function(action, subject) {
    if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("netdev")) {
        return polkit.Result.YES;
    }
});
EOF

Unidade do systemd

Para iniciar o processo de segundo plano NetworkManager na inicialização, habilite a unidade do systemd instalada anteriormente executando o seguinte comando como o(a) usuário(a) root:

[Nota]

Nota

Se usar o "Network Manager" para gerenciar uma interface, [então] qualquer configuração anterior para essa interface deveria ser removida e a interface ser desativada antes de iniciar o "Network Manager".

systemctl enable NetworkManager

Começando na versão 1.11.2 do "NetworkManager", uma unidade do "systemd" chamada "NetworkManager-wait-online.service" está habilitada, a qual é usada para evitar que serviços que exigem conectividade de rede de intercomunicação iniciem até que o "NetworkManager" estabeleça uma conexão. Para desabilitar esse comportamento, execute o seguinte comando como o(a) usuário(a)" root":

systemctl disable NetworkManager-wait-online

Conteúdo

Aplicativos Instalados: NetworkManager, nmcli, nm-online, nmtui e simbolicamente vinculado ao nmtui: nmtui-connect, nmtui-edit e nmtui-hostname
Bibliotecas Instaladas: libnm.so e vários módulos sob /usr/lib/NetworkManager
Diretórios Instalados: /etc/NetworkManager, /usr/include/libnm, /usr/lib/NetworkManager, /usr/share/doc/NetworkManager-1.42.0, /usr/share/gtk-doc/html/{libnm,NetworkManager} (se a documentação for construída) e /var/lib/NetworkManager

Descrições Curtas

nmcli

é uma ferramenta de linha de comando para controlar o "NetworkManager" e obter a situação dele

nm-online

é um utilitário para determinar se você está online

nmtui

é uma interface interativa de usuário(a) baseada em "Ncurses" para o "nmcli"

nmtui-connect

é uma interface interativa de usuário(a) baseada em "Ncurses" para ativar/desativar conexões

nmtui-edit

é uma interface interativa de usuário(a) baseada em "Ncurses" para editar conexões

nmtui-hostname

é uma interface interativa de usuário(a) baseada em "Ncurses" para editar o nome do dispositivo

NetworkManager

é o processo de segundo plano de gerenciamento de rede de intercomunicação

libnm.so

contém funções usadas pelo "NetworkManager"