Xestionar conexións de rede en Linux mediante a utilidade da consola nmcli

Aproveita ao máximo a ferramenta de xestión de rede NetworkManager na liña de comandos de Linux mediante a utilidade nmcli.

Xestionar conexións de rede en Linux mediante a utilidade da consola nmcli

Utilidade nmcli chama directamente á API para acceder ás funcións de NetworkManager.

Apareceu en 2010 e para moitos converteuse nunha forma alternativa de configurar interfaces e conexións de rede. Aínda que algunhas persoas aínda usan ifconfig. Debido a que nmcli é unha ferramenta de interface de liña de comandos (CLI) deseñada para usar en fiestras de terminais e scripts, é ideal para administradores de sistemas que traballan sen GUI.

Sintaxe do comando ncmli

En xeral, a sintaxe ten o seguinte aspecto:

$ nmcli <options> <section> <action>

  • as opcións son parámetros que determinan as sutilezas da operación nmcli,
  • sección (sección): determina que funcións da utilidade usar,
  • acción: permite especificar o que realmente hai que facer.

Hai 8 seccións en total, cada unha das cales está asociada a un determinado conxunto de comandos (accións):

  • axudar ofrece axuda sobre os comandos ncmcli e o seu uso.
  • xeral devolve o estado do NetworkManager e a configuración global.
  • Networking inclúe comandos para consultar o estado da conexión de rede e activar/desactivar conexións.
  • radio inclúe comandos para consultar o estado da conexión de rede WiFi e activar/desactivar conexións.
  • Monitor inclúe comandos para supervisar a actividade de NetworkManager e observar os cambios no estado das conexións de rede.
  • Conexión inclúe comandos para xestionar interfaces de rede, engadir novas conexións e eliminar as existentes.
  • Dispositivo úsase principalmente para cambiar os parámetros relacionados co dispositivo (como o nome da interface) ou para conectar dispositivos mediante unha conexión existente.
  • Segredo rexistra nmcli como un "axente secreto" de NetworkManager que escoita mensaxes secretas. Esta sección úsase raramente, porque nmcli funciona deste xeito por defecto cando se conecta a redes.

Exemplos sinxelos

Antes de comezar, asegúrese de que NetworkManager estea en execución e que nmcli poida comunicarse con el:

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

O traballo adoita comezar vendo todos os perfís de conexión 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 acción mostrar para a sección de conexión.

A máquina de proba está executando Ubuntu 20.04. Neste caso, atopamos tres conexións por cable: enp0s3, enp0s8 e enp0s9.

Xestionar conexións

É importante entender que en nmcli, co termo Conexión entendemos unha entidade que contén toda a información sobre a conexión. Noutras palabras, esta é a configuración da rede. A conexión encapsula toda a información relacionada coa conexión, incluída a capa de ligazón e a información de enderezo IP. Estes son a capa 2 e a capa 3 no modelo de rede OSI.

Cando configuras unha rede en Linux, normalmente estás configurando conexións que acabarán vinculadas a dispositivos de rede, que á súa vez son interfaces de rede instaladas no ordenador. Cando un dispositivo está a usar unha conexión, considérase activa ou elevada. Se unha conexión non está en uso, está inactiva ou restableceda.

Engadindo conexións de rede

A utilidade ncmli permítelle engadir e configurar conexións rapidamente. Por exemplo, para engadir a conexión por cable 2 (con enp0s8), cómpre executar o seguinte comando como superusuario:

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

Na opción tipo indicamos que será unha conexión Ethernet, e na opción ifname (nome da interface) indicamos a interface de rede que queremos utilizar.

Isto é o que ocorrerá despois 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  --  

Creouse unha nova conexión, ethernet-enp0s8. Asignóuselle un UUID e o tipo de conexión era Ethernet. Levámolo usando o comando up:

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

Vexamos de novo a lista de conexións activas:

$ 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

