NetworkManager (Português)

Status de tradução:
Esse artigo é uma tradução de
NetworkManager
. Data da última tradução: 2020-06-30. Você pode ajudar a sincronizar a tradução, se houver
alterações
na versão em inglês.
Artigos relacionados
Configuração de rede
Configuração de rede sem fio
O
NetworkManager
é um programa que provê a detecção e configuração automática de redes para computadores. As funcionalidades do NetworkManager são úteis para redes sem fio e cabeadas. Nas redes sem fio, o NetworkManager terá preferência pelas redes que já conhece, e possui a habilidade para trocar para a rede mais confiável sempre que disponível. Aplicativos preparados para o NetworkManager podem trocar do modo online para o offline. O NetworkManager tem preferência pelas redes cabeadas em detrimento das redes sem fio, e possui suporte a certos tipos de VPN. Foi originalmente desenvolvido pela Red Hat e agora, é hospedado no projeto
GNOME
.
Atenção
Por padrão, as senhas de Wi-Fi são armazenadas em texto simples, veja
#Senhas de Wi-Fi criptografadas
.
Instalação
O NetworkManager pode ser
instalado
com o pacote
networkmanager
, que contém um daemon, uma interface de linha de comando (
nmcli
) e uma interface baseada em curses (
nmtui
).
Habilitar NetworkManager
Após a instalação, você deve
iniciar/habilitar
NetworkManager.service
. Uma vez iniciado o daemon do NetworkManager, ele se conectará automaticamente a todas as "conexões do sistema" disponíveis que já foram configuradas. Quaisquer "conexões de usuário" ou conexões não configuradas precisarão de
nmcli
ou um miniaplicativo para configurar e conectar.
Interfaces adicionais
nm-connection-editor
para uma interface gráfica de usuário,
network-manager-applet
para um miniaplicativo de bandeja de sistema (
nm-applet
).
Nota
Você deve garantir que nenhum outro serviço que deseje configurar a rede esteja em execução; na verdade, vários serviços de rede entrarão em conflito. Você pode encontrar uma lista dos serviços em execução no momento com
systemctl --type=service
e, em seguida,
parar
. Veja
#Configuração
para ativar o serviço NetworkManager.
Suporte a banda larga móvel
Instale
os pacotes
modemmanager
,
mobile-broadband-provider-info
e
usb_modeswitch
para um suporte a conexão de banda larga móvel. Veja
USB 3G Modem#NetworkManager
para detalhes.
Suporte a PPPoE / DSL
Instale
o pacote
rp-pppoe
para suporte a conexão PPPoE/DSL. Para realmente adicionar uma conexão PPPoE, use
nm-connection-editor
e adicione uma nova conexão DSL/PPPoE.
Suporte a VPN
O NetworkManager desde a versão 1.16 tem suporte nativo ao
WireGuard
, precisando apenas de seu módulo de kernel
wireguard
. Leia o
WireGuard na publicação de blog do NetworkManager
.
O suporte para outros tipos de VPN é baseado em um sistema de plug-in. Eles são fornecidos nos seguintes pacotes:
networkmanager-openconnect
para
OpenConnect
networkmanager-openvpn
para
OpenVPN
networkmanager-pptp
para
PPTP Client
networkmanager-strongswan
para
strongSwan
networkmanager-vpnc
networkmanager-fortisslvpn-git
AUR
[
link quebrado
: package not found]
networkmanager-iodine-git
AUR
networkmanager-libreswan
AUR
networkmanager-l2tp
networkmanager-ssh-git
AUR
network-manager-sstp
Atenção
Há vários
bugs
(e
bugs antigos
) relacionados a suporte VPN. Verifique as opções de processos daemon definidos via a GUI corretamente e certifique-se em cada lançamento do pacote.
Nota
Pra ter uma resolução de DNS totalmente funcional ao usar VPN, você deve configurar
encaminhamento condicional
.
Uso
NetworkManager vem com
nmcli(1)
e
nmtui(1)
.
Exemplos de nmcli
Lista redes wifi próximas:
$ nmcli device wifi list
Conecta a uma rede wifi:
$ nmcli device wifi connect
SSID
password
senha
Conecta a uma rede oculta:
$ nmcli device wifi connect
SSID
password
senha
hidden yes
Conecta a um wifi na interface de rede
wlan1
:
$ nmcli device wifi connect
SSID
password
senha
ifname wlan1
nome_perfil
Desconecta uma interface:
$ nmcli device disconnect ifname eth0
Reconecta uma interface marcada como desconectada:
$ nmcli connection up uuid
UUID
Obtém uma lista de UUIDs:
$ nmcli connection show
Vê uma lista de dispositivos de rede e seus estados:
$ nmcli device
Desliga o wifi:
$ nmcli radio wifi off
Editar uma conexão
Para uma lista compreensiva de configurações, veja
nm-settings(5)
.
Em primeiro lugar você precisa obter lista de conexões:
$ nmcli connection
NAME                UUID                                  TYPE      DEVICE
Conexão cabeada 2   e7054040-a421-3bef-965d-bb7d60b7cecf  ethernet  enp5s0
Conexão cabeada 1   997f2782-f0fc-301d-bfba-15421a2735d8  ethernet  enp0s25
MEU-WIFI-DE-CASA    92a0f7b3-2eba-49ab-a899-24d83978f308  wifi       --
Aqui você pode usar a primeira coluna como ID de conexão usada posteriormente. Neste exemplo, escolhemos
Conexão cabeada 2
como um ID de conexão.
Você pode ter três métodos para configurar uma conexão após
Conexão cabeada 2
ter sido criada:
Editor interativo do nmcli
nmcli connection edit
Conexão cabeada 2
.
O uso está bem documentado no editor.
Interface de linha de comando do nmcli
nmcli connection modify
Conexão cabeada 2
definição
.
propriedade
valor
. Veja
nmcli(1)
para seu uso. Por exemplo, você pode alterar sua métrica de rota IPv4 para 200 usando o comando
nmcli connection modify 'Conexão cabeada 2' ipv4.route-metric 200
.
Arquivo de conexão
Em
/etc/NetworkManager/system-connections/
, modifique o arquivo
Conexão cabeada 2
.nmconnection
correspondente.
Não se esqueça de recarregar o arquivo de configuração com
nmcli connection reload
Front-ends
Para configurar e ter acesso fácil ao NetworkManager, a maioria dos usuários desejará instalar um applet. Esse front-end da GUI geralmente reside na bandeja do sistema (ou na área de notificação) e permite a seleção de rede e a configuração do NetworkManager. Vários ambientes de área de trabalho possuem seu próprio applet. Caso contrário, você pode usar
#nm-applet
.
GNOME
O
GNOME
tem uma ferramenta embutida, acessível a partir das configurações de Rede.
KDE Plasma
Instale
o pacote
plasma-nm
. Em seguida, adicione-o à barra de tarefas do KDE por meio do menu
Opções de painel > Adicionar widgets > Redes
.
nm-applet
network-manager-applet
é um front-end em GTK 3 que funciona sob ambientes Xorg com uma bandeja de sistema.
Para armazenar conexões secretas, instale e configure
GNOME/Keyring
.
Esteja ciente de que depois de ativar a opção caixa de seleção
Disponibilizar para outros usuários
para uma conexão, o NetworkManager armazena a senha em texto simples, embora o respectivo arquivo seja acessível apenas para root (ou outros usuários via
nm-applet
). Veja
#Senhas de Wi-Fi criptografadas
.
Para executar
nm-applet
sem uma bandeja do sistema, você pode usar
trayer
AUR
ou
stalonetray
. Por exemplo, você pode adicionar um script como este em seu caminho:
nmgui
#!/bin/sh
nm-applet    2>&1 > /dev/null &
stalonetray  2>&1 > /dev/null
killall nm-applet
Quando você fecha a janela
stalonetray
, ela fecha
nm-applet
também, então nenhuma memória extra é usada quando você terminar as configurações de rede.
O applet pode mostrar notificações de eventos, como conexão ou desconexão de uma rede WiFi. Para que essas notificações sejam exibidas, verifique se você tem um servidor de notificação instalado - consulte
Notificações na área de trabalho
. Se você usar o applet sem um servidor de notificação, poderá ver algumas mensagens em stdout/stderr e o aplicativo poderá ser interrompido. Veja
[1]
.
Para executar
nm-applet
com tais notificações desabilitadas, inicie o miniaplicativo com o seguinte comando:
$ nm-applet --no-agent
Dica
nm-applet
pode ser iniciado automaticamente com um
arquivo desktop de inicialização automática
, para adicionar a opção --no-agent, modifique a linha Exec, p.ex.,
Exec=nm-applet --no-agent
Atenção
No
i3
, se o nm-applet for iniciado com a opção
--no-agent
, não será possível conectar-se a uma nova rede WiFi criptografada clicando na lista de itens porque nenhuma janela de diálogo de entrada de senha será exibida.
journal
mostrará
no secrets: No agents were available for this request
.
Appindicator
Desde a versão 1.18.0, o suporte do Appindicator está
disponível
no pacote oficial
network-manager-applet
. Para usar o nm-applet em um ambiente Appindicator, inicie o miniaplicativo com o seguinte comando:
$ nm-applet --indicator
networkmanager-dmenu
Como alternativa, existe o
networkmanager-dmenu-git
AUR
, que é um pequeno script para gerenciar as conexões do NetworkManager com o
dmenu
ou
rofi
em vez do
nm-applet
. Ele fornece todos os recursos essenciais, como conexão com conexões Wi-Fi ou com fio existentes do NetworkManager, conexão a novas conexões Wi-Fi, solicitações de senha, se necessário, conexão VPN existente, habilitação/desabilitação de rede e inicialização da interface gráfica
nm-connection-editor
, conexão a redes Bluetooth.
Configuração
O NetworkManager exigirá algumas etapas adicionais para poder funcionar corretamente. Certifique-se de ter configurado
/etc/hosts
como descrito na seção
Configuração de rede#Configurando um hostname
.
O NetworkManager possui um arquivo de configuração global em
/etc/NetworkManager/NetworkManager.conf
. Arquivos de configuração adicionais podem ser colocados em
/etc/NetworkManager/conf.d/
. Geralmente, nenhuma configuração precisa ser feita para os padrões globais.
Após editar um arquivo de configuração, as alterações podem ser aplicadas executando:
# nmcli general reload
Habilitar  NetworkManager Wait Online
Se você tiver serviços que falham se eles forem iniciados antes que a rede esteja ativa, você pode usar o
NetworkManager-wait-online.service
além do
NetworkManager.service
. Isso, no entanto, raramente é necessário porque a maioria dos daemons em rede é inicializada corretamente, mesmo que a rede ainda não tenha sido configurada.
Em alguns casos, o serviço ainda falhará ao iniciar com sucesso na inicialização devido à configuração de tempo limite em
/usr/lib/systemd/system/NetworkManager-wait-online.service
ser muito curta. Altere o tempo limite padrão de 30 para um valor mais alto.
Configurar as permissões de PolicyKit
Veja
Solução de problemas gerais#Permissões de sessão
para como configurar uma sessão de trabalho.
Com uma sessão de trabalho, você tem várias opções para conceder os privilégios necessários ao NetworkManager:
Opção 1.
Execute um agente de autenticação
Polkit
ao efetuar login, como
/usr/lib/polkit-gnome/polkit-gnome-authentication-agent-1
(parte do
polkit-gnome
). Você será solicitado a fornecer sua senha sempre que adicionar ou remover uma conexão de rede.
Opção 2.
Adicione
a si próprio ao grupo
wheel
. Você não precisará inserir sua senha, mas a sua conta de usuário também poderá receber outras permissões, como a capacidade de usar o
sudo
sem digitar a senha do root.
Opção 3.
Adicione
a si próprio ao grupo
network
e crie o seguinte arquivo:
/etc/polkit-1/rules.d/50-org.freedesktop.NetworkManager.rules
polkit.addRule(function(action, subject) {
  if (action.id.indexOf("org.freedesktop.NetworkManager.") == 0 && subject.isInGroup("network")) {
    return polkit.Result.YES;
  }
});
Todos os usuários do grupo
network
poderão adicionar e remover redes sem uma senha. Isso não funcionará em
systemd
se você não tiver uma sessão ativa com
systemd-logind
.
Configurações de proxy
O NetworkManager não lida diretamente com configurações de proxy, mas se você estiver usando o
GNOME
ou
KDE
, você pode usar o
proxydriver
que lida com configurações de proxy usando Informações do NetworkManager. O proxydriver é encontrado no pacote
proxydriver
AUR
[
link quebrado
: package not found]
.
Para que o
proxydriver
possa alterar as configurações do proxy, você precisaria executar este comando, como parte do processo de inicialização do GNOME (veja
GNOME (Português)#Inicialização automática
):
xhost +si:localuser:
nome_de_usuário
Veja também as
configurações de proxy
.
Verificando conectividade
NetworkManager pode tentar alcançar uma página na Internet ao conectar a uma rede.
networkmanager
está configurado por padrão em
/usr/lib/NetworkManager/conf.d/20-connectivity.conf
para verificar a conectividade com o archlinux.org. Para usar um servidor web diferente ou desabilitar a verificação de conectividade, crie
/etc/NetworkManager/conf.d/20-connectivity.conf
, veja
NetworkManager.conf(5) § CONNECTIVITY SECTION
. Segue abaixo um exemplo de uso de servidores do GNOME (não requer o uso de
GNOME
em si):
/etc/NetworkManager/conf.d/20-connectivity.conf
[connectivity]
uri=http://nmcheck.gnome.org/check_network_status.txt
Nota
Embora as verificações automáticas de conectividade sejam um vazamento de privacidade em potencial, o URL oficial de conectividade padrão do archlinux.org está comprometido em não registrar nenhum acesso. Veja
[2]
.
Portais cativos
Para aqueles que estão por trás de um
portal cativo
(captive portal)
, o gerenciador de desktop pode abrir automaticamente uma janela solicitando credenciais. Se sua área de trabalho não funcionar, você pode usar o pacote
capnet-assist
(no entanto, atualmente ele possui um script de
dispatcher
quebrado do NetworkManager). Como alternativa, você pode criar um script de expedidor do NetworkManager com o seguinte conteúdo:
/etc/NetworkManager/dispatcher.d/90-open_captive_portal
#!/bin/sh -e
# Script to dispatch NetworkManager events
#
# Runs shows a login webpage on walled garden networks.
# See NetworkManager(8) for further documentation of the dispatcher events.

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

if [ -x "/usr/bin/logger" ]; then
    logger="/usr/bin/logger -s -t captive-portal"
else
    logger=":"
fi

wait_for_process() {
    PNAME=$1
    while [ -z "$(/usr/bin/pgrep $PNAME)" ]; do
        sleep 3;
    done
}

#launch the browser, but on boot we need to wait that nm-applet starts
start_browser() {
    local user="$1"
    local display="$2"

    export DISPLAY="$display"
    wait_for_process nm-applet

    export XAUTHORITY="/home/$user/.Xauthority"

    $logger "Running browser as '$user' with display '$display' to login in captive portal"
    sudo -u "$user" --preserve-env=DISPLAY,XAUTHORITY -H xdg-open http://capnet.elementary.io 2>&1 > /dev/null
}

# Run the right scripts
case "$2" in
    connectivity-change)
    $logger -p user.debug "dispatcher script triggered on connectivity change: $CONNECTIVITY_STATE"
    if [ "$CONNECTIVITY_STATE" = "PORTAL" ]; then
        # Match last column of who's output with ' :[at least one digit] '
        who | awk '$NF ~ /\(:[0-9]+\)/ { print $1 " " substr($NF, 2, length($NF)-2) };' | \
        while read user display; do
            start_browser $user $display || $logger -p user.err "Failed for user: '$user' display: '$display'"
        done
    fi
    ;;
    *)
    # In a down phase
    exit 0
    ;;
esac
Você precisará
reiniciar
NetworkManager.service
ou reiniciar para que isso comece a funcionar. Depois disso, o script do expedidor deve abrir uma janela de login assim que detectar que você está atrás de um portal cativo.
Outra solução é o
captive-browser-git
AUR
, baseado no Google Chrome.
Cliente DHCP
Por padrão, o NetworkManager usa seu cliente DHCP interno. O plugin DHCPv4 interno baseado na biblioteca
n-dhcp4 do nettools
, enquanto o plugin DHCPv6 interno é feito de código baseado systemd-networkd.
Para usar o cliente DHCP da ISC,
instale
dhclient
. Para alterar o backend do cliente DHCP, defina a opção
main.dhcp=
nome_cliente_dhcp
com um arquivo de configuração em
/etc/NetworkManager/conf.d/
. Por exemplo:
/etc/NetworkManager/conf.d/dhcp-client.conf
[main]
dhcp=dhclient
Nota
Não ative as units systemd enviadas com os pacotes
dhclient
e
dhcpcd
. Eles entrarão em conflito com o NetworkManager; consulte a nota em
#Instalação
para mais detalhes.
O NetworkManger não suporta dhcpcd ≥ 9.0.0. Veja
FS#66231
.
Gerenciamento de DNS
O gerenciamento de DNS do NetworkManager é descrito na página wiki do projeto GNOME —
Projects/NetworkManager/DNS
.
Cache de DNS e encaminhamento condicional
O NetworkManager possui um plugin para habilitar o cache DNS e encaminhamento condicional (
anteriormente
chamado "DNS dividido" na documentação do NetworkManager) usando
dnsmasq
ou
systemd-resolved
. As vantagens dessa configuração são que as pesquisas de DNS serão armazenadas em cache, encurtando os tempos de resolução e as pesquisas de DNS dos hosts de VPN serão roteadas para os servidores DNS da VPN relevantes. Isso é especialmente útil se você estiver conectado a mais de uma VPN.
dnsmasq
Certifique-se que
dnsmasq
está instalado. Então, defina
main.dns=dnsmasq
com um arquivo de configuração em
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=dnsmasq
Agora, execute
nmcli general reload
como root. NetworkManager vai iniciar automaticamente o dnsmasq e adicionar
127.0.0.1
ao
/etc/resolv.conf
. Os servidores DNS originais podem ser localizados no
/run/NetworkManager/no-stub-resolv.conf
. Você pode verificar se dnsmasq está sendo usado fazendo a mesma procura DNS duas vezes com
drill example.com
e verificando o servidor e tempos de consulta.
Nota
Você não precisa iniciar
dnsmasq.service
ou editar
/etc/dnsmasq.conf
. O NetworkManager iniciará o dnsmasq sem usar o serviço systemd e sem ler o(s) arquivo(s) de configuração padrão do dnsmasq.
A instância do dnsmasq iniciada pelo NetworkManager será vinculada a
127.0.0.1:53
, você pode executar qualquer software (incluindo
dnsmasq.service
) no mesmo endereço e porta.
Configuração personalizada do dnsmasq
Configurações personalizadas podem ser criadas para o
dnsmasq
criando arquivos de configuração em
/etc/NetworkManager/dnsmasq.d/
. Por exemplo, para alterar o tamanho do cache DNS (armazenado na RAM):
/etc/NetworkManager/dnsmasq.d/cache.conf
cache-size=1000
Dica
Verifique a sintaxe do arquivo de configuração com
dnsmasq --test --conf-file=/dev/null --conf-dir=/etc/NetworkManager/dnsmasq.d
.
Veja
dnsmasq(8)
para todas as opções disponíveis.
IPv6
Habilitar o
dnsmasq
no NetworkManager pode interromper as pesquisas de DNS somente do IPv6 (ou seja,
drill -6 [hostname
}) que, de outra forma, funcionariam. Para resolver isso, a criação do arquivo a seguir configurará o
dnsmasq
para também ouvir o loopback do IPv6:
/etc/NetworkManager/dnsmasq.d/ipv6-listen.conf
listen-address=::1
Além disso, o
dnsmasq
também não prioriza o DNS IPv6 upstream. Infelizmente, o NetworkManager não faz isso (
Bug do Ubuntu
). Uma solução alternativa seria desabilitar o DNS IPv4 na configuração do NetworkManager, supondo que exista.
DNSSEC
A instância dnsmasq iniciada pelo NetworkManager por padrão não validará
DNSSEC
desde que seja iniciada com a opção
--proxy-dnssec
. Ele irá confiar em qualquer informação DNSSEC obtida do servidor DNS upstream.
Para que o dnsmasq valide corretamente o DNSSEC, quebrando assim a resolução de DNS com servidores de nomes que não suportam ele, crie o seguinte arquivo de configuração:
/etc/NetworkManager/dnsmasq.d/dnssec.conf
conf-file=/usr/share/dnsmasq/trust-anchors.conf
dnssec
systemd-resolved
O NetworkManager pode usar o
systemd-resolved
como um resolvedor e cache de DNS. Certifique-se de que
systemd-resolved
esteja configurado corretamente e que
systemd-resolved.service
esteja
iniciado
antes de usá-lo.
systemd-resolved vai ser usado automaticamente se
/etc/resolv.conf
é um
link simbólico
para
/run/systemd/resolve/stub-resolv.conf
,
/run/systemd/resolve/resolv.conf
ou
/usr/lib/systemd/resolv.conf
.
Você pode habilitá-lo explicitamente definindo
main.dns=systemd-resolved
com um arquivo de configuração em
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=systemd-resolved
Resolvedor de DNS com um assinante do openresolv
Se o
openresolv
tem um assinante para seu
resolvedor de DNS
local, configure o assinante e
configure o NetworkManager para usar o openresolv
.
Porque o NetworkManager anuncia uma única "interface" para o
resolvconf
, não é possível implementar encaminhamento condicional entre duas conexões do NetworkManager. Veja
issue 153 do NetworkManager
.
Isso pode ser parcialmente mitigado se você definir
private="*"
no
/etc/resolvconf.conf
[3]
. Quaisquer consultas por domínios que não estejam na lista de domínios de pesquisa não serão encaminhados. Elas serão tratadas conforme a configuração do resolvedor local. Por exemplo, encaminhadas para outro servidor DNS ou resolvidas recursivamente a partir da raiz do DNS.
Servidores DNS personalizados
Configurando servidores DNS globais personalizados
Para definir servidores DNS para todas as conexões, especifique-as em
NetworkManager.conf(5)
usando a sintaxe
servers=
endereçoservidorip1
,
endereçoservidorip2
,
endereçoservidorip3
em uma seção chamada
[global-dns-domain-*]
. Por exemplo:
/etc/NetworkManager/conf.d/dns-servers.conf
[global-dns-domain-*]
servers=::1,127.0.0.1
Nota
Se você usa
plugin de dnsmasq ou systemd-resolved do NetworkManager
ou
assinantes de openresolv
, então não especifique endereços de loopback com a opção
servers=
, pois isso pode quebrar a resolução de DNS.
Os servidores especificados não são enviados para
systemd-resolved
, os servidores DNS da conexão são usados.
Configurando servidores DNS personalizados em uma conexão
Configurando servidores DNS personalizados em uma conexão (GUI)
A configuração vai depender do tipo de front-end usado; o processo geralmente envolve clicar com botão direito no miniaplicativo, editar (ou criar) um perfil e, então, escolher o tipo de DHCP como
Automático (especifique endereços)
. OS endereços DNS precisarão ser inseridos e são geralmente dessa formato:
127.0.0.1,
Servidor-DNS-um
, ...
.
Configurando servidores DNS personalizados em uma conexão (nmcli / arquivo de conexão)
Para configurar servidores DNS por conexão, você pode usar o campo
dns
(e os
dns-search
e
dns-options
associados) nas
configurações da conexão
.
Se
method
estiver definido para
auto
(quando você usa DHCP), você precisa definir
ignore-auto-dns
para
yes
.
/etc/resolv.conf
Por padrão,
/etc/resolv.conf
é gerenciado pelo
NetworkManager
a menos que ele seja um link simbólico.
Ele pode ser configurado para escrever por meio do
openresolv
ou para
não tocar
.
O uso do openresolv permite que o NetworkManager coexista com outro software com suporte a
resolvconf
ou, por exemplo, para executar um cache DNS local e um resolvedor de DNS dividido para o qual o openresolv tem um
assinante
.
Nota
Encaminhamento condicional
ainda não possui suporte completo
ao usar NetworkManager com openresolv.
O
NetworkManager
também oferece hooks via os scripts dispatchers que podem ser usados para alterar o
/etc/resolv.conf
após as alterações de rede. Veja
#Serviços de rede com o NetworkManager dispatcher
e
NetworkManager(8)
para mais informações.
Nota
Se o NetworkManager estiver configurado para usar
dnsmasq
ou
systemd-resolved
, os endereços loopback apropriados serão escritos em
/etc/resolv.conf
.
O arquivo
resolv.conf
que o NetworkManager escreve, ou que escreveria em
/etc/resolv.conf
, pode ser encontrado em
/run/NetworkManager/resolv.conf
.
Um arquivo
resolv.conf
com os servidores de nome obtidos e domínios de pesquisa podem ser encontrados em
/run/NetworkManager/no-stub-resolv.conf
.
/etc/resolv.conf não gerenciado
Para evitar que o NetworkManager toque no
/etc/resolv.conf
, defina
main.dns=none
com um arquivo de configuração em
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/dns.conf
[main]
dns=none
Dica
Você também pode querer definir
main.systemd-resolved=false
, de forma que o NetworkManager não envie a configuração DNS para
systemd-resolved
.
Nota
Veja
#Cache de DNS e encaminhamento condicional
, para configurar o NetworkManager usando outros backends de DNS, como
dnsmasq
e
systemd-resolved
, em vez de usar
main.dns=none
.
Após isso, o
/etc/resolv.conf
pode ser um link simbólico quebrado que você precisará remover. Então, basta criar um novo arquivo
/etc/resolv.conf
.
Usar openresolv
Nota
Não defina
rc-manager=resolvconf
quando
systemd-resolvconf
estiver instalado.
systemd-resolved
fornece suporte limitado à interface do
resolvconf
e o NetworkManager possui suporte a se comunicar com systemd-resolved por meio de D-Bus sem usar
resolvconf
.
Para configurar o NetworkManager para usar
openresolv
, defina
main.rc-manager=resolvconf
com um arquivo de configuração em
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/rc-manager.conf
[main]
rc-manager=resolvconf
Firewall
Você pode atribuir uma zona
firewalld
com base na sua conexão atual. Por exemplo, um firewall restritivo no trabalho e um menos restritivo no domicílio.
Isso também pode ser feito com o
NetworkManager dispatcher
.
Configuração de 802.1x / PEAP
Uma rede PEAP e 802.1x pode ser adicionada adicionando um arquivo de configuração ao
/etc/NetworkManager/system-connections/
nome
.
Aqui está um exemplo de arquivo de configuração para IPv4 com IPv6 desativado:
/etc/NetworkManager/system-connections/
nome
[ipv6]
method=ignore

