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.

Nota

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:

enrutamiento basado en políticas

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 es 198.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 es 192.0.2.2, y la red utiliza una máscara de red /30.
    • La interfaz enp8s0 está conectada a la subred 10.0.0.0/24 con estaciones de trabajo internas.
    • La interfaz enp9s0 está conectada a la subred 203.0.113.0/24 con los servidores de la empresa.
  • 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 red enp8s0 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 red enp9s0 del router.
  • El servicio firewalld está habilitado y activo.

Procedimiento

  1. 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-nameconnection_name: Establece el nombre del perfil. Utilice un nombre significativo para evitar confusiones.
    • ifnamenetwork_device: Establece la interfaz de red.
    • ipv4.method manual : Permite configurar una dirección IP estática.
    • ipv4.addressesIP_address/subnet_mask: Establece las direcciones IPv4 y la máscara de subred.
    • ipv4.gatewayIP_address: Establece la dirección de la puerta de enlace por defecto.
    • ipv4.dnsIP_of_DNS_server: Establece la dirección IPv4 del servidor DNS.
    • connection.zonefirewalld_zone: Asigna la interfaz de red a la zona firewalld definida. Tenga en cuenta que firewalld activa automáticamente el enmascaramiento para las interfaces asignadas a la zona external.
  2. 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 de ipv4.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.

  3. 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 ID 5000. Esta ruta estática para la subred 10.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 prioridad 5 que dirige el tráfico de la subred 10.0.0.0/24 a la tabla 5000. 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 comando ip route add, excepto que ipv4.routing-rules siempre requiere especificar una prioridad.

  4. 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

  1. En un host RHEL en la subred interna de la estación de trabajo:

    1. Instale el paquete traceroute:

      # yum install traceroute
    2. 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.

  2. En un host RHEL en la subred del servidor:

    1. Instale el paquete traceroute:

      # yum install traceroute
    2. 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:

  1. 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 default

    Por defecto, RHEL contiene reglas para las tablas local, main, y default.

  2. 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 102
  3. Muestra las interfaces y las zonas del cortafuegos:

    # firewall-cmd --get-active-zones
    external
      interfaces: enp1s0 enp7s0
    internal
      interfaces: enp8s0 enp9s0
  4. Compruebe 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 comando nmcli connection add, consulte la sección IPv4 settings en la página de manual nm-settings(5).
  • Para más detalles sobre los parámetros de connection.* que puede establecer en el comando nmcli connection add, consulte la sección Connection settings en la página de manual nm-settings(5).
  • Para más detalles sobre la gestión de las conexiones de NetworkManager utilizando nmcli, consulte la sección Connection management commands en la página man nmcli(1).