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…