[ipv4]
method=auto

[connection]
#id=XXXXXXXXX
#uuid=XXXXXXXXX
type=802-11-wireless
#timestamp=XXXX

[802-11-wireless-security]
key-mgmt=wpa-eap

[802-11-wireless]
ssid=ssid
mode=infrastructure
#seen-bssids=XXXXXXXXX
security=802-11-wireless-security

[802-1x]
eap=peap;
identity=user
password=password
phase2-auth=mschapv2
A cerquilha (#) define comentários.
Serviços de rede com o NetworkManager dispatcher
Existem alguns serviços de rede que você não desejará executar até que o NetworkManager exiba uma interface. O NetworkManager tem a capacidade de iniciar serviços quando você se conecta a uma rede e os interrompe quando você desconecta (por exemplo, ao usar
NFS
,
SMB
e
NTPd
).
Para ativar o recurso, você precisa
habilitar
e
iniciar
o
NetworkManager-dispatcher.service
.
Quando o serviço estiver ativo, os scripts poderão ser adicionados ao diretório
/etc/NetworkManager/dispatcher.d
.
Os scripts devem pertencer ao
root
, caso contrário o distribuidor não os executará. Para maior segurança, defina o
proprietário
e grupo para root:
# chown root:root /etc/NetworkManager/dispatcher.d/
10-script.sh
Certifique-se que o arquivo tem as permissões corretas:
# chmod 755 /etc/NetworkManager/dispatcher.d/
10-script.sh
Os scripts serão executados em ordem alfabética no momento da conexão e em ordem alfabética inversa no momento da desconexão. Para garantir a ordem em que aparecem, é comum usar caracteres numéricos antes do nome do script (por exemplo,
10-portmap
ou
30-netfs
(o que garante que
portmapper
esteja ativo antes que as montagens do NFS sejam tentadas).
Scripts vão receber os seguintes argumentos:
Nome da interface:
p. ex.,
eth0
Status da interface:
up
ou
down
Status da VPN:
vpn-up
ou
vpn-down
Atenção
Se você se conectar a redes estrangeiras ou públicas, esteja ciente de quais serviços você está iniciando e quais servidores você espera que estejam disponíveis para eles se conectarem. Você pode criar uma falha de segurança iniciando os serviços errados enquanto estiver conectado a uma rede pública.
Evitando o esgotamento de tempo limite do dispatcher
Se o acima está funcionando, então esta seção não é relevante. No entanto, há um problema geral relacionado à execução de scripts do dispatcher que demoram mais para serem executados. Inicialmente, foi utilizado um tempo limite interno de apenas três segundos. Se o script chamado não foi concluído a tempo, ele foi morto. Mais tarde, o tempo limite foi estendido para cerca de 20 segundos (veja o
Rastreador de erros
para mais informações). Se o tempo limite ainda criar o problema, uma solução alternativa poderá ser modificar o arquivo de serviço do distribuidor
/usr/lib/systemd/system/NetworkManager-dispatcher.service
para permanecer ativo após a saída:
/etc/systemd/system/NetworkManager-dispatcher.service.d/remain_after_exit.conf
[Service]
RemainAfterExit=yes
Agora, inicie e habilite o serviço modificado
NetworkManager-dispatcher
service.
Atenção
Adicionar a linha
RemainAfterExit
a ele impedirá que o dispatcher feche. Infelizmente, o dispatcher
tem
para fechar antes que possa executar seus scripts novamente. Com ele, o dispatcher não irá expirar, mas também não será fechado, o que significa que os scripts só serão executados uma vez por inicialização. Portanto, não adicione a linha a menos que o tempo limite esteja causando um problema.
Exemplos de dispatcher
Montar pasta remota com sshfs
Como o script é executado em um ambiente muito restritivo, você precisa exportar
SSH_AUTH_SOCK
para se conectar ao seu agente SSH. Existem diferentes maneiras de conseguir isso, veja
esta mensagem
para obter mais informações. O exemplo abaixo funciona com
GNOME Keyring
, e irá pedir a senha se você ainda não estiver desbloqueado. Caso o NetworkManager conecte-se automaticamente no login, é provável que o
gnome-keyring
ainda não tenha iniciado e a exportação irá falhar (daí o sleep). O
UUID
para correspondência pode ser encontrado com o comando
nmcli connection status
ou
nmcli connection list
.
#!/bin/sh
USER='nome_de_usuário'
REMOTE='usuário@host:/caminho/remoto'
LOCAL='/caminho/local'

interface=$1 status=$2
if [ "$CONNECTION_UUID" = "
uuid
" ]; then
  case $status in
    up)
      SSH_AUTH_SOCK=$(find /tmp -maxdepth 1 -type s -user "$USER" -name 'ssh')
      export SSH_AUTH_SOCK
      su "$USER" -c "sshfs $REMOTE $LOCAL"
      ;;
    down)
      fusermount -u "$LOCAL"
      ;;
  esac
fi
Montagem de compartilhamentos SMB
Alguns compartilhamentos
SMB
estão disponíveis apenas em determinadas redes ou locais (por exemplo, em casa). Você pode usar o distribuidor para montar apenas compartilhamentos SMB que estejam presentes em seu local atual.
O script a seguir verificará se nos conectamos a uma rede específica e montamos os compartilhamentos de acordo:
/etc/NetworkManager/dispatcher.d/30-mount-smb.sh
#!/bin/sh

# Localiza o UUID de conexão com "nmcli connection show" no terminal.
# Todos os tipos de conexão do NetworkManager têm suporte: sem fio, VPN, com fio...
if [ "$2" = "up" ]; then
  if [ "$CONNECTION_UUID" = "uuid" ]; then
    mount /seu/ponto/de/montagem &
    # adicione mais compartilhamentos conforme necessário
  fi
fi
O script a seguir desmontará todos os compartilhamentos SMB antes de um software ter iniciado a desconexão de uma rede específica:
/etc/NetworkManager/dispatcher.d/pre-down.d/30-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  umount -a -l -t cifs
fi
Nota
Certifique-se de que este script esteja localizado no subdiretório
pre-down.d
, conforme mostrado acima, caso contrário, ele desmontará todos os compartilhamentos em qualquer alteração de estado de conexão.
O script a seguir tentará desmontar todos os compartilhamentos SMB após uma desconexão inesperada de uma rede específica:
/etc/NetworkManager/dispatcher.d/40-umount-smb.sh
#!/bin/sh

if [ "$CONNECTION_UUID" = "uuid" ]; then
  if [ "$2" = "down" ]; then
    umount -a -l -t cifs
  fi
fi
Nota
Desde o NetworkManager 0.9.8, os eventos
pre-down
e
down
não são executados no desligamento ou reinicialização, veja
este relatório de erro
para mais informações.
Os scripts de
umount
anteriores ainda são propensos a deixar os aplicativos que realmente acessam a montagem para "travar".
Uma alternativa é usar o script como visto em
NFS#Using a NetworkManager dispatcher
:
/etc/NetworkManager/dispatcher.d/30-smb.sh
#!/bin/bash

# Descubra O UUID da conexão com "nmcli con show" no terminal.
# Todos os tipos de conexão do NetworkManager têm suporte: wireless, VPN, wired...
WANTED_CON_UUID="CHANGE-ME-NOW-9c7eff15-010a-4b1c-a786-9b4efa218ba9"

if [[ "$CONNECTION_UUID" == "$WANTED_CON_UUID" ]]; then

    # Parâmetro do script $1: Nome da conexão do NetworkManager, não usado
    # Parâmetro do script $2: eventos despachado

    case "$2" in
        "up")
            mount -a -t cifs
            ;;
        "pre-down");&
        "vpn-pre-down")
            umount -l -a -t cifs >/dev/null
            ;;
    esac
