Gerenciando conexões de rede no Linux usando o utilitário nmcli console

Aproveite todas as vantagens da ferramenta de gerenciamento de rede NetworkManager na linha de comando do Linux com o utilitário nmcli.







O utilitário nmcli chama diretamente a API para acessar as funções do NetworkManager.



Surgiu em 2010 e para muitos tornou-se uma forma alternativa de configurar interfaces e conexões de rede. Embora alguém ainda esteja usando ifconfig . Como nmcli é uma ferramenta de interface de linha de comando (CLI) projetada para uso em janelas de terminal e scripts, é ideal para administradores de sistemas não GUI.



Sintaxe de comando Ncmli



Em geral, a sintaxe é semelhante a esta:



$ nmcli <options> <section> <action>


  • opções são parâmetros que definem as sutilezas do nmcli,
  • seção - define quais recursos do utilitário usar,
  • ação - permite que você especifique o que realmente precisa ser feito.


Existem 8 seções no total, cada uma das quais associada a um conjunto de comandos (ações):



  • A Ajuda fornece informações sobre os comandos ncmcli e seu uso.
  • Geral retorna o status do NetworkManager e a configuração global.
  • A rede inclui comandos para consultar o status de uma conexão de rede e ativar / desativar conexões.
  • O rádio inclui comandos para consultar o status da conexão WiFi e ativar / desativar conexões.
  • Monitorar inclui comandos para monitorar a atividade do NetworkManager e monitorar mudanças no estado das conexões de rede.
  • A conexão inclui comandos para gerenciar interfaces de rede, para adicionar novas conexões e remover as existentes.
  • O dispositivo é usado principalmente para alterar os parâmetros relacionados ao dispositivo (como o nome da interface) ou para conectar dispositivos usando uma conexão existente.
  • Secret registra nmcli como o "agente secreto" NetworkManager, que escuta as mensagens secretas. Esta seção raramente é usada porque nmcli funciona dessa maneira quando conectado a redes por padrão.


Exemplos simples



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



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


Freqüentemente, o trabalho começa examinando todos os perfis de conexão de rede:



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


Este comando usa a ação show para a seção de conexão.



A máquina de teste está executando o Ubuntu 20.04. Nesse caso, encontramos três conexões com fio: enp0s3, enp0s8 e enp0s9.



Gerenciamento de conexão



É importante entender que em nmcli, pelo termo Conexão, queremos dizer uma entidade que contém todas as informações sobre a conexão. Em outras palavras, é a configuração da rede. A conexão encapsula todas as informações relacionadas à conexão, incluindo a camada de link e as informações de endereçamento IP. Eles são a Camada 2 e a Camada 3 no modelo de rede OSI.



Quando você configura a rede no Linux, geralmente configura conexões que, em última instância, serão vinculadas aos dispositivos de rede, que por sua vez são as interfaces de rede instaladas no computador. Quando um dispositivo usa uma conexão, ele é considerado ativo ou ativo. Se a conexão não estiver em uso, ela está inativa ou foi interrompida.



Adicionando conexões de rede



O utilitário ncmli permite adicionar rapidamente e configurar conexões imediatamente. Por exemplo, para adicionar a conexão com fio 2 (com enp0s8), você precisa executar o seguinte comando como superusuário:



$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.


Na opção type indicamos que será uma conexão Ethernet, e na opção ifname (nome da interface) indicamos a interface de rede que desejamos utilizar.



Veja o que acontece depois de executar o comando:



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


Uma nova conexão foi criada, ethernet-enp0s8. Foi atribuído um UUID, o tipo de conexão era Ethernet. Vamos começar com o comando up:



$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)


Verifique a lista de conexões ativas novamente:



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


Adicionada uma nova conexão ethernet-enp0s8, ela está ativa e usa a interface de rede enp0s8.



Configurando conexões



O utilitário ncmli facilita a alteração dos parâmetros das conexões existentes. Por exemplo, você precisa alterar o endereço IP dinâmico (DHCP) para estático.



Digamos que precisamos definir o endereço IP para 192.168.4.26. Para isso, usamos dois comandos. O primeiro definirá diretamente o endereço IP e o segundo mudará o método de configuração do endereço 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 a máscara de sub-rede também. Para nossa conexão de teste, é 255.255.255.0 ou s / 24 para roteamento sem classe (CIDR).



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



$ nmcli connection down ethernet-enp0s8
Connection 'ethernet-enp0s8' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveC


Se você precisar instalar o DHCP, use automático em vez de manual:



$ nmcli connection modify ethernet-enp0s8 ipv4.method auto


Trabalhando com dispositivos



Para isso, usamos a seção Device.



Verificando o status do dispositivo



$ nmcli device status
DEVICE  TYPE      STATE      CONNECTION        
enp0s3  ethernet  connected  Wired connection 1
enp0s8  ethernet  connected  ethernet-enp0s8    
enp0s9  ethernet  connected  Wired connection 3
lo      loopback  unmanaged  --  


Solicitando informações do dispositivo



Para fazer isso, use a ação show da seção Device (você deve especificar o nome do dispositivo). O utilitário exibe muitas informações, geralmente em várias páginas.

Vamos dar uma olhada na interface enp0s8 que nossa nova conexão usa. Vamos ter certeza de que ele usa exatamente o mesmo endereço IP que definimos 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 (connected)
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


Existe muita informação. Vamos destacar o principal:



  • Nome da interface de rede: enp0s8.
  • Tipo de conexão: conexão Ethernet com fio.
  • Vemos o endereço MAC do dispositivo.
  • Unidade máxima de transmissão especificada (MTU) - o tamanho máximo da unidade de dados útil de um pacote que pode ser transmitido pelo protocolo sem fragmentação.
  • O dispositivo está conectado no momento .
  • O nome da conexão que o dispositivo está usando é ethernet-enp0s8.
  • O dispositivo usa o mesmo endereço IP que definimos anteriormente: 192.168.4.26/24.


Outras informações estão relacionadas ao roteamento padrão e às configurações de gateway para a conexão. Eles são específicos da rede.



Editor nmcli interativo



Nmcli também possui um editor interativo simples no qual alguém pode se sentir mais confortável trabalhando. Para executá-lo, por exemplo, para uma conexão ethernet-enp0s8, use a ação de edição:



$ nmcli connection edit ethernet-enp0s8


Ele também tem uma ajudinha, que, no entanto, é menor em tamanho do que a versão do console:



===| nmcli interactive connection editor |===
Editing existing '802-3-ethernet' connection: 'ethernet-enp0s8'
Type 'help' or '?' for available commands.
Type 'print' to show all the connection properties.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>


Se você inserir o comando de impressão e pressionar Enter, nmcli exibirá todas as propriedades da conexão:



===============================================================================
                 Connection profile details (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 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1593967212
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      --
connection.slave-type:                  --
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --


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



nmcli> goto ipv4
You may edit the following properties: method, dns, dns-search, 
dns-options, dns-priority, addresses, gateway, routes, route-metric, 
route-table, routing-rules, 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, escreva definir método automático e pressione Enter :



nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:


Se você deseja limpar o endereço IP estático, pressione Enter . Caso contrário, digite não e pressione Enter. Você pode ficar com ele se achar que precisará dele no futuro. Mas mesmo com um endereço IP estático armazenado, o DHCP será usado se o método for definido como automático.



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



nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>


Digite quit para sair do nmcli Interactive Editor. Se você mudar de ideia sobre sair, use o comando voltar.



E isso não é tudo



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



Agora que você tem o básico, verifique a página de manual do nmcli para ver de que outra forma ela pode ajudá-lo.






Publicidade



Servidores Epic são servidores virtuais Windows ou Linux com poderosos processadores AMD EPYC e drives Intel NVMe muito rápidos. Corra para fazer o pedido!






All Articles