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 en función del 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:

  • The traditional ifcfg type configuration (eg. ifcfg-eth0, ifcfg-enp0s3) files are still supported.
  • Network scripts are deprecated and are no longer provided by default.
  • A minimal installation provides a new version of the ifup and ifdown scripts that call NetworkManager via the nmcli tool.
  • To run the ifup and ifdown scripts, NetworkManager must be running.

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 utilizando 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 ubicado 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 – a command-line tool used to configure networking.
  2. nmtui – a simple curses-based text user interface, which is also used to configure and manage newtwork interface connections.
  3. Other tools include the nm-connection-editor, control-center, and network connection icon (all under 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 según 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 u200bu200ben la conectividad de red.

Por ejemplo, si desea montar automáticamente un directorio remoto localmente con sshfs, monte recursos compartidos SMB o monte recursos compartidos NFS 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 que se inicie automáticamente en el inicio del 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 por defecto. 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 debe 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.