El comando nmcli le permite aprovechar el poder de la herramienta NetworkManager directamente desde la línea de comandos de Linux. Es una parte integral del paquete NetworkManager que utiliza una interfaz de programador de aplicaciones (API) para acceder a la funcionalidad de NetworkManager.
nmcli se lanzó en 2010 y reemplaza otros modos de configuración de interfaces y conexiones de red, como ifconfig. Debido a que es una herramienta de interfaz de línea de comandos (CLI) diseñada para usarse en scripts y ventanas de terminal, es ideal para los administradores de sistemas que trabajan en sistemas sin una interfaz gráfica de usuario (GUI).
sintaxis de ncmli
El comando nmcli acepta opciones que modifican el comportamiento de nmcli, secciones que le dicen a nmcli cuál de sus capacidades desea usar y acciones que dile lo que quieres que haga:
$ nmcli <options> <section> <action>
Más sobre administradores de sistemas
- Habilitar el blog de administrador del sistema
- La empresa automatizada:una guía para administrar TI con automatización
- Libro electrónico:Automatización de Ansible para administradores de sistemas
- Historias del campo:una guía del administrador de sistemas para la automatización de TI
- eBook:Una guía de Kubernetes para SRE y administradores de sistemas
- Últimos artículos de administrador de sistemas
Hay ocho secciones, cada una relacionada con un conjunto específico de acciones de red:
- Ayuda proporciona ayuda sobre los comandos y el uso de ncmcli.
- Generales recupera el estado y la configuración global de NetworkManager.
- Redes proporciona comandos para consultar el estado de una conexión de red y habilitar o deshabilitar conexiones.
- Radio proporciona comandos para consultar el estado de una conexión de red WiFi y habilitar o deshabilitar conexiones.
- Supervisión proporciona comandos para monitorear la actividad de NetworkManager y observar los cambios de estado de las conexiones de red.
- Conexión proporciona comandos para activar y desactivar las interfaces de red, agregar nuevas conexiones y eliminar conexiones existentes.
- Dispositivo se usa principalmente para modificar parámetros asociados con un dispositivo (por ejemplo, el nombre de la interfaz) o para conectar un dispositivo usando una conexión existente.
- Secreto registra nmcli como un agente secreto de NetworkManager que escucha mensajes secretos. Esto rara vez se requiere porque nmcli lo hace automáticamente cuando se conecta a las redes.
Ejemplos simples
Como primera verificación, verifique que NetworkManager se esté ejecutando y que nmcli pueda comunicarse con él:
$ nmcli general
STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN
connected full enabled enabled enabled enabled
El reconocimiento suele ser la primera parte de la administración de un sistema. Para enumerar todos los perfiles de conexión de red en memoria y en disco:
$ 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 el show
acción de la connection
sección.
La máquina de prueba utilizada para este ejemplo ejecuta Ubuntu 20.04. Tiene tres adaptadores de red instalados:enp0s3
, enp0s8
y enp0s9
.
Gestión de conexiones
Es importante entender la nomenclatura de nmcli. Una conexión de red es algo que contiene toda la información sobre una conexión. Puede considerarlo como una configuración de red. . Una conexión encapsula toda la información relacionada con una conexión, incluida la capa de enlace de datos y la información de direccionamiento IP. Esa es la capa 2 y la capa 3 en el modelo de redes OSI.
Cuando está configurando redes en Linux, generalmente está configurando conexiones que eventualmente se vincularán a dispositivos de red, que son las interfaces de red instaladas en una computadora. Cuando un dispositivo utiliza una conexión, se dice que la conexión está activa. o arriba . Lo contrario de activo es inactivo o abajo .
Agregar conexiones de red
El comando ncmli le permite crear rápidamente conexiones de red y especificar elementos de su configuración al mismo tiempo. Para agregar una nueva conexión mediante la conexión por cable 2, enp0s8
, necesitas usar sudo
:
$ sudo nmcli connection add type ethernet ifname enp0s8
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully added.
El type
opción solicita una conexión Ethernet, y el ifname
(nombre de interfaz) especifica el dispositivo de interfaz de red que desea que utilice la conexión.
Mira lo que pasó:
$ 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 --
Tu nueva conexión, ethernet-enp0s8
, fue creado. Se asignó su identificador único universal (UUID) y el tipo de conexión es Ethernet. Hágalo activo con el up
comando seguido del nombre de la conexión (o el UUID):
$ nmcli connection up ethernet-enp0s8
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
Revisa tus conexiones activas una vez más:
$ 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
Tu nueva conexión, ethernet-enp0s8
, ahora está activo y vinculado a enp0s8
dispositivo de interfaz de red.
Ajuste de conexiones
El comando ncmli facilita el ajuste de los parámetros de las conexiones existentes. Tal vez desee cambiar una interfaz de red del Protocolo de configuración dinámica de host (DHCP) a una dirección IP estática.
Suponga que necesita una dirección IP fija de 192.168.4.26
para su nueva conexión. Para lograr eso, necesita emitir dos comandos. Uno para configurar la dirección IP y otro para configurar el método de conexión para obtener una dirección IP en manual
:
$ nmcli connection modify ethernet-enp0s8 ipv4.address 192.168.4.26/24
$ nmcli connection modify ethernet-enp0s8 ipv4.method manual
Recuerde especificar la máscara de subred. En esta red de prueba, es 255.255.255.0
, o /24
en enrutamiento entre dominios sin clase (CIDR).
Para que sus cambios surtan efecto, debe rebotar la conexión deteniéndola y volviendo a activarla. El primer comando interrumpe la conexión y el segundo la vuelve a activar:
$ 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/ActiveConnection/6)
Si desea configurar la conexión para usar DHCP, use auto
en lugar de manual
:
$ nmcli connection modify ethernet-enp0s8 ipv4.method auto
Administración de dispositivos
Los comandos en el device
La sección del comando nmcli le permite administrar las interfaces de red instaladas en su computadora.
Comprobación del estado del dispositivo
Para comprobar rápidamente el estado de todas las interfaces de red:
$ 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 --
Mostrando detalles del dispositivo
Para examinar los detalles de una interfaz de red, use el show
acción desde el device
sección. Si no proporciona un nombre de dispositivo, los detalles de todos los dispositivos se recuperan y se muestran. Puede desplazarse y desplazarse hacia arriba y hacia abajo para revisarlos.
Eche un vistazo a enp0s8
, el dispositivo que utiliza su nueva conexión. Verifique que la dirección IP en uso sea la dirección que solicitó 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
La respuesta es bastante detallada. Entre otras cosas, muestra:
- El nombre de la interfaz de red , que en este caso es
enp0s8
, que le asigna udev. - El tipo de conexión de red , que en este caso es una conexión Ethernet física.
- La dirección de control de acceso a medios (MAC) del dispositivo , que identifica el dispositivo en la red.
- La unidad de transmisión máxima, que es el tamaño de la unidad de datos de protocolo más grande que se puede transmitir en una sola transacción. Cualquier cosa más grande que esto se divide en varios paquetes.
- Este dispositivo está conectado actualmente .
- El nombre de la conexión el uso de este dispositivo es
ethernet-enp0s8
. - La dirección IP de la conexión utilizando este dispositivo. Según lo solicitado, se establece en
192.168.4.26/24
.
La otra información se relaciona con la configuración predeterminada de enrutamiento y puerta de enlace que se aplicó a esta conexión, de acuerdo con la red a la que está conectado.
editor interactivo de nmcli
Aunque es una herramienta de línea de comandos, nmcli incluye un editor interactivo elemental. El edit
action abrirá el editor interactivo en la conexión que especifique:
$ nmcli connection edit ethernet-enp0s8
Muestra una pequeña cantidad de texto de ayuda, luego el símbolo del sistema nmcli:
===| 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>
Si escribe print
y pulsa Intro , nmcli enumerará todas las propiedades asociadas con la conexión. Hay muchas propiedades. Puede desplazarse hacia arriba y hacia abajo por la lista:
===============================================================================
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: --
Vuelva a cambiar su conexión para usar DHCP. Escribe goto ipv4
y pulsa Intro :
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>
La propiedad que desea cambiar es method
. Escriba set method auto
y pulsa Intro :
nmcli ipv4> set method auto
Do you also want to clear 'ipv4.addresses'? [yes]:
Si desea que la conexión elimine la dirección IP estática, presione Intro . Para mantenerlo, escriba no
y pulsa Intro . Puedes quedártelo si crees que podrías volver a usarlo en el futuro. Incluso con una dirección IP estática almacenada, si method
está configurado en auto
, utilizará DHCP.
Escribe save
para guardar los cambios:
nmcli ipv4> save
Connection 'ethernet-enp0s8' (09d26960-25a0-440f-8b20-c684d7adc2f5) successfully updated.
nmcli ipv4>
Escribe quit
para salir del editor interactivo nmcli. Si no desea salir, escriba back
para volver al nivel principal y seguir usando el editor.
Hay mucho más en nmcli
Explore el editor interactivo y vea cuántas configuraciones hay y cuántas propiedades tiene cada configuración. El editor interactivo es una buena herramienta, pero para frases ingeniosas o para usar nmcli en secuencias de comandos, necesitará la versión normal de línea de comandos.
Ahora que tiene los conceptos básicos a mano, consulte la página de manual de nmcli para ver qué más puede ofrecer.