nmcli o como manejar NetworkManager por consola

por | 1 octubre, 2024

Debo admitirlo esta es una de mis debilidades…
hasta ahora

Aclaro que si se configurar de forma estática todo lo relacionado a redes en un servidor Linux, sin embargo todo lo hago a través del paquete ip o el difunto net-tools y esto a veces me traía problemas cuando NetworkManager estaba activo.

nmcli viene integrado en el paquete networkmanager superior a la versión 0.8.1, actualmente en, diría todas, las distribuciones tenemos disponible mínimo desde la versión 1.30 por lo que no deberías tener problema para usar esta utilidad.

Nmcli nos permite administrar distintos perfiles de red, a nivel de servidores no hay mucha diferencia ya que se suele manejar siempre el mismo direccionamiento, pero en laptops hay una gran diferencia ya que dada la movilidad siempre puede variar el direccionamiento IP que usemos.

Para esto, nmcli crea los archivos de configuración directamente en la ruta /etc/sysconfig/network-scripts/ifcfg-<nombre del perfil>, esto en la familia red hat ya que es lo que estoy estudiando, en otras distribuciones basadas en debian puede estar en /etc/network/interfaces aunque a veces hay que trabajar también con el archivo /etc/NetworkManager/NetworkManager.conf

En esta entrada veremos

ver los parámetros de los perfiles

Para ver los perfiles que tenemos configurados podemos usar

nmcli connection show

o

nmcli con s

con cualquiera de estos comandos podemos ver algo como esto

Como ven en mi caso tengo 2 perfiles llamados

  • eth0
  • Conexión cableada 1

Si miramos en el directorio mencionado anteriormente /etc/sysconfig/network-scripts dentro de todos los archivo veremos el archivos de configuración correspondiente a eth0, en el caso de la Conexión cableada 1, no aparece nada debido a que la interfaz aun no ha sido configurada, y tampoco ha recibido una IP por DHCP

podemos ver los detalles de cada conexión ya sea mirando el archivo del perfil correspondiente o usando nmcli de la siguiente forma

nmcli connection show <nombre del perfil|uuid>

o su forma abreviada

nmcli con s <nombre del perfil|uuid>

en nuestro caso veremos el perfil de eth0 por lo que usaremos

nmcli con s eth0

y tendremos una salida como esta

con todos los detalles del perfil, podemos usar pipelines para filtrar la salida a solo lo que necesitemos. Por ejemplo:

para saber si el perfil esta configurado para iniciar automáticamente

nmcli con s eth0| grep autoconnect

para ver si usa dhcp o no

nmcli con s ens18 | grep method

auto significa dhcp, static o manual significa que no esta utilizando dhcp

para ver las IP en v4 y v6 en los casos que se asigno IP estática

nmcli con s eth0 | grep address

En este caso, como la interfaz eth0 esta con IP dinámica, esta no aparecerá en este apartado, ya que básicamente la salida de este comando es el contenido del archivo de configuración correspondiente.

para ver a que interfaz esta asociado un perfil

nmcli con s eth0 | grep interface

En este caso el comando no tiene mucha utilidad debido a que el perfil se llama igual que la interfaz, pero podemos configurar un perfil con otro nombre que no este relacionado con el nombre de la interfaz

También podemos ver el estado de las interfaces físicas con nmcli usando

nmcli dev status

o su forma abreviada

nmcli d s

Aquí nos mostrará el perfil asociado a cada interfaz. Ojo y no confundirse con el «desconectado» de la interfaz eth1, esto no significa que físicamente no exista una conexión, solo significa que no esta siendo usada por ningún perfil, como pueden ver en la salida del comando ip link show eth1

Como modificar los parámetros

Para modificar algún valor de un perfil ya creado, usamos la siguiente sintaxis

nmcli con mod <nombre perfil> <parametros a modificar> <nuevo valor>

Por ejemplo, vamos a cambiar la cantidad de intentos de reconexión del perfil eth0

primero veremos que valor tiene actualmente con

nmcli con s eth0 | grep connection.autoconnect-retries

Como ven, el valor esta configurado en -1, es el valor por defecto e indica que intentará conectarse de forma infinita

Para modificar este valor usaremos la sintaxis anterior, el parámetro será connection.autoconnect-retries y el nuevo valor que le daremos será de 3

#sudo nmcli con m eth0 connection.autoconnect-retries 3

Como pueden ver, al ejecutar el comando con permisos de sudo, si todo sale bien, no entregará ningún mensaje y aplicará directamente el cambio como podemos ver en la segunda línea

También podemos ver este cambio en el correspondiente archivo de configuración

Desharemos esta configuración para ver como cambia nuestro entorno

Ahora volveremos a hacer el mismo cambio, pero esta vez lo haremos directamente en el archivo de configuración

Como pueden ver, a pesar que el archivo de configuración del perfil ha sido editado, el cambio no se ve reflejado en nmcli, esto es debido a que, para que nmcli lea los cambios en el archivo de configuración debemos ejecutar previamente

# nmcli con reload

y una vez hecho esto ya podemos ver los cambios

Respecto a las propiedades que podemos modificar, como habrán imaginado son casi todas las que obtenemos al ejecutar

nmcli conn s <nombre del perfil|uuid>

Por lo que tenemos un tip muy simple y que nos ayuda bastante que consiste en primero ver los parámetros y luego solo copiar y pegar toda la linea, sin el valor.

Los parámetros que más he visto que se modifican son:

  • connection.autoconnect
  • ipv4.method
  • ipv4.dns
  • ipv4.dns-search
  • ipv4.dns-options
  • ipv4.dns-priority
  • ipv4.addresses
  • ipv4.gateway
  • ipv4.routes

Un punto importante es que los cambios, a pesar que los podemos visualizar, la mayoría de las veces debemos reiniciar el servicio NetworkManager para que surtan efecto

Como crear perfiles nuevos

Para crear un perfil basta con utilizar el siguiente comando

nmcli con add con-name <nombre nuevo perfil> type <tipo de interfaz > ifname <interfaz física>

Y tendremos nuestro nuevo perfil, como se imaginarán este perfil no tiene ninguna configuración adicional, como podremos ver en el archivo de configuración respectivo

type -h
Error: tipo de conexión incorrecto: «-h» no está entre [6lowpan, 802-11-olpc-mesh (olpc-mesh), 802-11-wireless (wifi), 802-3-ethernet (ethernet), adsl, bluetooth, bond, bridge, cdma, dummy, generic, gsm, infiniband, ip-tunnel, macsec, macvlan, ovs-bridge, ovs-interface, ovs-port, pppoe, team, tun, vlan, vpn, vxlan, wifi-p2p, wimax, wireguard, wpan, bond-slave, bridge-slave, team-slave]

 sudo nmcli con add con-name Mi-Perfil type ethernet ifname eth1

Como pueden ver en la siguiente imagen, al crear un nuevo perfil, automáticamente este aparece tanto en el listado de conexiones de nmcli como en el directorio de los archivos de configuración

También podemos añadir valores cuando creamos nuestro perfil, para ello basta con ir agregando las propiedades y su valor, todo separado por espacios, por ejemplo vamos a crear el perfil «Estático» con ip 172.16.1.129/24, gateway 172.16.1.254, dns 208.67.222.222. Para eso ejecutamos

sudo nmcli con add con-name Estático type ethernet ifname eth1 ipv4.method manual ipv4.addresses 172.16.1.129/24 ipv4.gateway 172.16.1.254 ipv4.dns 208.67.222.222

Como ven con un solo comando pudimos configurar los parámetros más comunes para una conexión.

Como eliminar perfiles

Para borrar un perfil solo tenemos que ejecutar

nmcli con del <nombre del perfil|uuid>

y listo

También tenemos la opción de eliminar el archivo del perfil desde el directorio /etc/sysconfig/network-scripts/ifcfg-<nombre del perfil>

rm /etc/sysconfig/network-scripts/ifcfg-Estático

Sin embargo al hacerlo de esta forma debemos recargar la configuración de nmcli para que elimine correctamente el perfil

nmcli con rel

Y con eso terminamos este post, recuerden que si les quedan dudas las pueden colocar en los comentarios que los leeré y si se junta un buen número de dudas puede que salga un segundo post

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *