nmcli es una potente utilidad de línea de comandos para Linux que permite controlar el demonio NetworkManager. Es ideal para servidores sin interfaz gráfica o para scripts automatizados, ya que permite crear, ver, editar, activar, desactivar y eliminar conexiones de red de forma rápida y eficiente.
nmcli admite el completado con tabulación, lo que facilita la introducción de comandos y nombres de conexión.
Para mostrar los dispositivos de red:
nmcli device status
Nos indicará cuál está conectado.
nmcli device show <NOMBRE_DISPOSITIVO>
Ejemplo de salida:
GENERAL.DEVICE: wlp2s0 GENERAL.TYPE: wifi GENERAL.HWADDR: E1:E2:58:7B:DF:8A GENERAL.MTU: 1500 GENERAL.STATE: 100 (conectado) GENERAL.CONNECTION: Penny_5G GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/9 IP4.ADDRESS[1]: 192.168.0.8/24 IP4.GATEWAY: 192.168.0.1 IP4.ROUTE[1]: dst = 192.168.0.0/24, nh = 0.0.0.0, mt = 600 IP4.ROUTE[2]: dst = 0.0.0.0/0, nh = 192.168.0.1, mt = 600 IP4.DNS[1]: 192.168.0.110 IP6.ADDRESS[1]: fe81::cac5:6dfb:62fe:5746/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 1024 IP6.DNS[1]: fe80::1
nmcli connection show
El comando anterior mostrará una tabla con el nombre de la conexión, UUID, tipo y dispositivo.
nmcli connection show <NOMBRE_CONEXION>
Veremos una salida similar:
connection.id: Penny_5G connection.uuid: a818bb49-5277-4130-b9a9-3f0b290984fd connection.stable-id: -- connection.type: 802-11-wireless connection.interface-name: wlp2s0 connection.autoconnect: sí connection.autoconnect-priority: 0 connection.autoconnect-retries: -1 (default) connection.multi-connect: 0 (default) connection.auth-retries: -1 connection.timestamp: 1783180598 (...) 802-11-wireless.ssid: Penny_5G 802-11-wireless.mode: infrastructure 802-11-wireless.band: -- 802-11-wireless.seen-bssids: 12:6B:9A:3B:68:15,5B:6B:9A:3B:68:17 (...) ipv4.dns: 192.168.0.110 ipv4.dns-search: -- ipv4.dns-options: -- ipv4.dns-priority: 0 ipv4.addresses: 192.168.0.8/24 ipv4.gateway: 192.168.0.1 (...)
nmcli connection up <NOMBRE_CONEXION>
nmcli connection down <NOMBRE_CONEXION>
nmcli connection modify <NOMBRE_CONEXION> ipv4.method manual nmcli connection modify <NOMBRE_CONEXION> ipv4.address 192.168.0.100/24 nmcli connection modify <NOMBRE_CONEXION> ipv4.gateway 192.168.0.1 nmcli connection modify <NOMBRE_CONEXION> ipv4.dns 8.8.8.8
Para que se apliquen las modificaciones, tenemos que reiniciar la conexión:
nmcli connection down <NOMBRE_CONEXION> nmcli connection up <NOMBRE_CONEXION>
nmcli connection delete <NOMBRE_CONEXION>
nmcli connection modify <NOMBRE_ACTUAL> connection.id <NOMBRE_NUEVO>
nmcli connection modify <NOMBRE_CONEXION> ipv4.dns "1.1.1.1,94.140.14.14"
Para que se apliquen las modificaciones, tenemos que reiniciar la conexión:
nmcli connection down <NOMBRE_CONEXION> nmcli connection up <NOMBRE_CONEXION>
Si queremos que no se haga caso de la configuración DNS que venga por DHCP (cuando configuramos un router para que entregue la configuración de red por DHCP, por ejemplo):
nmcli connection modify <NOMBRE_CONEXION> ipv4.ignore-auto-dns yes
A partir de un fichero de configuración de WireGuard:
nmcli connection import type wireguard file fichero-wireguard.conf
Si no queremos que esa red VPN se conecte automáticamente:
nmcli connection modify <NOMBRE_CONEXION> connection.autoconnect no