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
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
cURL-7.88.1, DHCP-4.4.3-P1 (somente o cliente),
gobject-introspection-1.74.0,
iptables-1.8.9, newt-0.52.23 (para
nmtui), nss-3.88.1, Polkit-122,
PyGObject-3.42.2, Systemd-252, UPower-1.90.0,
Vala-0.56.4 e wpa_supplicant-2.10 (tempo de execução,
construído com suporte ao "D-Bus")
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
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"
|