Aproveche todas las capacidades de la herramienta de gestión de conexiones de red NetworkManager en la línea de comandos de Linux utilizando la utilidad nmcli.

Utilidad accede directamente a la API para acceder a las funciones de NetworkManager.
Apareció en 2010 y se convirtió en una forma alternativa para muchos de configurar interfaces y conexiones de red. Aunque algunos todavía utilizan . Dado que nmcli es una herramienta de interfaz de línea de comandos (CLI) diseñada para usarse en ventanas de terminal y scripts, es ideal para administradores de sistemas que trabajan sin GUI.
La sintaxis de los comandos ncmli
En términos generales, la sintaxis es la siguiente:
$ nmcli - options son los parámetros que determinan los detalles de funcionamiento de nmcli,
- section (sección) define qué capacidades de la utilidad se utilizarán,
- action (acción) permite indicar qué es lo que realmente se necesita hacer.
Existen un total de 8 secciones, cada una relacionada con un conjunto de comandos (acciones):
- Ayuda proporciona ayuda sobre los comandos ncmcli y su uso.
- General devuelve el estado de NetworkManager y la configuración global.
- Redes incluye comandos para consultar el estado de la conexión de red y activar / desactivar conexiones.
- Radio incluye comandos para consultar el estado de la conexión a la red WiFi y activar / desactivar conexiones.
- Monitor incluye comandos para monitorear la actividad de NetworkManager y observar cambios en el estado de las conexiones de red.
- Connection incluye comandos para gestionar interfaces de red, para agregar nuevas conexiones y eliminar conexiones existentes.
- Dispositivo se utiliza principalmente para modificar parámetros relacionados con dispositivos (por ejemplo, nombre de la interfaz) o para conectar dispositivos utilizando una conexión existente.
- Secret registra nmcli como 'agente secreto' de NetworkManager, que escucha mensajes secretos. Esta sección se utiliza raramente, porque nmcli, al conectarse a redes, opera de esta manera por defecto.
Ejemplos sencillos
Antes de comenzar, asegúrese de que NetworkManager esté en ejecución y que nmcli pueda comunicarse con él:
$ nmcli general
ESTADO CONECTIVIDAD WIFI-HW WIFI WWAN-HW WWAN
conectado completo habilitado habilitado habilitado habilitadoA menudo se comienza revisando todos los perfiles de conexiones de red:
$ nmcli connection show
NAME UUID TYPE DEVICE
Conexión por cable 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3
Conexión por cable 2 2279d917-fa02-390c-8603-3083ec5a1d3e ethernet enp0s8
Conexión por cable 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9Este comando utiliza la acción show para la sección Connection.
En la máquina de prueba se está ejecutando Ubuntu 20.04. En este caso, encontramos tres conexiones por cable: enp0s3, enp0s8 y enp0s9.
Gestión de conexiones
Es importante entender que en nmcli el término Connection se refiere a una entidad que contiene toda la información sobre una conexión. En otras palabras, es la configuración de la red. Connection encapsula toda la información relacionada con las conexiones, incluyendo la capa de enlace y la información sobre direccionamiento IP. Esta es la capa 2 y la capa 3 en el modelo OSI.
Cuando configuras la red en Linux, normalmente configuras conexiones que, en última instancia, se vincularán a dispositivos de red, que a su vez son interfaces de red instaladas en el ordenador. Cuando un dispositivo utiliza una conexión, se considera activa o levantada. Si una conexión no se utiliza, se considera inactiva o caída.
Adición de conexiones de red
La utilidad nmcli permite añadir rápidamente y configurar conexiones. Por ejemplo, para añadir Conexión por cable 2 (con enp0s8), necesitas ejecutar el siguiente comando como superusuario:
$ sudo nmcli connection add type ethernet ifname enp0s8
Conexión 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) añadida con éxito.En la opción type especificamos que será una conexión Ethernet, y en la opción ifname (nombre de la interfaz) indicamos la interfaz de red que queremos usar.
Esto es lo que sucederá después de ejecutar el comando:
$ nmcli connection show
NAME UUID TYPE DEVICE
Conexión por cable 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3
Conexión por cable 2 2279d917-fa02-390c-8603-3083ec5a1d3e ethernet enp0s8
Conexión por cable 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9
ethernet-enp0s8 09d26960-25a0-440f-8b20-c684d7adc2f5 ethernet -- Se ha creado una nueva conexión, ethernet-enp0s8. Se le ha asignado un UUID, y el tipo de conexión es Ethernet. La levantaremos con el comando up:
$ nmcli connection up ethernet-enp0s8
Conexión activada con éxito (Ruta activa de D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)Verificamos nuevamente la lista de conexiones activas:
$ nmcli connection show --active
NAME UUID TYPE DEVICE
Conexión por cable 1 ac3241e4-b424-35d6-aaa7-07498561688d ethernet enp0s3
ethernet-enp0s8 09d26960-25a0-440f-8b20-c684d7adc2f5 ethernet enp0s8
Conexión por cable 3 52d89737-de92-35ec-b082-8cf2e5ac36e6 ethernet enp0s9Se ha añadido una nueva conexión ethernet-enp0s8, está activa y utiliza la interfaz de red enp0s8.
Configuración de conexiones
La herramienta ncmli permite cambiar fácilmente los parámetros de las conexiones existentes. Por ejemplo, puede que necesite cambiar de una IP dinámica (DHCP) a una IP estática.
Supongamos que necesitamos establecer la dirección IP en 192.168.4.26. Para ello, utilizamos dos comandos. El primero establecerá directamente la dirección IP, y el segundo cambiará el método de asignación de la IP a 'manual':
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manualNo olvide también establecer la máscara de subred. Para nuestra conexión de prueba, es 255.255.255.0, o /24 para el enrutamiento sin clases (CIDR).
Para que los cambios surtan efecto, debe desactivar y luego activar la conexión nuevamente:
$ nmcli connection down ethernet-enp0s8
Conexión 'ethernet-enp0s8' desactivada con éxito (ruta activa de D-Bus: /org/freedesktop/NetworkManager/ActiveConnection/4)
$ nmcli connection up ethernet-enp0s8
Conexión activada con éxito (ruta activa de D-Bus: /org/freedesktop/NetworkManager/ActiveCSi, por el contrario, necesita establecer DHCP, use auto en lugar de manual:
$ nmcli connection modify ethernet-enp0s8 ipv4.method autoTrabajo con dispositivos
Para ello utilizamos la sección Dispositivo.
Verificación del estado de los dispositivos
$ nmcli device status
DISPOSITIVO TIPO ESTADO CONEXIÓN
enp0s3 ethernet conectado Conexión por cable 1
enp0s8 ethernet conectado ethernet-enp0s8
enp0s9 ethernet conectado Conexión por cable 3
lo loopback no gestionado -- Solicitud de información sobre el dispositivo
Para ello, utilizamos la acción show de la sección Dispositivo (es obligatorio especificar el nombre del dispositivo). La herramienta muestra bastante información, a menudo en varias páginas.
Veamos la interfaz enp0s8, que está utilizando nuestra nueva conexión. Asegurémonos de que está utilizando exactamente la dirección IP que establecimos 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: encendido
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=255Hay bastante información. Resaltemos lo principal:
- Nombre de la interfaz de red: enp0s8.
- Tipo de conexión: conexión Ethernet por cable.
- Vemos la dirección MAC del dispositivo.
- Se especifica la unidad de transmisión máxima (MTU) — el tamaño máximo del bloque de datos útil de un paquete que se puede transmitir por el protocolo sin fragmentación.
- Dispositivo actualmente conectado.
- Nombre de la conexión, que utiliza el dispositivo: ethernet-enp0s8.
- El dispositivo utiliza el Dirección IP, que instalamos anteriormente: 192.168.4.26/24.
Otra información se refiere a los parámetros predeterminados de enrutamiento y puerta de enlace de la conexión. Dependen de la red en particular.
Editor interactivo de nmcli
nmcli también tiene un editor interactivo simple, donde a alguien puede resultarle más cómodo trabajar. Para ejecutarlo, por ejemplo, para la conexión ethernet-enp0s8, use la acción edit:
$ nmcli connection edit ethernet-enp0s8También tiene una pequeña ayuda, que es inferior en tamaño a la versión de consola:
===| editor de conexión interactivo nmcli |===
Editando la conexión existente '802-3-ethernet': 'ethernet-enp0s8'
Escriba 'help' o '?' para los comandos disponibles.
Escriba 'print' para mostrar todas las propiedades de la conexión.
Escriba 'describe [<setting>.<prop>]' para una descripción detallada de la propiedad.
Puede editar los siguientes ajustes: conexión, 802-3-ethernet (ethernet), 802-1x, dcb, sriov, ethtool, match, ipv4, ipv6, tc, proxy
nmcli>Si escribe el comando print y presiona Enter, nmcli mostrará todas las propiedades de la conexión:
===============================================================================
Detalles del perfil de conexión (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 (predeterminado)
connection.multi-connect: 0 (predeterminado)
connection.auth-retries: -1
connection.timestamp: 1593967212
connection.read-only: no
connection.permissions: --
connection.zone: --
connection.master: --
connection.slave-type: --
connection.autoconnect-slaves: -1 (predeterminado)
connection.secondaries: --Por ejemplo, para establecer la propiedad DHCP para la conexión, escriba goto ipv4 y presione Enter:
nmcli> goto ipv4
Puede editar las siguientes propiedades: método, dns, búsqueda de dns,
opciones de dns, prioridad de dns, direcciones, puerta de enlace, rutas, métrico de ruta,
tabla de enrutamiento, reglas de enrutamiento, ignorar rutas automáticas, ignorar dns automático,
id del cliente dhcp, dhcp-iaid, tiempo de espera de dhcp, enviar nombre de host dhcp,
nombre de host dhcp, fqdn de dhcp, banderas de nombre de host dhcp, nunca predeterminado, puede fallar, tiempo de espera de dad
nmcli ipv4>Luego escriba set method auto y presione Enter:
nmcli ipv4> set method auto
¿También desea limpiar 'ipv4.addresses'? [sí]:Si desea limpiar la dirección IP estática, presione Enter. De lo contrario, escriba no y presione Enter. Puede guardarlo si cree que le será útil en el futuro. Pero incluso con una dirección IP estática guardada, se utilizará DHCP si el método se establece en auto.
Utilice el comando save para guardar los cambios:
nmcli ipv4> save
Conexión 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) actualizada con éxito.
nmcli ipv4>Escriba quit para salir del editor interactivo nmcli. Si cambia de opinión sobre salir, utilice el comando back.
Y esto no es todo
Abra el editor interactivo nmcli y vea cuántas configuraciones hay y cuántas propiedades tiene cada configuración. El editor interactivo es una gran herramienta, pero, si desea usar nmcli en líneas de comandos o scripts, necesitará la versión normal de la línea de comandos.
Ahora que tiene los conceptos básicos, consulte la nmcli para aprender qué más puede ayudarle.
Publicidad
Servidores épicos — es o Linux con potentes procesadores de la familia AMD EPYC y discos NVMe Intel muy rápidos. ¡No se pierda la oportunidad de pedirlo!
Fuente: habr.com