fi
Nota
Este script ignora as montagens com a opção
noauto
, remove esta opção de montagem ou usa
auto
para permitir que o despachante gerencie essas montagens.
Crie um link simbólico dentro de
/etc/NetworkManager/dispatcher.d/pre-down
para pegar os eventos
pre-down
:
# ln -s ../30-smb.sh /etc/NetworkManager/dispatcher.d/pre-down.d/30-smb.sh
Montagem de compartilhamentos NFS
Veja
NFS#Using a NetworkManager dispatcher
.
Usar dispatcher para ativar rede sem fio automaticamente dependendo de cabo LAN estar conectado
A ideia é ligar o Wi-Fi apenas quando o cabo LAN estiver desconectado (por exemplo, ao desconectá-lo de um laptop) e para que o Wi-Fi seja desativado automaticamente, assim que o cabo LAN for conectado novamente.
Crie o seguinte script de dispatcher
[4]
, substituindo
LAN_interface
pelo seu.
/etc/NetworkManager/dispatcher.d/wlan_auto_toggle.sh
#!/bin/sh

if [ "$1" = "LAN_interface" ]; then
    case "$2" in
        up)
            nmcli radio wifi off
            ;;
        down)
            nmcli radio wifi on
            ;;
    esac
fi
Nota
Você obter uma lista de interfaces usando
nmcli
. As interfaces ethernet (LAN) iniciam com
en
, p.ex.,
enp0s5
Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida
Neste exemplo, queremos nos conectar automaticamente a uma conexão VPN definida anteriormente após a conexão a uma rede Wi-Fi específica. A primeira coisa a fazer é criar o script de dispatcher que define o que fazer depois de estarmos conectados à rede.
Nota
Esse script vai precisar de
wireless_tools
para usar
iwgetid
.
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="nome da conexão VPN definido no NetworkManager"
ESSID="ESSID da rede Wi-Fi (não o nome da conexão)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME"
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac
Se você quiser se conectar automaticamente à VPN para todas as redes Wi-Fi, use a seguinte definição do ESSID:
ESSID=$(iwgetid -r)
. Lembre-se de definir as permissões do script
de acordo com isso
.
A tentativa de se conectar com o script acima ainda pode falhar com
NetworkManager-dispatcher.service
reclamando sobre "nenhum segredo de VPN válido", por causa de
como os segredos VPN são armazenados
. Felizmente, existem diferentes opções para fornecer ao script acima acesso à sua senha de VPN.
1: Um deles requer a edição do arquivo de configuração de conexão VPN para fazer com que o NetworkManager armazene os segredos por si só, em vez de dentro de um chaveiro
que será inacessível por root
: abra
/etc/NetworkManager/system-connections/
nome de sua conexão VPN
e altere as
password-flags
e
secret-flags
de
1
para
0
.
Se isso não funcionar sozinho, talvez seja necessário criar um
passwd-file
em um local seguro com as mesmas permissões e propriedade que o script do dispatcher, contendo o seguinte:
/caminho/para/arquivo-passwd
vpn.secrets.password:SUA_SENHA
O script deve ser alterado de acordo, para que obtenha a senha do arquivo:
/etc/NetworkManager/dispatcher.d/vpn-up
#!/bin/sh
VPN_NAME="nome de conexão VPN definida no NetworkManager"
ESSID="ESSID de rede Wi-Fi (nenhum nome de conexão)"

interface=$1 status=$2
case $status in
  up|vpn-down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      nmcli connection up id "$VPN_NAME" passwd-file /path/to/passwd-file
    fi
    ;;
  down)
    if iwgetid | grep -qs ":\"$ESSID\""; then
      if nmcli connection show --active | grep "$VPN_NAME"; then
        nmcli connection down id "$VPN_NAME"
      fi
    fi
    ;;
esac
2: Alternativamente, altere a
password-flags
e coloque a senha diretamente no arquivo de configuração adicionando a seção
vpn-secrets
:
[vpn]
 ....
 password-flags=0

 [vpn-secrets]
 password=
senha_senha
Nota
Agora pode ser necessário reabrir o editor de conexão do NetworkManager e salvar as senhas/segredos da VPN novamente.
Usar dispatcher para desabilitar IPv6 em conexões de provedor de VPN
Muitos
provedores de VPN comercial
possuem suporte apenas a IPv4. Isso significa que todo o tráfego IPv6 ignora a VPN e acaba por se tornar virtualmente desnecessário. Para evitar isso, o dispatcher pode ser usado para desabilitar todo o tráfego IPv5 para o período em que a conexão VPN está ativa.
/etc/NetworkManager/dispatcher.d/10-vpn-ipv6
#!/bin/sh

case "$2" in
    vpn-up)
        echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6
        ;;
    vpn-down)
        echo 0 > /proc/sys/net/ipv6/conf/all/disable_ipv6
        ;;
