Configurar red en CentOS 8 y RHEL 8

Al igual que vimos en versiones anteriores (Configurar red en CentOS 7 | RHEL 7), vamos a explicar cómo configurar la red en la nueva versión de Red Hat Enterprise Linux (RHEL 8), CentOS, Fedora y derivados.

La configuración no tiene demasiados cambios en la versión 8 respecto a la 7. Recordad que el comando ifconfig está obsoleto, es más, en el nuevo RHEL ya no está disponible:

[root@rhel8 ~]# ifconfig
-bash: ifconfig: command not found

El comando a utilizar es ip.

La nomenclatura de interfaces de red se mantiene respecto a RHEL 7 con «Predictable Network Interface Names», que asigna identificadores estables a las interfaces de red basándose en el tipo (local Ethernet, WLAN, WWAN) y evitar los problemas de la nomenclatura clásica. Se puede utiliza la clásica nomenclatura eth (ver configurar interfaces de red como «eth» en CentOS 7 y RHEL 7) pero no lo recomiendo.

El comando IP en RHEL y CentOS

En su día (¡año 2012!) ya hice un artículo dedicado para la utilización básica del comando IP junto con varios ejemplos incluyendo su equivalente de ifconfig, os recomiendo echar un vistazo antes de seguir con esta entrada si todavía no manejáis muy bien su funcionamiento. No obstante, iré explicando por aquí lo básico y necesario para configurar la red desde línea de comandos.

Configuración manual de red (línea de comandos)

Si queremos modificar manualmente la configuración de la red, no hay cambios respecto a las versiones anteriores. Los archivos que contienen la configuración de cada interfaz de red se encuentran en la siguiente ruta:

[root@rhel8 network-scripts]# pwd
/etc/sysconfig/network-scripts
[root@rhel8 network-scripts]# ls -l
total 4
-rw-r--r--. 1 root root 282 May 18 08:55 ifcfg-enp0s3

Es necesario editar el archivo de la interfaz que queremos configurar modificar según requerimientos:

Configuración IP dinámica DHCP

Para una configuración de IP dinámica (DHCP) no es necesario modificar nada. Es la configuración por defecto para cualquier interfaz que el sistema detecta. Ejemplo:

[root@rhel8 network-scripts]# cat ifcfg-enp0s3
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
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=2652fb77-6894-4126-9bf3-6c6b11b6e5ca
DEVICE=enp0s3
ONBOOT=yes

El parámetro BOOTPROTO=dhcp especifica que el arranque será por DHCP, mientras que el resto de parámetros se pueden dejar por defecto. Importante conocer:

  • ONBOOT=yes especifica que la interfaz se activará automáticamente al iniciar el sistema.
  • DEVICE=enp0s3 indica el dispositivo de red asociado a la interfaz.
  • UUID=2652fb77-6894-4126-9bf3-6c6b11b6e5ca es el identificador único a nivel lógico de la interfaz de red.
  • IPV6_* son todas las configuraciones de IPV6 que se establecen por defecto.
  • DEFROUTE=yes especifica si se utiliza la puertga de enlace por defecto (default gateway) del sistema.
  • HWADDR=»08:00:27:99:F6:7A» es opcional, indica la dirección física (MAC) de la tarjeta de red.

Configuración de IP estática

Si nos basamos en la configuración que hemos visto antes para DHCP, la configuración estática sólo requiere modificar el tipo de protocolo de arranque (BOOTPROTO) y la configuración específica IP (IPADDR y NETMASK), es decir, IP y máscara de red:

TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO="static"
IPADDR="192.168.1.199"
NETMASK="255.255.255.0"
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=2652fb77-6894-4126-9bf3-6c6b11b6e5ca
DEVICE=enp0s3
ONBOOT=yes

Aplicar cambios/reiniciar red

En versiones anteriores, para aplicar los cambios realizados en los archivos de configuración, era necesario reiniciar el servicio de Network Manager o la red (network). Son estos dos procesos:

