NetworkManager-1.48.8

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 corretamente usando uma plataforma LFS 12.2.

[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

libndp-1.9

Recomendadas

Opcionais

BlueZ-5.77, D-Bus Python-1.3.2 (para a suíte de teste), GnuTLS-3.8.7.1 (pode ser usado em vez de nss-3.103), GTK-Doc-1.34.0, jansson-2.14, ModemManager-1.18.12, qt5-components-5.15.14 com qtdoc (para exemplos), UPower-1.90.4, Valgrind-3.23.0, dnsmasq, firewalld, libaudit, libteam, mobile-broadband-provider-info, PPP e RP-PPPoE

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 --->                                                [NET]
  Networking options --->
    [*]   TCP/IP networking                                               [INET]
    <*/M>   IP: tunneling                                             [NET_IPIP]
    <*/M>   IP: GRE demultiplexer                              [NET_IPGRE_DEMUX]
    <*/M>   IP: GRE tunnels over IP                                  [NET_IPGRE]
    <*>     The IPv6 protocol --->                                        [IPV6]
      <*/M>   IPv6: IPv6-in-IPv4 tunnel (SIT driver)                  [IPV6_SIT]
      <*/M>   IPv6: GRE tunnel                                        [IPV6_GRE]
      [*]     IPv6: Multiple Routing Tables               [IPV6_MULTIPLE_TABLES]
    [*]     MPTCP: Multipath TCP                                         [MPTCP]
    [*]       MPTCP: IPv6 support for Multipath TCP                 [MPTCP_IPV6]
    <*/M> 802.1Q/802.1ad VLAN Support                               [VLAN_8021Q]
    [*]   QoS and/or fair queueing --->                              [NET_SCHED]
      <*> Stochastic Fairness Queueing (SFQ)                       [NET_SCH_SFQ]
      <*> Token Bucket Filter (TBF)                                [NET_SCH_TBF]
      <*> Fair Queue Controlled Delay AQM (FQ_CODEL)          [NET_SCH_FQ_CODEL]
      <*> Ingress/classifier-action Qdisc                      [NET_SCH_INGRESS]

Device Drivers --->
  [*] Network device support --->                                   [NETDEVICES]
    [*]   Network core driver support                                 [NET_CORE]
    <*/M>   Bonding driver support                                     [BONDING]
    <*/M>   Dummy net driver support                                     [DUMMY]
    <*/M>   Ethernet team driver support --->                         [NET_TEAM]
    <*/M>   MAC-VLAN support                                           [MACVLAN]
    <*/M>     MAC-VLAN based tap driver                                [MACVTAP]
    <*/M>   IP-VLAN support                                             [IPVLAN]
    <*/M>   Virtual eXtensible Local Area Network (VXLAN)                [VXLAN]
    <*/M>   Virtual ethernet pair device                                  [VETH]
    <*/M>   Virtual Routing and Forwarding (Lite)                      [NET_VRF]

Instalação do NetworkManager

Se qt5-components-5.15.14 estiver instalado e os exemplos baseados em Qt forem desejados, 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         \
      -D libaudit=no              \
      -D nmtui=true               \
      -D ovs=false                \
      -D ppp=false                \
      -D selinux=false            \
      -D qt=false                 \
      -D session_tracking=systemd \
      -D modem_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.48.8}

Se você não passou a opção -D docs=true para meson, 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

Se você não tiver usado -D docs=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.48.8

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.

-D docs=true: Use essa chave para habilitar construir páginas de manual e documentação se GTK-Doc-1.34.0 estiver instalado.

-D nmtui=true: Essa chave habilita construir nmtui.

-D ovs=false: Essa chave desabilita a integração do Open vSwitch porque ela precisa de jansson-2.14. Remova-a se você tiver jansson-2.14 instalado em teu sistema.

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

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

-D ppp=false: Essa chave desabilita suporte a PPP no NetworkManager, já que os aplicativos necessários para isso não estão instalados. Remova essa chave se você precisar de suporte a PPP e tiver o PPP instalado.

-D libaudit=no e -D selinux=false: Essa chave desabilita o suporte para libaudit e SELinux, vez que ele(a) não é usado(a) no BLFS.

-D qt=false: Essa chave desabilita os exemplos QT. Omita se você tiver o Qt disponível e desejar instalar os exemplos.

-D crypto=gnutls: Use essa chave se você tiver GnuTLS instalado e quiser usá-lo para operações de certificados e chaves no NetworkManager, em vez de usar o NSS (o padrão).

-D crypto=null: Use essa chave se nem NSS nem GnuTLS estiverem instalados, mas você quiser construir NetworkManager de qualquer maneira. Essa chave fará com que NetworkManager careça de alguns recursos (por exemplo, 802.1X).

-D suspend_resume=upower: Use essa chave se você tiver UPower-1.90.4 instalado e quiser usá-lo (em vez de Systemd-256.4) para suspender e retomar o suporte.

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 dhcpcd ou internal):

cat > /etc/NetworkManager/conf.d/dhcp.conf << "EOF"
[main]
dhcp=dhcpcd
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.48.8, /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"