Implementación de Túneles GRE y VPN IPsec en Entornos Linux

Clasificado en Informática

Escrito el en español con un tamaño de 5,15 KB

Configuración de Túneles GRE y VPN IPsec en Linux

Este documento detalla la configuración de un túnel GRE (Generic Routing Encapsulation) y una VPN IPsec (Internet Protocol Security) entre dos redes locales utilizando equipos Linux que actúan como routers.

1. Configuración de Túneles GRE

GRE es un protocolo de tunelización que permite encapsular paquetes IP dentro de otros paquetes IP (IP-sobre-IP). Esto crea un canal virtual seguro entre dos puntos, facilitando la comunicación entre redes distantes como si estuvieran directamente conectadas.

1.1. Escenario de Red

Tenemos dos redes locales con direcciones 192.168.1.0/24 y 192.168.2.0/24. Ambas se conectan a Internet mediante un equipo Linux que actúa como router. Las interfaces públicas de estos routers tienen las siguientes direcciones:

  • Router A (Red 192.168.1.0/24): 80.0.0.1
  • Router B (Red 192.168.2.0/24): 75.0.0.1

Crearemos un túnel GRE entre el Router A y el Router B utilizando sus interfaces públicas. Asignaremos a la nueva interfaz del túnel las direcciones 192.168.1.5 en el Router A y 192.168.2.5 en el Router B.

1.2. Configuración en Router A (Red 192.168.1.0/24)

En el Router A, ejecutaremos los siguientes comandos para establecer el túnel GRE:

ip tunnel add redB mode gre remote 75.0.0.1 local 80.0.0.1 ttl 255
ip link set redB up
ip addr add 192.168.1.5 dev redB
ip route add 192.168.2.0/24 dev redB

1.3. Configuración en Router B (Red 192.168.2.0/24)

En el Router B, ejecutaremos los siguientes comandos para establecer el túnel GRE:

ip tunnel add redA mode gre remote 80.0.0.1 local 75.0.0.1 ttl 255
ip link set redA up
ip addr add 192.168.2.5 dev redA
ip route add 192.168.1.0/24 dev redA

Nota: Los valores como las direcciones IP y los nombres de las interfaces (redA, redB) son parámetros que deben ajustarse según su configuración específica.

2. Configuración de VPN con IPsec

Una VPN (Red Privada Virtual) es una red privada que combina la tunelización (como GRE) con la encriptación de datos, generalmente utilizando el protocolo IPsec. Esto garantiza la confidencialidad e integridad de la información transmitida a través de redes públicas.

Para la configuración de la VPN con IPsec, asumimos que el túnel GRE ya ha sido establecido como se describe en la sección anterior.

2.1. Configuración en Router A (Red 192.168.1.0/24)

En el Router A, configuraremos las políticas de seguridad IPsec:

2.1.1. Configuración IPsec
#!/usr/sbin/setkey -f
flush;
spdflush;

# AH (Authentication Header)
add 80.0.0.1 75.0.0.1 ah 15700 -A hmac-md5 "1234567890123456";
add 75.0.0.1 80.0.0.1 ah 24500 -A hmac-md5 "1234567890123456";

# ESP (Encapsulating Security Payload)
add 80.0.0.1 75.0.0.1 esp 15701 -E 3des-cbc "123456789012123456789012";
add 75.0.0.1 80.0.0.1 esp 24501 -E 3des-cbc "123456789012123456789012";

# SPD (Security Policy Database)
spdadd 80.0.0.1 75.0.0.1 any -P out ipsec esp/transport//require ah/transport//require;
spdadd 75.0.0.1 80.0.0.1 any -P in ipsec esp/transport//require ah/transport//require;

2.2. Configuración en Router B (Red 192.168.2.0/24)

En el Router B, configuraremos las políticas de seguridad IPsec:

2.2.1. Configuración IPsec
#!/usr/sbin/setkey -f
flush;
spdflush;

# AH (Authentication Header)
add 80.0.0.1 75.0.0.1 ah 15700 -A hmac-md5 "1234567890123456";
add 75.0.0.1 80.0.0.1 ah 24500 -A hmac-md5 "1234567890123456";

# ESP (Encapsulating Security Payload)
add 80.0.0.1 75.0.0.1 esp 15701 -E 3des-cbc "123456789012123456789012";
add 75.0.0.1 80.0.0.1 esp 24501 -E 3des-cbc "123456789012123456789012";

# SPD (Security Policy Database)
spdadd 80.0.0.1 75.0.0.1 any -P in ipsec esp/transport//require ah/transport//require;
spdadd 75.0.0.1 80.0.0.1 any -P out ipsec esp/transport//require ah/transport//require;

3. Conceptos Adicionales de Configuración de Red

A continuación, se definen algunos parámetros relacionados con la configuración de red, posiblemente en el contexto de control de tráfico o calidad de servicio (QoS):

  • DELAY_POOLS: Representa el número de reglas de retardo o colas configuradas.
  • DELAY_CLASS: Este parámetro toma dos argumentos: el primero es el identificador de la regla y el segundo es el tipo de la regla.
  • DELAY_PARAMETERS: Establece los valores específicos para una regla de retardo. Los argumentos de este parámetro son parejas de valores velocidad/tamaño, donde velocidad es un número entero que indica una velocidad en bytes por segundo.

Entradas relacionadas: