nmcli: Herramienta esencial para la gestión de redes en Linux

Índice- Introducción a nmcli

  • Guía básica de sintaxis de comandos nmcli
    1. Verificar si NetworkManager está ejecutándose
    1. Enumerar todos los dispositivos disponibles
    1. Listar todas las conexiones disponibles
    1. Mostrar toda la configuración de una interfaz
    1. Comprobar el estado de dispositivos de red física
    1. Cambiar el nombre de host con nmcli
    1. Crear una nueva conexión Ethernet con IP estática
    1. Crear una nueva conexión Ethernet con DHCP
    1. Crear y configurar un enlace (bond) con dos interfaces esclavas
    1. Crear y configurar un puente de red
    1. Crear y configurar un grupo de red
    1. Recargar conexiones con nmcli
    1. Agregar/editar conexiones de forma interactiva
    1. Cambiar de DHCP a IP estática en una conexión Ethernet
    1. Cambiar de IP estática a DHCP en una conexión Ethernet
    1. Modificar la directiva ONBOOT con nmcli
    1. Cambiar la directiva DEFROUTE
    1. Deshabilitar IPv6 en una conexión Ethernet
    1. Modificar la directiva "conexión automática"
    1. Agregar o modificar DNS en una conexión existente
    1. Asignar uno o varios servidores DNS a una conexión
    1. Eliminar uno o varios servidores DNS de una conexión
    1. Mostrar campos específicos de una conexión
    1. Monitorear actividad de conexiones y dispositivos
    1. Activar una conexión
    1. Desactivar una conexión
    1. Eliminar una conexión

Introducción a nmcli

  • nmcli es una herramienta de línea de comandos para controlar NetworkManager y reportar el estado de la red.
  • Puede reemplazar a nm-applet u otros clientes gráficos. Con nmcli se pueden crear, mostrar, editar, eliminar, activar y desactivar conexiones de red, así como controlar y mostrar el estado de los dispositivos de red.
  • Las conexiones se almacenan en archivos de configuración
  • El servicio NetworkManager debe estar en ejecución para poder gestionar estos archivos

Guía básica de sintaxis de comandos nmcli

Comando Propósito
**nmcli dev status** Mostrar el estado del gestor de red para todas las interfaces de red
**nmcli con show** Listar todas las conexiones
**nmcli con show \*nombre\*** Mostrar la configuración actual de una conexión específica
**nmcli con add con-name \*nombre\* ..** Agregar una nueva conexión con el nombre especificado
**nmcli con mod \*nombre\* ..** Modificar una conexión existente
**nmcli con reload** Indicar a NetworkManager que vuelva a leer los archivos de configuración
**nmcli con up \*nombre\*** Activar la conexión especificada
**nmcli dev dis \*dispositivo\*** Desactivar y desconectar la conexión actual del dispositivo de red
**nmcli con del \*nombre\*** Eliminar una conexión y su archivo de configuración

1. Verificar si NetworkManager está ejecutándose

Puede usar el siguiente comando para comprobar si NetworkManager está en ejecución:

[root@server01 ~]# nmcli -t -f RUNNING general
running



Obtener información general:

[root@server01 ~]# nmcli general
STATE      CONNECTIVITY  WIFI-HW  WIFI     WWAN-HW  WWAN
connected  full          enabled  enabled  enabled  enabled
[root@server01 ~]#



2. Enumerar todos los dispositivos disponibles

Ver y listar todos los dispositivos disponibles en el sistema Linux:

[root@server01 ~]# nmcli dev status
DEVICE      TYPE      STATE         CONNECTION
br0         bridge    connected     Bridge br0
virbr0      bridge    connected     virbr0
bond0       bond      connected     bond0
eth1        ethernet  connected     System eth1
eth2        ethernet  connected     System eth2
vnet0       tun       connected     vnet0
ens3f0      ethernet  disconnected  --
ens3f1      ethernet  disconnected  --
lo          loopback  unmanaged     --
[root@server01 ~]#



3. Listar todas las conexiones disponibles

Listar todas las conexiones disponibles:

[root@server01 ~]# nmcli con show
NAME          UUID                                  TYPE      DEVICE
Bridge br0    d2d68553-f97e-7549-7a26-b34a26f29318  bridge    br0
virbr0        19ec752e-976f-4c23-b236-deb684b9db07  bridge    virbr0
bond0         ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
System eth1   31fc52de-447b-46f6-33cf-1d4dbbcddef5  ethernet  eth1
System eth2   12e7087a-5ced-5405-d350-7726d3570bae  ethernet  eth2
vnet0         149dcea1-7c1f-439b-b4eb-b2f0ca31f0b4  tun       vnet0
ens3f0        98e575e9-2fcc-428f-bc02-1663f81402b9  ethernet  --
ens3f1        daa451f8-b227-4d91-95e4-48c8e46d002d  ethernet  --
[root@server01 ~]#



4. Mostrar toda la configuración de una interfaz

Ver todos los valores de configuración de una interfaz (valores predeterminados y personalizados):

[root@server01 ~]# nmcli con show "System eth1"
connection.id:                          System eth1
connection.uuid:                        31fc52de-447b-46f6-33cf-1d4dbbcddef5
connection.stable-id:                   --
connection.type:                        802-3-ethernet
connection.interface-name:              eth1
connection.autoconnect:                 yes
connection.autoconnect-priority:        0
connection.autoconnect-retries:         -1 (default)
connection.multi-connect:               0 (default)
connection.auth-retries:                -1
connection.timestamp:                   1606981056
connection.read-only:                   no
connection.permissions:                 --
connection.zone:                        --
connection.master:                      bond0
connection.slave-type:                  bond
connection.autoconnect-slaves:          -1 (default)
connection.secondaries:                 --
connection.gateway-ping-timeout:        0
connection.metered:                     unknown
connection.lldp:                        default
connection.mdns:                        -1 (default)
connection.llmnr:                       -1 (default)



5. Comprobar el estado de dispositivos de red física

Ahora el estado de todos los dispositivos de red conectados:

[root@server01 ~]# nmcli dev status
DEVICE      TYPE      STATE         CONNECTION
br0         bridge    connected     Bridge br0
virbr0      bridge    connected     virbr0
bond0       bond      connected     bond0
eth1        ethernet  connected     System eth1
eth2        ethernet  connected     System eth2
vnet0       tun       connected     vnet0
ens3f0      ethernet  disconnected  --
ens3f1      ethernet  disconnected  --
lo          loopback  unmanaged     --
[root@server01 ~]#



6. Cambiar el nombre de host con nmcli

Idealmente, debería usar el comando hostnamectl para cambiar el nombre de host, pero también puede usar el siguiente comando para actualizarlo con nmcli:

Obtener el nombre de host actual:

[root@server01 ~]# nmcli general hostname
servidor01.ejemplo.local



Ahora actualizar el nombre de host:

# nmcli general hostname servidor-nuevo.lab.com


Verificar el cambio:

# nmcli general hostname
servidor-nuevo.lab.com

# hostname
servidor-nuevo.lab.com


7. Crear una nueva conexión Ethernet con IP estática

En este ejemplo, usamos nmcli para configurar estáticamente la interfaz eth1 con la dirección IPv4 y máscara de red 192.168.5.100/24, así como la puerta de enlace predeterminada 192.168.5.1. La conexión se configurará para conectarse automáticamente al inicio y guardará la configuración en el archivo /etc/sysconfig/network-scripts/ifcfg-eth1.

# nmcli con add con-name eth1 type ethernet ifname eth1 ipv4.method manual ipv4.address 192.168.5.100/24 ipv4.gateway 192.168.5.1
La conexión 'eth1' (460b16aa-e755-403e-b0ec-5e1560dcc441) se ha agregado correctamente.


8. Crear una nueva conexión Ethernet con DHCP

El siguiante comando agregará una nueva conexión para la interfaz eth1 que usará DHCP para obtener la información de red IPv4 y se conectará automáticamente al inicio. La configuración se guardará en /etc/sysconfig/network-scripts/ifcfg-eth1 ya que el nombre de la conexión es "eth1".

# nmcli con add con-name eth1 type ethernet ifname eth1 ipv4.method auto
La conexión 'eth1' (d75cb87f-cd15-40a2-9c33-138e69a06a1f) se ha agregado correctamente.


Podemos verificar lo mismo en el archivo de configuración de la interfaz mapeada:

# egrep BOOTPROTO /etc/sysconfig/network-scripts/ifcfg-eth1
BOOTPROTO=dhcp


9. Crear y configurar un enlace (bond) con dos interfaces esclavas

Puede usar nmcli para crear una conexión de enlace con múltiples interfaces esclavas.

Hay seis tipos de modos de enlace: 802.3ad / balance-alb / balance-tlb / broadcast / active-backup / balance-rr / balance-xor

Eliminar cualquier archivo de configuración existente para las interfaces esclavas:

# nmcli con del "eth1"
# nmcli con del "eth2"


Agregar la interfaz principal de enlace con nmcli. Este comando agrega la conexión de enlace principle, nombra la interfaz de enlace como mi_bond0 y usa el modo de respaldo activo. He dado algunos valores ficticios a MII, UPDELAY y DOWNDELAY. Si desea agregar una interfaz principal, puede usar " primary=<nombre_interfaz>"

# nmcli con add type bond ifname mi_bond0 bond.options "mode=active-backup,downdelay=5,miimon=100,updelay=10"
La conexión 'bond-mi_bond0' (a5c76dbe-550b-4abf-8dc0-88184ade369e) se ha agregado correctamente.


De manera similar, para balance round-robin, puede usar bond.options como " downdelay=5,miimon=100,mode=balance-rr,updelay=10"

A continuación, agregue la primera interfaz esclava a mi_bond0 usando nmcli. Este comando enlaza la primera interfaz esclava a la interfaz eth1:

# nmcli con add type ethernet ifname eth1 master mi_bond0
La conexión 'bond-slave-eth1' (54dc4282-b90b-4469-9cbf-82bce042de85) se ha agregado correctamente.


Este comando enlaza la segunda interfaz esclava a la interfaz eth2:

# nmcli con add type ethernet ifname eth2 master mi_bond0
La conexión 'bond-slave-eth2' (41a5b4a6-8e6b-4df9-bff2-b67c5328311a) se ha agregado correctamente.


Listar las conexiones activas. Por lo tanto, hemos establecido la interfaz de enlace y sus interfaces esclavas:

[root@server01 ~]# nmcli con show
NAME          UUID                                  TYPE      DEVICE
Bridge br0    d2d68553-f97e-7549-7a26-b34a26f29318  bridge    br0
virbr0        19ec752e-976f-4c23-b236-deb684b9db07  bridge    virbr0
bond0         ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
System eth1   31fc52de-447b-46f6-33cf-1d4dbbcddef5  ethernet  eth1
System eth2   12e7087a-5ced-5405-d350-7726d3570bae  ethernet  eth2
vnet0         149dcea1-7c1f-439b-b4eb-b2f0ca31f0b4  tun       vnet0
[root@server01 ~]#



Aquí uso nmcli para establecer una dirección IP estática, máscara de red, puerta de enlace, DNS y búsqueda DNS para mi_bond0:

# nmcli con mod bond-mi_bond0 ipv4.method manual ipv4.address 10.10.10.15/24 ipv4.gateway 10.10.10.1 ipv4.dns 8.8.8.8 ipv4.dns-search miempresa.com


Nota:

Para usar una IP DHCP, use ipv4.method auto y no proporcione ningún detalle relacionado con la dirección IP en el comando anterior.

Verifique su archivo de configuración de mi_bond0:

# egrep 'BOOTPROTO|IPADDR|PREFIX|GATEWAY|DNS' /etc/sysconfig/network-scripts/ifcfg-bond-mi_bond0
BOOTPROTO=none
IPADDR=10.10.10.15
PREFIX=24
GATEWAY=10.10.10.1
DNS1=8.8.8.8


Recargar/recargar los cambios de configuración de red de mi_bond0:

# nmcli con up bond-mi_bond0
La conexión se ha activado correctamente (el maestro está esperando a los esclavos) (ruta D-Bus activa: /org/freedesktop/NetworkManager/ActiveConnection/11)


Verificar la dirección IP del enlace:

# ip addr show mi_bond0
7: mi_bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    link/ether 08:00:27:0d:ca:0c brd ff:ff:ff:ff:ff:ff
    inet 10.10.10.15/24 brd 10.10.10.255 scope global noprefixroute mi_bond0
       valid_lft forever preferred_lft forever


Verificar la lista de conexiones disponibles:

[root@server01 ~]# nmcli con show --active
NAME          UUID                                  TYPE      DEVICE
Bridge br0    d2d68553-f97e-7549-7a26-b34a26f29318  bridge    br0
virbr0        19ec752e-976f-4c23-b236-deb684b9db07  bridge    virbr0
bond0         ad33d8b0-1f7b-cab9-9447-ba07f855b143  bond      bond0
System eth1   31fc52de-447b-46f6-33cf-1d4dbbcddef5  ethernet  eth1
System eth2   12e7087a-5ced-5405-d350-7726d3570bae  ethernet  eth2
vnet0         149dcea1-7c1f-439b-b4eb-b2f0ca31f0b4  tun       vnet0
[root@server01 ~]#



