Gerenciando conexões de rede no Linux com a ferramenta de linha de comando nmcli

Aproveite todas as funcionalidades da ferramenta de gerenciamento de conexões de rede NetworkManager na linha de comando do Linux com a utilidade nmcli.

Gerenciando conexões de rede no Linux com a ferramenta de linha de comando nmcli

Utilitário nmcli acessa diretamente a API para obter funções do NetworkManager.

Ela surgiu em 2010 e se tornou uma alternativa para muitos na configuração de interfaces e conexões de rede. Embora alguns ainda utilizem ifconfig. Como nmcli é uma ferramenta de interface de linha de comando (CLI), projetada para uso em janelas de terminal e scripts, ela é ideal para administradores de sistemas que trabalham sem GUI.

A sintaxe dos comandos nmcli

De forma geral, a sintaxe é assim:

$ nmcli  

  • options — são parâmetros que definem detalhes da operação do nmcli,
  • section (seção) — determina quais funcionalidades da utilidade utilizar,
  • action (ação) — permite especificar o que, de fato, precisa ser realizado.

Existem 8 seções, cada uma relacionada a um conjunto de comandos (ações):

  • Ajuda fornece informações sobre os comandos nmcli e seu uso.
  • Geral retorna o status do NetworkManager e a configuração global.
  • Rede inclui comandos para solicitar o estado da conexão de rede e ativar/desativar conexões.
  • Rádio inclui comandos para verificar o estado da conexão WiFi e ativar/desativar conexões.
  • Monitor inclui comandos para monitorar a atividade do NetworkManager e observar as mudanças no estado das conexões de rede.
  • Conexão inclui comandos para gerenciar interfaces de rede, adicionar novas conexões e remover as existentes.
  • Device é usado principalmente para modificar parâmetros relacionados a dispositivos (como o nome da interface) ou para conectar dispositivos usando uma conexão existente.
  • Segredo registra o nmcli como um 'agente secreto' do NetworkManager, que escuta mensagens secretas. Esta seção é pouco utilizada, pois o nmcli opera assim por padrão ao conectar-se a redes.

Exemplos simples

Antes de começar, certifique-se de que o NetworkManager está em execução e o nmcli pode se comunicar com ele:

$ nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN    
connected  full          enabled  enabled  enabled  enabled

Frequentemente, o trabalho começa com a visualização de todos os perfis de conexões de rede:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Conexão cabeada 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Conexão cabeada 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Conexão cabeada 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Este comando utiliza a ação show para a seção Connection.

Na máquina de teste está rodando o Ubuntu 20.04. Nesse caso, encontramos três conexões cabeadas: enp0s3, enp0s8 e enp0s9.

Gerenciamento de conexões

É importante entender que no nmcli o termo Connection refere-se à entidade que contém todas as informações sobre a conexão. Em outras palavras, é a configuração da rede. A Connection encapsula todas as informações relacionadas às conexões, incluindo informações de nível de enlace e endereçamento IP. Isso corresponde aos níveis 2 e 3 do modelo OSI.

Quando você configura uma rede no Linux, normalmente configura conexões que, por sua vez, estarão ligadas aos dispositivos de rede, que são as interfaces de rede instaladas no computador. Quando um dispositivo utiliza uma conexão, ela é considerada ativa ou levantada. Se a conexão não estiver em uso, ela está inativa ou rebaixada.

Adicionando conexões de rede

A ferramenta ncmli permite adicionar e configurar conexões rapidamente. Por exemplo, para adicionar a Conexão Cabeada 2 (com enp0s8), é necessário executar o seguinte comando como superusuário:

$ sudo nmcli connection add type ethernet ifname enp0s8
Conexão 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) adicionada com sucesso.

Na opção type, informamos que se trata de uma conexão Ethernet, e na opção ifname (nome da interface), especificamos a interface de rede que desejamos usar.

Veja o que acontecerá após executar o comando:

$ nmcli connection show
NAME                UUID                                  TYPE      DEVICE
Conexão cabeada 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
Conexão cabeada 2  2279d917-fa02-390c-8603-3083ec5a1d3e  ethernet  enp0s8
Conexão cabeada 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  --  

Uma nova conexão, ethernet-enp0s8, foi criada. Foi atribuído um UUID e o tipo de conexão é Ethernet. Vamos ativá-la usando o comando up:

$ nmcli connection up ethernet-enp0s8
Conexão ativada com sucesso (Caminho ativo do D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)

Vamos verificar novamente a lista de conexões ativas:

$ nmcli connection show --active
NAME                UUID                                  TYPE      DEVICE
Conexão cabeada 1  ac3241e4-b424-35d6-aaa7-07498561688d  ethernet  enp0s3
ethernet-enp0s8     09d26960-25a0-440f-8b20-c684d7adc2f5  ethernet  enp0s8
Conexão cabeada 3  52d89737-de92-35ec-b082-8cf2e5ac36e6  ethernet  enp0s9

Uma nova conexão ethernet-enp0s8 foi adicionada, está ativa e utiliza a interface de rede enp0s8.

Configuração de Conexões

A ferramenta ncmli permite alterar facilmente os parâmetros de conexões já existentes. Por exemplo, você precisa mudar de um IP dinâmico (DHCP) para um IP estático.

Suponha que precisamos definir o endereço IP como 192.168.4.26. Para isso, usamos dois comandos. O primeiro define diretamente o endereço IP, enquanto o segundo altera o método de configuração do IP para 'manual':

$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual

Não se esqueça de definir também a máscara de sub-rede. Para a nossa conexão de teste, isso é 255.255.255.0, ou /24 para roteamento sem classe (CIDR).

Para que as alterações tenham efeito, você precisa desativar e, em seguida, reativar a conexão:

