Tutoriel Linux

Modificar un perfil con nmcli sin perder el acceso a la red

Débutant6 min de lecture

Modificar una dirección IP, una puerta de enlace o un DNS en una máquina remota se maneja con un solo comando nmcli. Estos ajustes se guardan en un perfil de NetworkManager, y la reactivación de este perfil puede cortar la sesión SSH que se utiliza precisamente para escribir el comando.

Antes de tocar el perfil, identifique cuál tiene la conexión activa y mantenga abierta una segunda sesión o la consola del hipervisor. Limite cada iteración a un dominio de ajuste, revise el valor modificado, reactive, y luego controle la ruta y el DNS antes de cerrar la sesión de respaldo.

Cable Ethernet conectado a un mini-servidor Linux con un enlace de respaldo visible
Prepare una consola o un segundo enlace antes de reactivar un perfil de red.

Verificar el gestor y preparar un acceso de emergencia

nmcli solo controla las conexiones gestionadas por NetworkManager. En una máquina administrada por systemd-networkd, ifupdown o Netplan con otro backend, estos comandos no tienen ningún efecto en la red real.

systemctl is-active NetworkManager
nmcli general status
nmcli connection show --active
ip route get 1.1.1.1

systemctl is-active debe devolver activo y nmcli general status debe responder sin errores. ip route get 1.1.1.1 proporciona la interfaz, la puerta de enlace y la dirección fuente utilizadas para alcanzar este destino: anote estos tres valores, sirven como referencia después de la reactivación.

Una sola sesión SSH no es suficiente cuando el perfil a modificar transporta esa sesión: una interrupción durante la reactivación la termina y elimina la forma de regresar. Mantenga abierta una segunda sesión; en una VM o un servidor remoto, la consola del hipervisor o del proveedor proporciona este segundo acceso.

Identificar el perfil que lleva la conexión activa

Liste los perfiles registrados y luego inspeccione el que está vinculado a la interfaz activa.

nmcli -f NAME,UUID,TYPE,DEVICE connection show
PROFILE='Conexión por cable 1'
nmcli -f connection.id,connection.uuid,connection.interface-name,ipv4.method,ipv4.addresses,ipv4.gateway,ipv4.dns connection show "$PROFILE"
nmcli connection show --active

Reemplace Conexión por cable 1 por el nombre registrado en la máquina, entre comillas si contiene espacios. La variable PROFILE permanece disponible para los siguientes comandos en la misma terminal. La salida indica si el IPv4 proviene de DHCP o de una configuración manual, con la dirección, la puerta de enlace y los DNS actualmente asociados al perfil.

Compare el campo DEVICE del perfil con la línea activa de nmcli connection show --active. A menudo coexisten un perfil Wi-Fi y un perfil Ethernet: modificar el perfil inactivo no corta la sesión en curso, pero no cambia nada en la ruta de red dirigida.

Modificar una propiedad y volver a leer su valor

Comience con una propiedad que no afecte la dirección o la ruta: este paso confirma el nombre del perfil y los derechos de sudo sin exponer la sesión en curso. connection.autoconnect-priority es adecuada, solo se aplica a la próxima elección de perfil y no reactivará nada. En un perfil que no transporta la sesión activa, esta precaución es opcional: un error no interrumpe nada.

sudo nmcli connection modify "$PROFILE" connection.autoconnect-priority 20
nmcli -f connection.id,connection.autoconnect-priority connection show "$PROFILE"

El segundo comando debe mostrar 20. Anote el valor original antes de modificarlo para poder restaurarlo. Mantenga cada iteración en un solo dominio de ajuste: prioridad de autoconnexión, DNS o direccionamiento. La relectura precede a la reactivación; si la verificación falla luego, la causa se limita a esta iteración.

Para ignorar los DNS proporcionados por DHCP, el ajuste es explícito:

sudo nmcli connection modify "$PROFILE" ipv4.ignore-auto-dns yes

Luego, indique los resolutores con ipv4.dns, separados por un espacio y entre comillas:

sudo nmcli connection modify "$PROFILE" ipv4.dns "1.1.1.1 1.0.0.1"
nmcli -f ipv4.ignore-auto-dns,ipv4.dns connection show "$PROFILE"

1.1.1.1 y 1.0.0.1 sirven como ejemplo. Si la empresa o el proveedor impone sus resolutores, manténgalos: no los reemplace por direcciones públicas sin verificar la política de la red. Una resolución rota corta el acceso más seguro que una ruta errónea.

Para cambiar el perfil a direccionamiento manual, un comando agrupa el método, la dirección y la puerta de enlace:

sudo nmcli connection modify "$PROFILE" ipv4.method manual ipv4.addresses 198.51.100.10/24 ipv4.gateway 198.51.100.1
nmcli -f ipv4.method,ipv4.addresses,ipv4.gateway connection show "$PROFILE"

198.51.100.10/24 y 198.51.100.1 pertenecen al rango reservado para ejemplos: adáptelos al plan de direccionamiento de la máquina. Antes del cambio, anote la dirección y la puerta de enlace del alquiler DHCP mostradas por ip route get: el retroceso volverá a cambiar ipv4.method a auto y reactivará el perfil.

La documentación oficial nmcli de NetworkManager enumera los nombres de propiedades y su sintaxis según la versión instalada.

Reactiva la conexión y luego verifica la ruta y el DNS

Los valores modificados permanecen inertes hasta que el perfil sea reactivado. nmcli connection up puede interrumpir brevemente el tráfico, incluido el SSH, incluso cuando el comando es correcto.

sudo nmcli connection up id "$PROFILE"
nmcli connection show --active
ip route get 1.1.1.1
getent hosts example.com
resolvectl status

nmcli connection up debe finalizar sin errores y el perfil debe aparecer activo en nmcli connection show --active. Compare la interfaz y la puerta de enlace devueltas por ip route get con los valores anotados en el diagnóstico.

getent hosts example.com prueba la resolución con los mecanismos configurados en la máquina. resolvectl status detalla los DNS activos cuando systemd-resolved gestiona la resolución; si el comando no existe en su distribución, verifique el resolvedor realmente utilizado en lugar de considerar el DNS como validado.

Una ruta correcta con un nombre que ya no se resuelve designa al DNS, no a la ruta. La guía ip route en Linux separa la ruta, la puerta de enlace y la dirección fuente. Para volver a leer las direcciones de la interfaz, la guía ip addr en Linux complementa el control.

Detener el procedimiento si otra herramienta gestiona la red

Si el diagnóstico inicial muestra otro gestor, no reactive ningún perfil con nmcli. En Ubuntu, los archivos YAML pueden ser gestionados por Netplan con un backend diferente a NetworkManager: la prueba reversible Netplan es adecuada para esta configuración.

La segunda sesión SSH y la consola de emergencia limitan el riesgo de pérdida de acceso durante el cambio, no hacen inofensivo un objetivo incorrecto. Verifique que el perfil, la interfaz, la ruta y la resolución coincidan con los valores esperados antes de cerrar la sesión de respaldo.