Engadiuse unha nova conexión ethernet-enp0s8, está activa e usa a interface de rede enp0s8.

Configurando conexións

A utilidade ncmli permítelle cambiar facilmente os parámetros das conexións existentes. Por exemplo, cómpre cambiar o seu enderezo IP dinámico (DHCP) por un enderezo IP estático.

Digamos que necesitamos establecer o enderezo IP en 192.168.4.26. Para iso usamos dous comandos. O primeiro establecerá directamente o enderezo IP e o segundo cambiará o método de configuración do enderezo IP a manual:

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

Non esquezas tamén configurar a máscara de subrede. Para a nosa conexión de proba, esta é 255.255.255.0 ou con /24 para enrutamento sen clase (CIDR).

Para que os cambios teñan efecto, cómpre desactivar e despois reactivar a conexión:

$ 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, pola contra, precisa instalar DHCP, use auto en lugar de manual:

$ nmcli connection modify ethernet-enp0s8 ipv4.method auto

Traballar con dispositivos

Para iso utilizamos a sección Dispositivo.

Comprobando o estado 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 información do dispositivo

Para iso, use a acción mostrar da sección Dispositivo (debe especificar o nome do dispositivo). A utilidade mostra moita información, moitas veces en varias páxinas.
Vexamos a interface enp0s8 que usa a nosa nova conexión. Asegurémonos de que utiliza exactamente o enderezo IP que establecemos 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

Hai bastante información. Destaquemos o principal:

  • Nome da interface de rede: enp0s8.
  • Tipo de conexión: conexión Ethernet por cable.
  • Vemos o enderezo MAC do dispositivo.
  • Unidade de transmisión máxima (MTU) especificada — O tamaño máximo dun bloque de datos útil dun paquete que pode ser transmitido polo protocolo sen fragmentación.
  • Dispositivo conectado actualmente.
  • Nome da conexiónque dispositivo está a usar: ethernet-enp0s8.
  • O dispositivo usa o Enderezo IP, que instalamos anteriormente: 192.168.4.26/24.

Outra información refírese aos parámetros predeterminados de enrutamento e pasarela de conexión. Dependen da rede específica.

Editor interactivo de nmcli

nmcli tamén ten un editor interactivo sinxelo, que pode ser máis cómodo para algúns para traballar. Para executalo nunha conexión ethernet-enp0s8, por exemplo, use acción edit:

$ nmcli connection edit ethernet-enp0s8

Tamén ten unha pequena axuda, que, con todo, é de menor tamaño que a versión para consola:

===| 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 escribe o comando de impresión e preme Intro, nmcli mostrará todas as propiedades de conexión:

===============================================================================
                 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 configurar a conexión a DHCP, escriba goto ipv4 e prema Entrar:

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>

A continuación, escriba establecer o método automático e prema Entrar:

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

Se queres borrar o enderezo IP estático, fai clic Entrar. En caso contrario, escriba non e prema Intro. Podes gardalo se pensas que o necesitarás no futuro. Pero mesmo cun enderezo IP estático gardado, usarase DHCP se o método está configurado como automático.

Use o comando gardar para gardar os cambios:

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

Escriba saír para saír do editor interactivo nmcli. Se cambias de opinión acerca de marchar, usa o comando atrás.

E iso non é todo

Abre o editor interactivo nmcli e mira cantas opcións hai e cantas propiedades ten cada opción. O editor interactivo é unha excelente ferramenta, pero se queres usar nmcli en liñas ou scripts, necesitarás a versión normal de liña de comandos.

Agora que tes o básico, consulta páxina de man nmcli para ver como pode axudarche.

Sobre os dereitos da publicidade

Servidores épicos - É servidores virtuais en Windows ou Linux con potentes procesadores da familia AMD EPYC e unidades Intel NVMe moi rápidas. ¡Apresúrate a ordenar!

Xestionar conexións de rede en Linux mediante a utilidade da consola nmcli

Fonte: www.habr.com

Engadir un comentario