10. Crear y configurar un puente de red

Para crear un puente de red llamado "mi_puente" con la interfaz eth1 como miembro:

# nmcli con add type bridge ifname mi_puente
La conexión 'bridge-mi_puente' (a5c76dbe-550b-4abf-8dc0-88184ade369e) se ha agregado correctamente.

# nmcli con add type ethernet ifname eth1 master mi_puente
La conexión 'bridge-slave-eth1' (54dc4282-b90b-4469-9cbf-82bce042de85) se ha agregado correctamente.

# nmcli con mod bridge-mi_puente ipv4.method manual ipv4.address 192.168.100.10/24 ipv4.gateway 192.168.100.1

11. Crear y configurar un grupo de red

Para crear un grupo de red llamado "mi_grupo" con las interfaces eth1 y eth2:

# nmcli con add type team ifname mi_team
La conexión 'team-mi_grupo' (a5c76dbe-550b-4abf-8dc0-88184ade369e) se ha agregado correctamente.

# nmcli con add type ethernet ifname eth1 master mi_grupo
La conexión 'team-slave-eth1' (54dc4282-b90b-4469-9cbf-82bce042de85) se ha agregado correctamente.

# nmcli con add type ethernet ifname eth2 master mi_grupo
La conexión 'team-slave-eth2' (41a5b4a6-8e6b-4df9-bff2-b67c5328311a) se ha agregado correctamente.

# nmcli con mod team-mi_grupo ipv4.method manual ipv4.address 192.168.200.10/24 ipv4.gateway 192.168.200.1

12. Recargar conexiones con nmcli

Después de editar manualmente los archivos de configuración, puede usar el siguiente comando para que NetworkManager vuelva a leerlos:

# nmcli con reload

13. Agregar/editar conexiones de forma interactiva

Para agregar una nueva conexión de forma interactiva:

# nmcli con add type ethernet interactive

Para editar una conexión existente de forma interactiva:

# nmcli con edit "nombre_conexion"

14. Cambiar de DHCP a IP estática en una conexión Ethernet

# nmcli con mod "nombre_conexion" ipv4.method manual ipv4.address 192.168.1.100/24 ipv4.gateway 192.168.1.1

15. Cambiar de IP estática a DHCP en una conexión Ethernet

# nmcli con mod "nombre_conexion" ipv4.method auto

16. Modificar la directiva ONBOOT con nmcli

# nmcli con mod "nombre_conexion" connection.autoconnect yes

17. Cambiar la directiva DEFROUTE

Para evitar que esta red se use como ruta predeterminada:

# nmcli con mod "nombre_conexion" ipv4.never-default yes

18. Deshabilitar IPv6 en una conexión Ethernet

# nmcli con mod "nombre_conexion" ipv6.method ignore

19. Modificar la directiva "conexión automática"

# nmcli con mod "nombre_conexion" connection.autoconnect no

20. Agregar o modificar DNS en una conexión existente

Para establecer los servidores DNS:

# nmcli con mod "nombre_conexion" ipv4.dns "8.8.8.8 8.8.4.4"

21. Asignar uno o varios servidores DNS a una conexión

# nmcli con mod "nombre_conexion" +ipv4.dns "1.1.1.1"
# nmcli con mod "nombre_conexion" +ipv4.dns "1.0.0.1"

22. Eliminar uno o varios servidores DNS de una conexión

# nmcli con mod "nombre_conexion" -ipv4.dns "1.1.1.1"
# nmcli con mod "nombre_conexion" -ipv4.dns "1.0.0.1"

23. Mostrar campos específicos de una conexión

# nmcli con show "nombre_conexion" | grep ipv4

24. Monitorear actividad de conexiones y dispositivos

# nmcli monitor

25. Activar una conexión

# nmcli con up "nombre_conexion"

26. Desactivar una conexión

# nmcli con down "nombre_conexion"

27. Eliminar una conexión

# nmcli con del "nombre_conexion"

Etiquetas: nmcli NetworkManager linux red línea de comandos

Publicado el 6-24 22:14