$ nmcli connection down ethernet-enp0s8
Conexão 'ethernet-enp0s8' desativada com sucesso (Caminho ativo do D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Conexão ativada com sucesso (Caminho ativo do D-Bus: /org/freedesktop/NetworkManager/ActiveC

Se você, ao contrário, precisar configurar o DHCP, em vez de manual use auto:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Trabalhando com Dispositivos

Para isso, usamos a seção Dispositivo.

Verificando o Status dos Dispositivos

$ nmcli device status
DISPOSITIVO  TIPO      ESTADO      CONEXÃO        
enp0s3  ethernet  conectado  Conexão com Fio 1
enp0s8  ethernet  conectado  ethernet-enp0s8    
enp0s9  ethernet  conectado  Conexão com Fio 3
lo      loopback  não gerenciado  --  

Solicitando Informações sobre o Dispositivo

Para isso, usamos a ação show da seção Dispositivo (é imprescindível indicar o nome do dispositivo). A ferramenta mostra muitas informações, frequentemente em várias páginas.
Vamos dar uma olhada na interface enp0s8, que utiliza nossa nova conexão. Vamos garantir que ela está usando exatamente o IP que configuramos anteriormente:

$ nmcli device show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:81:16:20
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (conectado)
GENERAL.CONNECTION:                     ethernet-enp0s8
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/6
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         192.168.4.26/24
IP4.GATEWAY:                            --
IP4.ROUTE[1]:                           dst = 192.168.4.0/24, nh = 0.0.0.0, mt = 103
IP6.ADDRESS[1]:                         fe80::6d70:90de:cb83:4491/64
IP6.GATEWAY:                            --
IP6.ROUTE[1]:                           dst = fe80::/64, nh = ::, mt = 103
IP6.ROUTE[2]:                           dst = ff00::/8, nh = ::, mt = 256, table=255

Há muitas informações. Vamos destacar o principal:

  • Nome da interface de rede: enp0s8.
  • Tipo de conexão: conexão Ethernet com fio.
  • Estamos vendo o endereço MAC do dispositivo.
  • O Maximum Transmission Unit (MTU) foi especificado — o tamanho máximo da carga útil de um único pacote que pode ser transmitido pelo protocolo sem fragmentação.
  • O dispositivo no momento conectado.
  • Nome da conexão, que está utilizando o dispositivo: ethernet-enp0s8.
  • O dispositivo usa aquele Endereço IP, que configuramos anteriormente: 192.168.4.26/24.

Outras informações referem-se aos parâmetros padrão de roteamento e gateway da conexão. Eles dependem da rede específica.

Editor interativo nmcli

O nmcli também possui um editor interativo simples, onde pode ser mais confortável para alguém trabalhar. Para iniciá-lo, por exemplo, para a conexão ethernet-enp0s8, use a ação edit:

$ nmcli connection edit ethernet-enp0s8

Ele também tem uma pequena ajuda, que é inferior em tamanho à versão do console:

===| editor de conexão interativo nmcli |===
Editando a conexão existente '802-3-ethernet': 'ethernet-enp0s8'
Digite 'help' ou '?' para comandos disponíveis.
Digite 'print' para mostrar todas as propriedades da conexão.
Digite 'describe [<configuração>.<propriedade>]' para descrição detalhada da propriedade.
Você pode editar as seguintes configurações: conexão, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, correspondência, ipv4, ipv6, tc, proxy
nmcli>

Se você digitar o comando print e pressionar Enter, o nmcli exibirá todas as propriedades da conexão:

===============================================================================
                 Detalhes do perfil de conexão (ethernet-enp0s8)
===============================================================================
connection.id:                          ethernet-enp0s8
connection.uuid:                        09d26960-25a0-440f-8b20-c684d7adc2f5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              enp0s8
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (padrão)
connection.multi-connect:               0 (padrão)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (padrão)
connection.secondaries:                 --

Por exemplo, para definir a propriedade DHCP para a conexão, digite goto ipv4 e pressione Enter:

nmcli> goto ipv4
Você pode editar as seguintes propriedades: método, dns, dns-search, 
dns-options, dns-priority, endereços, gateway, rotas, route-metric, 
table de roteamento, regras de roteamento, ignore-auto-routes, ignore-auto-dns, 
dhcp-client-id, dhcp-iaid, dhcp-timeout, dhcp-send-hostname, 
dhcp-hostname, dhcp-fqdn, dhcp-hostname-flags, never-default, may-fail, 
dad-timeout
nmcli ipv4>

Em seguida, digite set method auto e pressione Enter:

nmcli ipv4> set method auto
Você também deseja limpar 'ipv4.addresses'? [sim]:

Se você quiser limpar o endereço IP estático, pressione EnterCaso contrário, digite no e pressione Enter. Você pode salvá-lo se achar que precisará dele no futuro. Mas mesmo com um IP estático salvo, o DHCP será utilizado se o método estiver definido como auto.

Use o comando save para salvar as alterações:

nmcli ipv4> save
Conexão 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) atualizada com sucesso.
nmcli ipv4>

Digite quit para sair do editor interativo nmcli. Se mudar de ideia, utilize o comando back.

E isso não é tudo

Abra o editor interativo nmcli e veja quantas configurações existem e quais propriedades cada configuração possui. O editor interativo é uma ótima ferramenta, mas se você quiser usar nmcli em uma linha de comando ou em scripts, precisará da versão normal para linha de comando.

Agora que você tem o básico, confira a página de manual do nmcli para descobrir como mais ela pode ajudá-lo.

Em nome da publicidade

Servidores épicos seja servidores virtuais no Windows ou Linux com poderosos processadores da família AMD EPYC e discos NVMe Intel extremamente rápidos. Apresse-se para fazer o pedido!

Gerenciando conexões de rede no Linux com a ferramenta de linha de comando nmcli

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster