Serie RHCE: Cómo configurar y probar el enrutamiento de red estático - Parte 1


RHCE (Red Hat Certified Engineer) es una certificación de la empresa Red Hat, que brinda un sistema operativo y software de código abierto a la comunidad empresarial, además brinda servicios de capacitación, soporte y consultoría para las empresas.

Este RHCE (Red Hat Certified Engineer) es un examen basado en el rendimiento (nombre en clave EX300), que posee las habilidades, conocimientos y habilidades adicionales requeridos por un administrador de sistemas senior responsable de los sistemas Red Hat Enterprise Linux (RHEL).

Importante: Se requiere la certificación Red Hat Certified System Administrator (RHCSA) para obtener la certificación RHCE.

Los siguientes son los objetivos del examen basados en la versión Red Hat Enterprise Linux 7 del examen, que se tratarán en esta serie RHCE:

Para ver las tarifas y registrarse para un examen en su país, consulte la página de Certificación RHCE.

En esta Parte 1 de la serie RHCE y en la siguiente, presentaremos casos básicos, aunque típicos, en los que entran en juego los principios de enrutamiento estático, filtrado de paquetes y traducción de direcciones de red.

Tenga en cuenta que no los cubriremos en profundidad, sino que organizaremos estos contenidos de tal manera que sea útil para dar los primeros pasos y construir a partir de ahí.

Enrutamiento estático en Red Hat Enterprise Linux 7

Una de las maravillas de las redes modernas es la gran disponibilidad de dispositivos que pueden conectar grupos de computadoras, ya sea en cantidades relativamente pequeñas y confinadas a una sola habitación o varias máquinas en el mismo edificio, ciudad, país o en todos los continentes.

Sin embargo, para lograr esto de manera efectiva en cualquier situación, los paquetes de red deben enrutarse, o en otras palabras, la ruta que siguen desde el origen al destino debe regirse de alguna manera.

El enrutamiento estático es el proceso de especificar una ruta para paquetes de red que no sea la predeterminada, que es proporcionada por un dispositivo de red conocido como puerta de enlace predeterminada. A menos que se especifique lo contrario mediante enrutamiento estático, los paquetes de red se dirigen a la puerta de enlace predeterminada; con el enrutamiento estático, otras rutas se definen en función de criterios predefinidos, como el destino del paquete.

Definamos el siguiente escenario para este tutorial. Tenemos una caja Red Hat Enterprise Linux 7 que se conecta al enrutador # 1 [192.168.0.1] para acceder a Internet y a las máquinas en 192.168.0.0/24.

Un segundo enrutador (enrutador n. ° 2) tiene dos tarjetas de interfaz de red: enp0s3 también está conectado al enrutador n. ° 1 para acceder a Internet y comunicarse con la caja RHEL 7 y otras máquinas en la misma red, mientras que se usa la otra (enp0s8) para otorgar acceso a la red 10.0.0.0/24 donde residen los servicios internos, como un servidor web y/o de base de datos.

Este escenario se ilustra en el diagrama siguiente:

En este artículo nos centraremos exclusivamente en configurar la tabla de enrutamiento en nuestra caja RHEL 7 para asegurarnos de que pueda acceder a Internet a través del enrutador n. ° 1 y a la red interna a través del enrutador n. ° 2.

En RHEL 7, utilizará el comando ip para configurar y mostrar dispositivos y enrutamiento mediante la línea de comando. Estos cambios pueden tener efecto inmediatamente en un sistema en ejecución, pero dado que no son persistentes tras reiniciar, usaremos los archivos ifcfg-enp0sX y route-enp0sX dentro de/etc/sysconfig/network-scripts para guardar nuestra configuración de forma permanente.

Para comenzar, imprimamos nuestra tabla de enrutamiento actual:

# ip route show

De la salida anterior, podemos ver los siguientes hechos:

  1. La dirección IP de la puerta de enlace predeterminada es 192.168.0.1 y se puede acceder a ella a través de la NIC enp0s3.
  2. Cuando el sistema arrancó, habilitó la ruta zeroconf a 169.254.0.0/16 (por si acaso). En pocas palabras, si una máquina está configurada para obtener una dirección IP a través de DHCP pero no lo hace por alguna razón, se le asigna automáticamente una dirección en esta red. En resumen, esta ruta nos permitirá comunicarnos, también a través de enp0s3, con otras máquinas que no han podido obtener una dirección IP de un servidor DHCP.
  3. Por último, pero no menos importante, podemos comunicarnos con otras cajas dentro de la red 192.168.0.0/24 a través de enp0s3, cuya dirección IP es 192.168.0.18.

Estas son las tareas típicas que tendría que realizar en un entorno de este tipo. A menos que se especifique lo contrario, las siguientes tareas deben realizarse en el enrutador n. ° 2:

Asegúrese de que todas las NIC se hayan instalado correctamente:

# ip link show

Si uno de ellos está caído, sácalo:

# ip link set dev enp0s8 up

y asignarle una dirección IP en la red 10.0.0.0/24:

# ip addr add 10.0.0.17 dev enp0s8

¡UPS! Cometimos un error en la dirección IP. Tendremos que eliminar el que asignamos anteriormente y luego agregar el correcto (10.0.0.18):

# ip addr del 10.0.0.17 dev enp0s8
# ip addr add 10.0.0.18 dev enp0s8

Ahora, tenga en cuenta que solo puede agregar una ruta a una red de destino a través de una puerta de enlace que ya sea accesible. Por esa razón, necesitamos asignar una dirección IP dentro del rango 192.168.0.0/24 a enp0s3 para que nuestra caja RHEL 7 pueda comunicarse con él:

# ip addr add 192.168.0.19 dev enp0s3

Finalmente, necesitaremos habilitar el reenvío de paquetes:

# echo "1" > /proc/sys/net/ipv4/ip_forward

y detenga/deshabilite (solo por el momento, hasta que cubramos el filtrado de paquetes en el próximo artículo) el firewall:

# systemctl stop firewalld
# systemctl disable firewalld

De vuelta en nuestro cuadro RHEL 7 (192.168.0.18), configuremos una ruta a 10.0.0.0/24 a través de 192.168.0.19 (enp0s3 en el enrutador n. ° 2):

# ip route add 10.0.0.0/24 via 192.168.0.19

Después de eso, la tabla de enrutamiento tiene el siguiente aspecto:

# ip route show

Del mismo modo, agregue la ruta correspondiente en las máquinas a las que está tratando de llegar en 10.0.0.0/24:

# ip route add 192.168.0.0/24 via 10.0.0.18

Puede probar la conectividad básica usando ping:

En el cuadro RHEL 7, ejecute

# ping -c 4 10.0.0.20

donde 10.0.0.20 es la dirección IP de un servidor web en la red 10.0.0.0/24.

En el servidor web (10.0.0.20), ejecute

# ping -c 192.168.0.18

donde 192.168.0.18 es, como recordará, la dirección IP de nuestra máquina RHEL 7.

Alternativamente, podemos usar tcpdump (es posible que deba instalarlo con yum install tcpdump) para verificar la comunicación bidireccional sobre TCP entre nuestra caja RHEL 7 y el servidor web en 10.0.0.20.

Para hacerlo, comencemos el registro en la primera máquina con:

# tcpdump -qnnvvv -i enp0s3 host 10.0.0.20

y desde otra terminal en el mismo sistema, hagamos telnet al puerto 80 en el servidor web (suponiendo que Apache esté escuchando en ese puerto; de lo contrario, indique el puerto correcto en el siguiente comando):

# telnet 10.0.0.20 80

El registro de tcpdump debe tener el siguiente aspecto:

Donde la conexión se ha inicializado correctamente, como podemos ver al observar la comunicación bidireccional entre nuestra caja RHEL 7 (192.168.0.18) y el servidor web (10.0.0.20).

Recuerde que estos cambios desaparecerán cuando reinicie el sistema. Si desea que sean persistentes, deberá editar (o crear, si aún no existen) los siguientes archivos, en los mismos sistemas en los que ejecutamos los comandos anteriores.

Aunque no es estrictamente necesario para nuestro caso de prueba, debe saber que/etc/sysconfig/network contiene parámetros de red para todo el sistema. Un/etc/sysconfig/network típico tiene el siguiente aspecto:

# Enable networking on this system?
NETWORKING=yes
# Hostname. Should match the value in /etc/hostname
HOSTNAME=yourhostnamehere
# Default gateway
GATEWAY=XXX.XXX.XXX.XXX
# Device used to connect to default gateway. Replace X with the appropriate number.
GATEWAYDEV=enp0sX

Cuando se trata de configurar variables y valores específicos para cada NIC (como hicimos para el enrutador n. ° 2), tendrá que editar/etc/sysconfig/network-scripts/ifcfg-enp0s3 y/etc/sysconfig/network-scripts/ifcfg -enp0s8.

Siguiendo nuestro caso,

TYPE=Ethernet
BOOTPROTO=static
IPADDR=192.168.0.19
NETMASK=255.255.255.0
GATEWAY=192.168.0.1
NAME=enp0s3
ONBOOT=yes

y

TYPE=Ethernet
BOOTPROTO=static
IPADDR=10.0.0.18
NETMASK=255.255.255.0
GATEWAY=10.0.0.1
NAME=enp0s8
ONBOOT=yes

para enp0s3 y enp0s8, respectivamente.

En cuanto al enrutamiento en nuestra máquina cliente (192.168.0.18), necesitaremos editar/etc/sysconfig/network-scripts/route-enp0s3:

10.0.0.0/24 via 192.168.0.19 dev enp0s3

Ahora reinicie su sistema y debería ver esa ruta en su tabla.

Resumen

En este artículo hemos cubierto los aspectos básicos del enrutamiento estático en Red Hat Enterprise Linux 7. Aunque los escenarios pueden variar, el caso que se presenta aquí ilustra los principios y procedimientos necesarios para realizar esta tarea. Antes de terminar, me gustaría sugerirle que eche un vistazo al Capítulo 4 de la sección Protección y optimización de Linux en el sitio del Proyecto de documentación de Linux para obtener más detalles sobre los temas que se tratan aquí.

Libro electrónico gratuito sobre protección y optimización de Linux: la solución de piratería (v.3.0): este libro electrónico de más de 800 contiene una colección completa de consejos de seguridad de Linux y cómo usarlos de manera segura y fácil para configurar aplicaciones y servicios basados en Linux.

En el próximo artículo hablaremos sobre el filtrado de paquetes y la traducción de direcciones de red para resumir las habilidades básicas de redes necesarias para la certificación RHCE.

Como siempre, esperamos tener noticias tuyas, así que no dudes en dejar tus preguntas, comentarios y sugerencias mediante el formulario a continuación.