[root@rhel8  ~]# systemctl status NetworkManager.service
● NetworkManager.service - Network Manager
   Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2019-07-13 11:07:06 CEST; 1s ago
     Docs: man:NetworkManager(8)
 Main PID: 1321 (NetworkManager)
    Tasks: 4 (limit: 12543)
   Memory: 3.5M
   CGroup: /system.slice/NetworkManager.service
           └─1321 /usr/sbin/NetworkManager --no-daemon

Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1006] device (enp0s3): state change: config -> ip-config (reason 'none', sys-iface-state: 'assume')
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1016] device (enp0s3): state change: ip-config -> ip-check (reason 'none', sys-iface-state: 'assume')
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1022] device (enp0s3): state change: ip-check -> secondaries (reason 'none', sys-iface-state: 'assume')
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1024] device (enp0s3): state change: secondaries -> activated (reason 'none', sys-iface-state: 'assume')
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1029] manager: NetworkManager state is now CONNECTED_LOCAL
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1109] manager: NetworkManager state is now CONNECTED_SITE
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1110] policy: set 'enp0s3' (enp0s3) as default for IPv4 routing and DNS
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1112] device (enp0s3): Activation: successful, device activated.
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1119] manager: NetworkManager state is now CONNECTED_GLOBAL
Jul 13 11:07:07 rhel8.localdomain NetworkManager[1321]:   [1563008827.1121] manager: startup complete
[root@rhel8 ~]# systemctl status network.target status
Unit status.service could not be found.
● network.target - Network
   Loaded: loaded (/usr/lib/systemd/system/network.target; static; vendor preset: disabled)
   Active: active since Sat 2019-07-13 10:45:48 CEST; 18min ago
     Docs: man:systemd.special(7)
           https://www.freedesktop.org/wiki/Software/systemd/NetworkTarget

Jul 13 10:45:48 rhel8.localdomain systemd[1]: Reached target Network.

En RHEL 8, no es necesario reiniciar ninguno de los dos, se debe hacer uso de los comandos nmcli para gestionar las interfaces:

IMPORTANTE: el reinicio, hacedlo desde una sesión local/consola y no vía SSH para evitar la posibilidad de perder acceso al sistema.

[root@rhel8 ~]# nmcli networking off
[root@rhel8 ~]# nmcli networking on

Ya sabéis que Network Manager a veces hace cosas raras. Si tuvierais cualquier problema, reiniciadlo:

[root@rhel8 ~]# systemctl restart NetworkManager

Recordad revisar la salida de ip addr para ver si la configuración aplicada es correcta:

[root@rhel8 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 08:00:27:7e:02:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global noprefixroute enp0s3
       valid_lft forever preferred_lft forever
    inet6 fe80::85f6:47ff:67f9:d880/64 scope link noprefixroute
       valid_lft forever preferred_lft forever

Configuración de Gateway, Hostname y DNS

La configuración del hostname la tenéis detallada en este otro artículo: Configurar hostname en RHEL 8 (y CentOS 8).

La configuración de puerta de enlace por defecto (GATEWAY) sigue siendo exactamente igual que en versiones anteriores. Especificadla en el archivo de configuración /etc/sysconfig/network:

[root@rhel8 ~]# cat /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=rhel8
GATEWAY=192.168.1.1

Recordad que podéis definir también GATEWAY específica por interfaz de red en el archivo de configuración que vimos al comienzo de la entrada con ese mismo parámetro. Por defecto, si os fijáis, la interfaz especifica en su archivo de configuración que se utilice la gateway por defecto:

DEFROUTE=yes

Los DNS, en lugar de configurarlos en /etc/resolv.conf, es preferible añadirlos dentro del fichero de configuración de la interfaz de red:

DNS1=xxx.xxx.xxx.xxx
DNS2=xxx.xxx.xxx.xxx
DOMAIN=lab.foo.com bar.foo.com

Configuración de red en modo gráfico

La configuración en modo gráfico, al igual que en versiones anteriores, se basa en Network Manager. Como ya comenté en entradas de versiones anteriores (RHEL7 / CentOS 7), es muy intuitivo.

Os dejo la misma captura de pantalla que utilicé en el post de configuración de RHEL7 del Network Manager disponible durante la instalación del SO. En RHEL8 son similares por no decir iguales. Simplemente se trata de añadir a mano en cada bloque la configuración que por línea de comandos establecíamos en archivos: IP, NETMASK, DNS, GATEWAY…

instalacion centos 8 network configuration