NetworkManager-1.44.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 corretamente usando uma plataforma LFS 12.0.

[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.68, D-Bus Python-1.3.2 (para a suíte de teste), GnuTLS-3.8.1 (pode ser usado em vez de nss-3.92), GTK-Doc-1.33.2, libpsl-0.21.2, (Qt-5.15.10 ou componentes-qt-5.15.10 com qtdoc) (para exemplos), ModemManager-1.18.12, UPower-1.90.2, Valgrind-3.21.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 "Qt-5.15.10" 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.44.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

Se você não tiver 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.44.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: Essa chave habilita construir nmtui.

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

-Dmodem_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.

-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: Essa chave desabilita o 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.

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

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

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

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

-Dsuspend_resume=upower: Use essa chave se você tiver UPower-1.90.2 instalado e quiser usá-lo (em vez de Systemd-254) 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.44.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"