esac
OpenNTPD
Veja
OpenNTPD#Using NetworkManager dispatcher
.
Testando
Os miniaplicativos do NetworkManager são projetados para serem carregados no início da sessão, portanto, nenhuma configuração adicional deve ser necessária para a maioria dos usuários. Se você já desativou suas configurações de rede anteriores e desconectou-se da sua rede, agora pode testar se o NetworkManager funcionará. O primeiro passo é
iniciar
NetworkManager.service
.
Alguns miniaplicativos fornecerão um arquivo
.desktop
para que o miniaplicativo NetworkManager possa ser carregado através do menu do aplicativo. Se isso não acontecer, você terá que descobrir o comando para usar ou efetuar logout e efetuar login novamente para iniciar o miniaplicativo. Depois que o applet é iniciado, ele provavelmente começará a pesquisar conexões de rede com a autoconfiguração com um servidor DHCP.
Para iniciar o miniaplicativo do GNOME nos gerenciadores de janela não compatíveis com xdg, como
awesome
:
nm-applet --sm-disable &
Para endereços IP estáticos, você terá que configurar o NetworkManager para entendê-los. O processo geralmente envolve clicar com o botão direito do mouse no applet e selecionar algo como 'Editar conexões'.
Dicas e truques
Senhas de Wi-Fi criptografadas
Por padrão, o NetworkManager armazena senhas em texto não criptografado nos arquivos de conexão em
/etc/NetworkManager/system-connections/
. Para imprimir as senhas armazenadas, use o seguinte comando:
# grep -r '^psk=' /etc/NetworkManager/system-connections/
As senhas são acessíveis ao usuário root no sistema de arquivos e aos usuários com acesso às configurações através da GUI (por exemplo,
nm-applet
).
É preferível salvar as senhas em formato criptografado em um chaveiro, em vez de texto não criptografado. A desvantagem de usar um chaveiro é que as conexões precisam ser configuradas para cada usuário.
Usando GNOME Keyring
O daemon do conjunto de chaves deve ser iniciado e o chaveiro precisa ser desbloqueado para que o seguinte funcione.
Além disso, o NetworkManager precisa ser configurado para não armazenar a senha para todos os usuários. Usando o GNOME
nm-applet
, execute
nm-connection-editor
em um terminal, selecione uma conexão de rede, clique em
Editar
, selecione
Segurança Wi-Fi
e clique no ícone à direita da senha e marque
Armazenar a senha somente para este usuário
.
Usando KDE Wallet
Usando o
plasma-nm
do KDE, clique no applet, clique no ícone
Configurações
na parte superior direita, clique em uma conexão de rede, na guia
Configurações gerais
, desmarque
Todos os usuários podem se conectar nesta rede
. Se a opção estiver marcada, as senhas ainda serão armazenadas em texto não criptografado, mesmo que um daemon de chaveiro esteja em execução.
Se a opção foi selecionada anteriormente e você desmarcá-la, você pode ter que usar a opção
reset
primeiro para fazer a senha desaparecer do arquivo. Como alternativa, exclua a conexão primeiro e configure-a novamente.
Compartilhando conexão internet pelo Wi-Fi
Você pode compartilhar sua conexão com a Internet (por exemplo, 3G ou com fio) com apenas alguns cliques. Por favor, note que um
firewall
pode interferir no compartilhamento de internet.
Você precisará de uma placa Wi-Fi que tenha suporte ao modo AP. Veja
Software access point#Wi-Fi device must support AP mode
para detalhes.
Instale
o pacote
dnsmasq
para poder realmente compartilhar a conexão.
Crie a conexão compartilhada:
Clique no miniaplicativo e escolha
Criar nova rede sem fio
.
Siga o assistente (escolha WPA2 ou superior, certifique-se de usar pelo menos 8 caracteres, pois tamanhos menores falharão).
Escolha
Hotspot
ou Ad-hoc como modo Wi-Fi.
A conexão será salva e permanecerá armazenada para a próxima vez que você precisar dela.
Nota
O Android não possui suporte a conexão a redes ad-hoc. Para compartilhar uma conexão com o Android, use o modo infraestrutura (por exemplo, defina o modo Wi-Fi como "Hotspot").
Compartilhando conexão internet por Ethernet
Cenário: o seu dispositivo está conectado à Internet através de wi-fi e pretende compartilhar a conexão à Internet a outros dispositivos através da rede ethernet.
Requisitos:
Instale
o pacote
dnsmasq
para ser capaz de compartilhar a conexão.
Seu dispositivo conectado à internet e outros dispositivos estarem conectados por um cabo ethernet adequado (isso geralmente significa um cabo
cross
ou  um switch entre eles).
Compartilhamento de Internet não estar bloqueado por um
firewall
.
Etapas:
Executar
nm-connection-editor
do terminal.
Adicionar uma nova conexão ethernet.
Dê um nome sensato. Por exemplo, "Internet compartilhada"
Acesse "Configurações IPv4".
Para "Método:" selecione "Compartilhado com outros computadores".
Salve
Agora, você deve ter uma nova opção "Internet compartilhada" sob as conexões cabeadas no NetworkManager.
Verificando se a conectividade está ativa dentro de um script ou trabalho cron
Alguns trabalhos de
cron
exigem conectividade para serem bem-sucedidos. Você pode evitar a execução desses trabalhos quando a rede estiver inoperante. Para isso, adicione um teste
if
para redes que consulte a
nm-tool
do NetworkManager e verifique o estado da rede. O teste mostrado aqui é bem-sucedido se qualquer interface estiver ativa e falhará se todos estiverem inativos. Isso é conveniente para laptops que podem ser conectados, podem estar sem fio ou podem estar fora da rede.
if [ $(nm-tool|grep State|cut -f2 -d' ') == "connected" ]; then
    #Qualquer coisa que você deseje fazer se a rede estiver online
else
    #Qualquer coisa que você deseje fazer se a rede estiver offline - note, isso e qualquer outra coisa acima é opcional
fi
Isso é útil para um script
cron.hourly
que executa o
fpupdate
para a atualização da assinatura do scanner de vírus F-Prot, como exemplo. Outra maneira que pode ser útil, com uma pequena modificação, é diferenciar entre redes usando várias partes da saída do
nm-tool
; por exemplo, como a rede sem fio ativa é denotada com um asterisco, você pode usar o nome da rede e, em seguida, o grep para um asterisco literal.
Conectar a uma rede com segredo na inicialização
Por padrão, o NetworkManager não se conectará a redes que exigem um segredo automaticamente na inicialização. Isso ocorre porque ele bloqueia essas conexões para o usuário que faz isso por padrão, conectando-se somente depois de terem efetuado login. Para alterar isso, faça o seguinte:
Clique com o botão direito do mouse no ícone do
nm-applet
em seu painel e selecione Editar conexões e abra a guia Sem fio
Selecione a conexão com a qual você deseja trabalhar e clique no botão Editar
Marque as caixas "Conectar automaticamente" e "Disponível para todos os usuários"
Adicionalmente, certifique-se que em "Segurança Wi-Fi", "Armazenar senha para todos os usuários (não criptografado)" esteja selecionado
Encerre e inicie novamente a sessão para completar.
OpenConnect com senha no KWallet
Enquanto você pode digitar os dois valores no momento da conexão, o
plasma-nm
0.9.3.2-1 e acima são capazes de obter o nome de usuário e a senha do OpenConnect diretamente do
KWallet
.
Abra o "Gerenciador de carteiras do KDE" e procure a sua conexão OpenConnect VPN em "Gerenciamento de rede | Mapas". Clique em "Mostrar valores" e insira suas credenciais na chave "VpnSecrets" neste formulário (substitua "nome_de_usuário" e "senha"):
form:main:username%SEP%
nome_de_usuário
%SEP%form:main:password%SEP%
senha
Da próxima vez que você se conectar, o nome de usuário e a senha deverão aparecer na caixa de diálogo "Segredos de VPN".
Ignorar dispositivos específicos
Às vezes, pode ser desejado que o NetworkManager ignore dispositivos específicos e não tente configurar endereços e rotas para eles. Você pode rapidamente e facilmente ignorar dispositivos por MAC ou por nome de interface usando o seguinte em
/etc/NetworkManager/conf.d/unmanaged.conf
:
[keyfile]
unmanaged-devices=mac:00:22:68:1c:59:b1;mac:00:1E:65:30:D1:C4;interface-name:eth0
Após editar o arquivo, execute
nmcli general reload
como root. Em seguida, você deve ser capaz de configurar interfaces sem o NetworkManager alterar o que você definiu.
Configurando aleatorização de endereço MAC
Nota
Desabilitar a aleatorização de endereço MAC pode ser necessário para obter uma conexão de link (estável)
[5]
e/ou redes que restrinjam dispositivos com base em seu endereço MAC ou tenham uma rede de limite capacidade.
A aleatorização de MAC pode ser usada para aumentar a privacidade, não revelando seu endereço MAC real à rede.
O NetworkManager oferece suporte a dois tipos de aleatorização de endereços MAC: aleatorização durante a digitalização e para conexões de rede. Ambos os modos podem ser configurados modificando o
/etc/NetworkManager/NetworkManager.conf
ou criando um arquivo de configuração separado no
/etc/NetworkManager/conf.d/
, que é recomendado já que o primeiro arquivo de configuração acima pode ser substituído pelo NetworkManager.
A aleatorização durante a varredura de Wi-Fi é ativada por padrão, mas pode ser desativada adicionando as seguintes linhas ao
/etc/NetworkManager/NetworkManager.conf
ou a um arquivo de configuração dedicado em
/etc/NetworkManager/conf.d
:
/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device]
wifi.scan-rand-mac-address=no
A aleatorização de MAC para conexões de rede pode ser definida para modos diferentes para interfaces sem fio e Ethernet. Veja a
publicação de blog do GNOME
para mais detalhes sobre os diferentes modos.
Em termos de aleatorização de MAC, os modos mais importantes são
stable
e
random
.
stable
gera um endereço MAC aleatório quando você se conecta a uma nova rede e associa os dois permanentemente. Isso significa que você usará o mesmo endereço MAC sempre que se conectar a essa rede. Em contraste,
random
irá gerar um novo endereço MAC toda vez que você se conectar a uma rede, nova ou previamente conhecida. Você pode configurar a aleatorização do MAC adicionando a configuração desejada em
/etc/NetworkManager/conf.d
:
/etc/NetworkManager/conf.d/wifi_rand_mac.conf
[device-mac-randomization]
# "yes" já é o padrão para fazer varredura
wifi.scan-rand-mac-address=yes

