Red Hat Training
A Red Hat training course is available for RHEL 8
Capítulo 20. Configuración del enrutamiento basado en políticas para definir rutas alternativas
Por defecto, el kernel de RHEL decide dónde reenviar los paquetes de red en función de la dirección de destino utilizando una tabla de enrutamiento. El enrutamiento basado en políticas le permite configurar escenarios de enrutamiento complejos. Por ejemplo, puede enrutar los paquetes basándose en varios criterios, como la dirección de origen, los metadatos del paquete o el protocolo.
Esta sección describe cómo configurar el enrutamiento basado en políticas utilizando NetworkManager.
En los sistemas que utilizan NetworkManager, sólo la utilidad nmcli
permite establecer reglas de enrutamiento y asignar rutas a tablas específicas.
20.1. Enrutamiento del tráfico de una subred específica a una puerta de enlace predeterminada diferente utilizando NetworkManager
Esta sección describe cómo configurar RHEL como un enrutador que, por defecto, enruta todo el tráfico al proveedor de Internet A utilizando la ruta por defecto. Utilizando el enrutamiento basado en políticas, RHEL enruta el tráfico recibido desde la subred de las estaciones de trabajo internas hacia el proveedor B.
El procedimiento supone la siguiente topología de red:
Requisitos previos
-
El sistema utiliza
NetworkManager
para configurar la red, que es la predeterminada en RHEL 8. El router RHEL que se quiere configurar en el procedimiento tiene cuatro interfaces de red:
-
La interfaz
enp7s0
está conectada a la red del proveedor A. La IP de la pasarela en la red del proveedor es198.51.100.2
, y la red utiliza una máscara de red/30
. -
La interfaz
enp1s0
está conectada a la red del proveedor B. La IP de la pasarela en la red del proveedor es192.0.2.2
, y la red utiliza una máscara de red/30
. -
La interfaz
enp8s0
está conectada a la subred10.0.0.0/24
con estaciones de trabajo internas. -
La interfaz
enp9s0
está conectada a la subred203.0.113.0/24
con los servidores de la empresa.
-
La interfaz
-
Los hosts de la subred de las estaciones de trabajo internas utilizan
10.0.0.1
como pasarela por defecto. En el procedimiento, se asigna esta dirección IP a la interfaz de redenp8s0
del router. -
Los hosts de la subred del servidor utilizan
203.0.113.1
como pasarela por defecto. En el procedimiento, se asigna esta dirección IP a la interfaz de redenp9s0
del router. -
El servicio
firewalld
está habilitado y activo.
Procedimiento
Configure la interfaz de red para el proveedor A:
#
nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external
El comando
nmcli connection add
crea un perfil de conexión de NetworkManager. La siguiente lista describe las opciones del comando:-
type
ethernet
: Define que el tipo de conexión es Ethernet. -
con-name
connection_name
: Establece el nombre del perfil. Utilice un nombre significativo para evitar confusiones. -
ifname
network_device
: Establece la interfaz de red. -
ipv4.method
manual
: Permite configurar una dirección IP estática. -
ipv4.addresses
IP_address/subnet_mask
: Establece las direcciones IPv4 y la máscara de subred. -
ipv4.gateway
IP_address
: Establece la dirección de la puerta de enlace por defecto. -
ipv4.dns
IP_of_DNS_server
: Establece la dirección IPv4 del servidor DNS. -
connection.zone
firewalld_zone
: Asigna la interfaz de red a la zonafirewalld
definida. Tenga en cuenta quefirewalld
activa automáticamente el enmascaramiento para las interfaces asignadas a la zonaexternal
.
-
Configure la interfaz de red para el proveedor B:
#
nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/0 192.0.2.2 table=5000" connection.zone external
Este comando utiliza el parámetro
ipv4.routes
en lugar deipv4.gateway
para establecer la puerta de enlace predeterminada. Esto es necesario para asignar la puerta de enlace por defecto para esta conexión a una tabla de enrutamiento diferente (5000
) a la predeterminada. NetworkManager crea automáticamente esta nueva tabla de enrutamiento cuando se activa la conexión.Configure la interfaz de red a la subred de las estaciones de trabajo internas:
#
nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 src=192.0.2.1 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone internal
Este comando utiliza el parámetro
ipv4.routes
para añadir una ruta estática a la tabla de enrutamiento con el ID5000
. Esta ruta estática para la subred10.0.0.0/24
utiliza la IP de la interfaz de la red local al proveedor B (192.0.2.1
) como siguiente salto.Además, el comando utiliza el parámetro
ipv4.routing-rules
para añadir una regla de enrutamiento con prioridad5
que dirige el tráfico de la subred10.0.0.0/24
a la tabla5000
. Los valores bajos tienen una prioridad alta.Tenga en cuenta que la sintaxis del parámetro
ipv4.routing-rules
es la misma que la de un comandoip route add
, excepto queipv4.routing-rules
siempre requiere especificar una prioridad.Configure la interfaz de red a la subred del servidor:
#
nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone internal
Pasos de verificación
En un host RHEL en la subred interna de la estación de trabajo:
Instale el paquete
traceroute
:#
yum install traceroute
Utilice la utilidad
traceroute
para mostrar la ruta a un host en Internet:#
traceroute redhat.com
traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.1 (192.0.2.1) 0.884 ms 1.066 ms 1.248 ms ...La salida del comando muestra que el router envía paquetes a través de
192.0.2.1
, que es la red del proveedor B.
En un host RHEL en la subred del servidor:
Instale el paquete
traceroute
:#
yum install traceroute
Utilice la utilidad
traceroute
para mostrar la ruta a un host en Internet:#
traceroute redhat.com
traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...La salida del comando muestra que el router envía paquetes a través de
198.51.100.2
, que es la red del proveedor A.
Pasos para la resolución de problemas
En el router RHEL:
Muestra la lista de reglas:
#
ip rule list
0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup defaultPor defecto, RHEL contiene reglas para las tablas
local
,main
, ydefault
.Muestra las rutas en la tabla
5000
:#
ip route list table 5000
0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102Muestra las interfaces y las zonas del cortafuegos:
#
firewall-cmd --get-active-zones
external interfaces: enp1s0 enp7s0 internal interfaces: enp8s0 enp9s0Compruebe que la zona
external
tiene activado el enmascaramiento:#
firewall-cmd --info-zone=external
external (active) target: default icmp-block-inversion: no interfaces: enp1s0 enp7s0 sources: services: ssh ports: protocols: masquerade: yes ...
Recursos adicionales
-
Para más detalles sobre los parámetros de
ipv4.*
que puede establecer en el comandonmcli connection add
, consulte la secciónIPv4 settings
en la página de manualnm-settings(5)
. -
Para más detalles sobre los parámetros de
connection.*
que puede establecer en el comandonmcli connection add
, consulte la secciónConnection settings
en la página de manualnm-settings(5)
. -
Para más detalles sobre la gestión de las conexiones de NetworkManager utilizando
nmcli
, consulte la secciónConnection management commands
en la página mannmcli(1)
.