Cómo administrar redes con NetworkManager en RHEL/CentOS 8


En RHEL y CentOS 8, el servicio de red es administrado por el demonio NetworkManager y se usa para configurar y controlar dinámicamente los dispositivos de red y mantener las conexiones activas cuando están disponibles.

NetworkManager viene con numerosos beneficios, como soporte para una fácil configuración y administración de la red utilizando tanto la interfaz de línea de comandos como las herramientas de interfaz gráfica de usuario, proporciona una API a través de D-Bus que permite consultar y controlar la configuración de la red, soporte para la flexibilidad de configuración y mucho más.

Además, NetworkManager también se puede configurar mediante archivos y la consola web Cockpit y admite el uso de scripts personalizados para iniciar o detener otros servicios según el estado de la conexión.

Antes de continuar, los siguientes son algunos otros puntos importantes a tener en cuenta sobre las redes en CentOS/RHEL 8:

  • Los archivos de configuración de tipo ifcfg tradicionales (por ejemplo, ifcfg-eth0, ifcfg-enp0s3) aún son compatibles.
  • Las secuencias de comandos de red están obsoletas y ya no se proporcionan de forma predeterminada.
  • Una instalación mínima proporciona una nueva versión de los scripts ifup e ifdown que llaman a NetworkManager a través de la herramienta nmcli.
  • Para ejecutar los scripts ifup e ifdown, NetworkManager debe estar ejecutándose.

Instalación de NetworkManager en CentOS/RHEL 8

NetworkManager debe venir preinstalado en una instalación básica de CentOS/RHEL 8; de lo contrario, puede instalarlo usando el administrador de paquetes DNF como se muestra.

# dnf install NetworkManager

El archivo de configuración global para NetworkManager se encuentra en /etc/NetworkManager/NetworkManager.conf y se pueden encontrar archivos de configuración adicionales en/etc/NetworkManager /.

Administrar NetworkManager con Systemctl en CentOS/RHEL 8

En CentOS/RHEL 8 y otros sistemas Linux modernos que han adoptado systemd (administrador de sistemas y servicios), los servicios se administran mediante la herramienta systemctl.

Los siguientes son comandos systemctl útiles para administrar el servicio NetworkManager.

Una instalación mínima de CentOS/RHEL 8 debería tener NetworkManager iniciado y habilitado para iniciarse automáticamente en el momento del arranque, de forma predeterminada. Puede utilizar los siguientes comandos para comprobar si NetworkManager está activo, habilitado e imprimir información de estado de tiempo de ejecución de NetworkManager.

# systemctl is-active NetworkManager
# systemctl is-enabled NetworkManager
# systemctl status NetworkManager 

Si NetworkManager no se está ejecutando, puede iniciarlo simplemente ejecutándolo.

# systemctl start NetworkManager

Para detener o desactivar NetworkManager por una razón u otra, emita el siguiente comando.

# systemctl stop NetworkManager

Si ha realizado algún cambio en los archivos de configuración de la interfaz o en la configuración del demonio NetworkManager (normalmente se encuentra en el directorio/etc/NetworkManager /), puede reiniciar (detener y luego iniciar) el NetworkManager para aplicar los cambios como se muestra.

# systemctl restart NetworkManager

Para volver a cargar la configuración del demonio NetworkManager (pero no el archivo de configuración de la unidad de systemd) sin reiniciar el servicio, ejecute el siguiente comando.

# systemctl reload NetworkManager

Uso de las herramientas de NetworkManager y trabajo con archivos ifcfg

NetworkManager admite algunas herramientas para que los usuarios interactúen con él, que son:

  1. nmcli: una herramienta de línea de comandos que se utiliza para configurar la red.
  2. nmtui: una interfaz de usuario de texto simple basada en curses, que también se utiliza para configurar y administrar las conexiones de la interfaz de red.
  3. Otras herramientas incluyen el editor de conexión nm, el centro de control y el ícono de conexión de red (todo bajo GUI).

Para enumerar los dispositivos detectados por NetworkManager, ejecute el comando nmcli.

 
# nmcli device 
OR
# nmcli device status

Para ver todas las conexiones activas, ejecute el siguiente comando (tenga en cuenta que sin el -a , enumera los perfiles de conexión disponibles).

# nmcli connection show -a

Los archivos de configuración específicos de la interfaz de red se encuentran en el directorio/etc/sysconfig/network-scripts /. Puede editar cualquiera de estos archivos, por ejemplo, para establecer una dirección IP estática para su servidor CentOS/RHEL 8.

# vi /etc/sysconfig/network-scripts/ifcfg-enp0s3

A continuación, se muestra una configuración de muestra para establecer una dirección IP estática.

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=enp0s3
UUID=e81c46b7-441a-4a63-b695-75d8fe633511
DEVICE=enp0s3
ONBOOT=yes
IPADDR=192.168.0.110
PREFIX=24
GATEWAY=192.168.0.1
DNS1=8.8.8.8
PEERDNS=no

Después de guardar los cambios, debe volver a cargar todos los perfiles de conexión o reiniciar NetworkManager para que se apliquen los nuevos cambios.

# nmcli connection reload
OR
# systemctl restart NetworkManager

Iniciar o detener scripts/servicios de red basados en la conectividad de red

NetworkManager tiene una opción útil que permite a los usuarios ejecutar servicios (como NFS, SMB, etc.) o scripts simples basados en la conectividad de la red.

Por ejemplo, si desea montar recursos compartidos NFS automáticamente después de cambiar entre redes. Es posible que desee que dichos servicios de red no se ejecuten hasta que NetworkManager esté en funcionamiento (todas las conexiones están activas).

Esta función la proporciona el servicio NetworkManager-dispatcher (que debe iniciarse y habilitarse para iniciarse automáticamente al arrancar el sistema). Una vez que el servicio se esté ejecutando, puede agregar sus scripts al directorio /etc/NetworkManager/dispatcher.d.

Todos los scripts deben ser ejecutables y escribibles, y deben ser propiedad de root, por ejemplo:

# chown root:root /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh
# chmod 755 /etc/NetworkManager/dispatcher.d/10-nfs-mount.sh

Importante: Los scripts del despachador se ejecutarán en orden alfabético en el momento de la conexión y en orden alfabético inverso en los momentos de desconexión.

Como mencionamos anteriormente, los scripts de red están en desuso en CentOS/RHEL 8 y no vienen instalados de forma predeterminada. Si aún desea utilizar los scripts de red, debe instalar el paquete de scripts de red.

# yum install network-scripts

Una vez instalado, este paquete proporciona una nueva versión de los scripts ifup e ifdown que llaman a NetworkManager a través de la herramienta nmcli que hemos visto anteriormente. Tenga en cuenta que NetworkManager debería estar ejecutándose para que pueda ejecutar estos scripts.

Para obtener más información, consulte las páginas de manual de systemctl y NetworkManager.

# man systemctl
# man NetworkManager

Eso es todo lo que preparamos en este artículo. Puede buscar aclaraciones sobre cualquiera de los puntos o hacer preguntas o agregar cualquier cosa a esta guía a través del formulario de comentarios a continuación.