[connection-mac-randomization]
# Aleatoriza o MAC para cada conexão ethernet
ethernet.cloned-mac-address=random
# Gera um MAC aleatório para cada WiFi e associa a dois permanentemente.
wifi.cloned-mac-address=stable
Veja a seguinte
publicação de blog do GNOME
para mais detalhes.
Habilitar extensões de privacidade IPv6
Veja
IPv6 (Português)#NetworkManager
.
Trabalhando com conexões cabeadas
Por padrão, o NetworkManager gera um perfil de conexão para cada conexão Ethernet com fio que encontrar. No momento em que gera a conexão, ele não sabe se haverá mais adaptadores Ethernet disponíveis. Por isso, ele chama a primeira conexão com fio "Conexão cabeada 1". Você pode evitar gerar essa conexão, configurando
no-auto-default
(consulte
NetworkManager.conf(5)
) ou simplesmente excluindo-a. Em seguida, o NetworkManager se lembrará de não gerar uma conexão para essa interface novamente.
Você também pode editar a conexão (e persistir no disco) ou excluí-la. O NetworkManager não irá gerar novamente uma nova conexão. Então, você pode mudar o nome para o que você quiser. Você pode usar algo como o
nm-connection-editor
para esta tarefa.
Usando iwd como o backend de Wi-Fi
Instale
networkmanager-iwd
AUR
ou habilite o backend experimental
iwd
criando o seguinte arquivo de configuração:
/etc/NetworkManager/conf.d/wifi_backend.conf
[device]
wifi.backend=iwd
Executando em um espaço de nomes de rede
Se você deseja executar o NetworkManager dentro de um espaço de nomes de rede (por exemplo, para gerenciar um dispositivo específico que deve ser usado por aplicativos selecionados), abaixe o dispositivo antes de movê-lo para o espaço de nomes:
$ ip link set dev
MEU_DISPOSITIVO
down
$ ip link set dev
MEU_DISPOSITIVO
netns
MEU_ESPAÇO_DE_NOMES
$ ip netns exec
MEU_ESPAÇO_DE_NOMES
NetworkManager
...
$ ip netns exec
MEU_ESPAÇO_DE_NOMES
killall NetworkManager
caso contrário, o NetworkManager falhará posteriormente ao estabelecer a conexão com um erro
device is strictly unmanaged
.
Solução de problemas
Nenhum prompt para senha de redes Wi-Fi seguras
Ao tentar se conectar a uma rede Wi-Fi protegida, nenhum prompt de senha é exibido e nenhuma conexão é estabelecida. Isso acontece quando nenhum pacote de chaveiro é instalado. Uma solução fácil é instalar o
gnome-keyring
. Se você quiser que as senhas sejam armazenadas em formato criptografado, siga
GNOME Keyring
para configurar o
gnome-keyring-daemon
.
Gerenciamento de rede desabilitado
Quando o NetworkManager for desligado, mas o arquivo pid (estado) não for removido, você verá uma mensagem
Network management disabled
. Se isso acontecer, remova o arquivo manualmente:
# rm /var/lib/NetworkManager/NetworkManager.state
Problemas com cliente DHCP interno
Se você tiver problemas para obter um endereço IP usando o cliente DHCP interno, considere usar outro cliente DHCP, consulte
#Cliente DHCP
para obter instruções. Essa solução alternativa pode resolver problemas em grandes redes sem fio, como o eduroam.
Problemas DHCP com dhclient
Se você tiver problemas ao obter um endereço IP via DHCP, tente adicionar o seguinte ao seu
/etc/dhclient.conf
:
interface "eth0" {
   send dhcp-client-identifier 01:
aa:bb:cc:dd:ee:ff
;
 }
sendo
aa:bb:cc:dd:ee:ff
o endereço MAC desta NIC. O endereço MAC pode ser localizado usando o comando
ip link show
interface
com o pacote
iproute2
.
Modem 3G não detectado
Veja
USB 3G Modem#NetworkManager
.
Desligando WLAN em laptops
Às vezes o NetworkManager não funciona quando você desabilita o seu adaptador Wi-Fi com um botão em seu laptop e tenta habilitá-lo novamente depois. Isso geralmente é um problema com
rfkill
. Para verificar se o driver notifica
rfkill
sobre o status do adaptador sem fio, use:
$ watch -n1 rfkill list all
Se um identificador permanecer bloqueado depois de ligar o adaptador, você pode tentar desbloqueá-lo manualmente (onde X é o número do identificador fornecido pela saída acima):
# rfkill event unblock X
Reversão de configurações de endereço IP estático para DHCP
Devido a um erro não resolvido, ao alterar as conexões padrão para um endereço IP estático, o
nm-applet
pode não armazenar adequadamente a alteração de configuração e voltará ao DHCP automático.
Para contornar este problema você tem que editar a conexão padrão (por exemplo, "Auto eth0") em
nm-applet
, alterar o nome da conexão (por exemplo "meu eth0"), desmarque a caixa de seleção "Disponível para todos os usuários", altere suas configurações de endereço IP estático conforme desejado e clique em
Aplicar
. Isso salvará uma nova conexão com o nome fornecido.
Em seguida, você desejará fazer com que a conexão padrão não seja conectada automaticamente. Para fazer isso, execute
nm-connection-editor
(
não
como root). No editor de conexão, edite a conexão padrão (por exemplo, "Auto eth0") e desmarque "Conectar automaticamente". Clique em
Aplicar
e feche o editor de conexão.
Não é possível editar conexões como usuário normal
Veja
#Configurar as permissões de PolicyKit
.
Esquecer rede sem fio oculta
Como as redes ocultas não são exibidas na lista de seleção da tela de redes sem fio, elas não podem ser esquecidas (removidas) com a GUI. Você pode excluir um com o seguinte comando:
# rm /etc/NetworkManager/system-connections/
SSID
Isso funciona para qualquer outra conexão.
VPN não funciona no GNOME
Ao configurar conexões OpenConnect ou vpnc no NetworkManager enquanto estiver usando o GNOME, você algumas vezes nunca verá a caixa de diálogo aparecer e o seguinte erro aparecerá em
/var/log/errors.log
:
localhost NetworkManager[399]: <error> [1361719690.10506] [nm-vpn-connection.c:1405] get_secrets_cb(): Failed to request VPN secrets #3: (6) No agents were available for this request.
Isso é causado pelo fato do miniaplicativo de NM do GNOME esperar que os scripts de diálogo estejam em
/usr/lib/gnome-shell
, quando os pacotes do NetworkManager os colocam em
/usr/lib/networkmanager
.
Como uma correção "temporária" (este bug já existe há algum tempo), faça os seguintes links simbólicos:
Para OpenConnect:
ln -s /usr/lib/networkmanager/nm-openconnect-auth-dialog /usr/lib/gnome-shell/
Para VPNC (isto é, Cisco VPN):
ln -s /usr/lib/networkmanager/nm-vpnc-auth-dialog /usr/lib/gnome-shell/
Isso pode precisar ser feito para qualquer outro plug-in de VPN do NM, mas esses são os dois mais comuns.
Impossibilidade de se conectar a redes sem fio europeias visíveis
Os chips WLAN são fornecidos com um padrão
domínio regulatório
. Se o seu ponto de acesso não operar dentro dessas limitações, você não conseguirá se conectar à rede. Consertar isso é fácil:
Instale
wireless-regdb
Descomente o código de país correto em
/etc/conf.d/wireless-regdom
Reinicie o sistema, pois a configuração está como somente leitura na inicialização
Conexão automática a VPN na inicialização não funciona
O problema ocorre quando o sistema (ou seja, o NetworkManager em execução como usuário root) tenta estabelecer uma conexão VPN, mas a senha não está acessível porque está armazenada no GNOME Keyring de um usuário específico.
Uma solução é manter a senha em sua VPN em texto simples, conforme descrito na etapa (2.) de
#Usar dispatcher para conectar a uma VPN após uma conexão de rede ser estabelecida
.
Você não precisa mais usar o dispatcher descrito na etapa (1.) para se conectar automaticamente, se você usar a nova opção "autoconectar VPN" na interface gráfica do
nm-applet
.
Gargalo no systemd
Com o tempo, os arquivos de log (
/var/log/journal
) podem se tornar muito grandes. Isso pode ter um grande impacto no desempenho da inicialização ao usar o NetworkManager, consulte:
Systemd (Português)#Tempo de inicialização aumentando com o tempo
.
Desconexões de rede regulares, latência, pacotes perdidos (WiFi)
O NetworkManager faz uma varredura a cada 2 minutos.
Alguns drivers de WiFi apresentam problemas ao procurar estações base enquanto conectados/associados. Os sintomas incluem desconexões/reconexões de VPN e perda de pacotes, páginas da Web que não podem ser carregadas e, em seguida, atualizadas corretamente.
A execução
journalctl -f
indicará que isso está ocorrendo, mensagens como as seguintes estarão contidas nos logs em intervalos regulares.
NetworkManager[410]: <info>  (wlp3s0): roamed from BSSID 00:14:48:11:20:CF (my-wifi-name) to (none) ((none))
Se o roaming não for importante, o comportamento de varredura periódica poderá ser desabilitado bloqueando o BSSID do ponto de acesso no perfil de conexão WiFi.
Impossibilidade de ligar o Wi-Fi com laptop Lenovo (IdeaPad, Legion, etc.)
Há um problema com o módulo
ideapad_laptop
em alguns modelos da Lenovo, devido ao driver wi-fi relatar incorretamente um bloco virtual. A placa ainda pode ser manipulada com
netctl
, mas os gerenciadores como o NetworkManager quebram. Você pode verificar se este é o problema, verificando a saída de
rfkill list
depois de alternar sua chave de hardware e ver que o bloco de software persiste.
Descarregar
o módulo
ideapad_laptop
deve corrigir isso. (
atenção
: isso também pode desabilitar o teclado e o touchpad do laptop!).
Desligar envido de hostname
O NetworkManager, por padrão, envia o nome do host para o servidor DHCP. O envio de nome de host só pode ser desativado por conexão não globalmente (
Bug 768076 do GNOME
).
Para desabilitar o envio do seu nome de host para o servidor DHCP para uma conexão específica, adicione o seguinte ao seu arquivo de conexão de rede:
/etc/NetworkManager/system-connections/
seu_arquivo_de_conexão
...
[ipv4]
dhcp-send-hostname=false
...
[ipv6]
dhcp-send-hostname=false
...
nm-applet desaparece no i3wm
Se você usar o
xfce4-notifyd.service
para notificações, deverá
editar
a unidade e adicionar o seguinte:
/etc/systemd/user/xfce4-notifyd.service.d/display_env.conf
[Service]
Environment="DISPLAY=:0.0"
Depois de recarregar os daemons,
reinicie
o
xfce4-notifyd.service
. Saia do i3 e reinicie-o novamente, e o miniaplicativo deverá aparecer na área de notificação.
Ícones de bandeja do nm-applet exibidos incorretamente
Atualmente, os ícones da área de notificação do nm-applet são desenhados uns em cima dos outros, ou seja, o ícone exibindo a força sem fio pode ser exibido na parte superior do ícone, indicando que não há conexão com fio.
Isso aparentemente é um problema/bug do GTK3:
https://gitlab.gnome.org/GNOME/gtk/issues/1280
.
Uma versão corrigida do GTK3 existe no AUR, que aparentemente corrige o erro do ícone da área de notificação:
gtk3-classic
AUR
.
Unit dbus-org.freedesktop.resolve1.service não encontrado
Se
systemd-resolved.service
não tiver sido iniciado, NetworkManager vai tentar iniciá-lo usando D-Bus e vai falhar:
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
dbus-daemon[991]: [system] Activation via systemd failed for unit 'dbus-org.freedesktop.resolve1.service': Unit dbus-org.freedesktop.resolve1.service not found.
dbus-daemon[991]: [system] Activating via systemd: service name='org.freedesktop.resolve1' unit='dbus-org.freedesktop.resolve1.service' requested by ':1.23' (uid=0 pid=1012 comm="/usr/bin/NetworkManager --no-daemon ")
Isso é porque o NetworkManager vai tentar enviar informações DNS para
systemd-resolved
independentemente da configuração
main.dns=
no
NetworkManager.conf(5)
.
[6]
Isso pode ser desabilitado com um arquivo de configuração em
/etc/NetworkManager/conf.d/
:
/etc/NetworkManager/conf.d/no-systemd-resolved.conf
[main]
systemd-resolved=false
Veja
FS#62138
.
Segredos eram necessários, mas não fornecidos
Se você tenta se conectar a uma rede usando o dispositivo
nmcli device wifi connect
SSID
password
senha
e recebe o seguinte erro:
Erro: Ativação da conexão falhou: (7) Segredos foram requisitados, mas não fornecidos
O erro pode ser resolvido excluindo o perfil de conexão e criando um novo:
$ nmcli connection delete
SSID
$ nmcli device wifi connect
SSID
password
senha
Conexão WPA Empresarial com o NetworkManager
Se você tentar se conectar a uma rede WPA Empresarial como 'eduroam' com o NetworkManager com o backend
iwd
, o NetworkManager receberá o seguinte erro:
Connection 'eduroam' is not avialable on device wlan0 because profile is not compatible with device (802.1x connections must have IWD provisioning files)
Isso ocorre porque o NetworkManager não consegue configurar uma rede WPA Enterprise. Portanto, você deve configurá-lo usando um arquivo de configuração do iwd
/var/lib/iwd/
essid
.8021x
como descrito em
iwd (Português)#WPA Empresarial
.
Veja também
NetworkManager para Administradores Parte 1
Wikipedia:pt:NetworkManager