Cómo configurar una VPN site-to-site desde Fortigate a AWS VGW.

En el siguiente post les quiero mostrar como configurar paso a paso una VPN site-to-site desde On-premise a AWS utilizando un Fortinet 40F. A pesar que hay muchas formas de configurarla VPN me enfocaré en enrutamiento estático y utilizando un Virtual Private Gateway.

A lo largo del post les mostraré lo siguiente:

1- Conceptos generales.

2- Creación de un Customer Gateway.

3- Creación de un Virtual Private Gateway.

4- Creación del Túnel desde AWS.

5- Configuración de reglas de tráfico en AWS.

6- Creación del Túnel en Fortinet.

7- Configuración de reglas de tráfico en Fortinet.

8- Monitoreo

9- Lecciones aprendidas

  • Customer gateway: Es un dispositivo físico o una aplicación de software del lado de on-premise para hacer la conexión VPN. Para nuestro ejemplo será el Fortinet 40F.
  • Virtual Gateway: Es el concentrador del lado de AWS para construir la VPN.
  • Static Routing: Ocurre cuando un router usa una entrada de enrutamiento configurada manualmente.
  • Dynamic Routing: es una técnica en donde el Router aprende sobre el enrutamiento de froma automática para seleccionar la mejor ruta.

En VPC > Customer Gateways > Create Customer Gateway.

En IP Address se debe especificar la IP pública del Fortinet on-premise y en Routing vamos a dejar Static.

Creación de CGW

Después de crearlo esperamos a que el State quede en available.

En VPC > Virtual Private Gateways > Create Virtual Private Gateways

Solo debemos asignarle un nombre y dejaremos el ASN como Amazon default ASN.

Creación de VGW

Una vez creado el State queda en detached esperando que sea asociado a una VPC.

Se debe seleccionar el VGW creado y see debe asociar a una VPC, la cual vamos a conectar con On-premise.

Asociación de VGW a VPC

Una vez asociado el VGW a la VPC el state cambiará a attached.

Después de haber creado el Customer Gateway y el Virtual Private Gateway, debemos crear el tunel.

En VPC > Site-to-Site VPN Connections > Create VPN Connection

Creando la conexión VPN debemos asociar el Customer Gateway y el Virtual Private Gateway creados anteriormente.

A continuación debemos diligenciar la información sobre:

  • IP Prefixes: hace referencia al CIDR de la red on-premises.
  • Local IPv4 Network Cidr: hace referencia al CIDR de la red on-premises.
  • Local IPv4 Network Cidr: hace referencia al CIDR de la VPC en AWS.

Las demás opciones se deben dejar en blanco.

La tabla de enrutamiento asociada a las subredes donde tenemos nuestras EC2 debe editarse para que pueda envíar el tráfico al túnel VPN.

Configuración de la tabla de enrutamiento

Se debe permitir el tráfico que necesitemos desde el on-premise utilizando el CIDR. En este caso estoy permitiendo todo el tráfico pero se debe ajustar de acuerdo a nuestros requerimientos de

Configuración de Security Group

Para la creación del túnel en el Fortinet podemos dirigirnos a En VPC > Site-to-Site VPN Connections y vamos a descargar cómo debería ser la configuración de nuestro device on-premise.

Descargar configuración para on-premise.

Cuando damos click en Download Configuration podemos seleccionar el tipo de dispositivo on-premise y la versión del SO, en mi caso es un Fortigate 40+. Esto nos descarga un archivo de texto que indica todas las instrucciones para la creación de la VPN.

Descargar configuración para Fortinet 40+

En la interfaz gráfica del fortinet nos vamos a VPN > IPsec Tunnels y damos click en Create New. Después debemos seleccionar Custom.

Paso 1 — Configuración Túnel VPN Fortinet

En esta parte debemos completar la siguiente información:

  • IP Address: Es la IP pública de uno de los 2 túneles en AWS. Para este caso utilizaremos 13.56.106.130.

Los cuales los podemos ver en AWS en VPC > Site-to-Site VPN Connections y en la parte inferior seleccionamos la tab Tunnel Details.

  • Interface: Seleccionamos la interface configurada en nuestro Fortinet que tiene la conexión WAN.

En esta parte debemos agregar la Pre-Shared key que se encuentra en el archivo de configuración descargado en el paso 6.1.

En esta parte debemos únicamente dejar una fila para Encryption y en Diffie-Hellman Group solo seleccionar el 2.

Aca dejamos la opción en Disabled.

Para esta parte debmos dejar la configuración como la vemos en cuanto a Local Address y Remote Address.

Es importante dejar solo un Encryption con AES128, seleccionar Diffie-Hellman Group en 2 y habilitar el Auto-negotiate.

En Network > Interfaces debemos seleccionar debajo de WAN nuestra conexión VPN y agregar los datos de conectividad interna (Ver 6.2.1) con el túnel en AWS, también debemos habilitar el PING.

En Policy & Objects > Addresses agregar el rando de direcciones de la VPC para posteriormente utilizarla en las rutas estáticas.

En Network > Static Routes damos click en Create New y se debe crear una ruta que permita que todo el tráfico que va hacía AWS salga por la interface VPN.

También debemos configurar una ruta estática del tráfico que venga desde la VPN a nuestras direcciones internas.

En policy & Objects se deben agregar dos reglas, una para que todo el tráfico que venga de la VPN pueda llegar a nuestra red interna y otra regla para que haga lo contrario.

Esta política permitirá que todo. eltráfico que venga de la VPN pueda alcanzar la red interna.

Esta política permitirá que todo eln tráfico que venga de la red interna pueda alcanzar la VPN.

En AWS CloudWatch podemos configurar métricas por canal para ver la cantidad de datos de entrada y de salida por cada tunel. Se debe hacer con las métricas TunnelDataIn y TunnelDataOut.

Métricas de Monitoreo del Túnel

También podemos agregar un estado para verificar cuando el tune este caido, esta métricas se llama TunnelState.

Estas métricas de monitoreo son del lado de AWS, para el lado del Fortinet se tienen otros mecanismos de monitoreo como ver en Policy & Objects > Ipv4 Policy y ver la cantidad de tráfico por cada una de las reglas (ver 7.3). Para este escenario vemos trafico tanto de salida (3.67MB) como de entrada (2.62MB).

  • Al crear una conexión con enrutamiento estático es importante saber que si no hay tráfico el túnel por defecto se cae. Para evitar esto se debe configurar del lado del fortinet un vdom que va a mantener un ping en la VPN.
  • Si comparamos el enrutamiento estático vs el dinámico, será mejor utilizar dinámico dado que nos ayudará a mantener el túnel levantado siempre.
  • En este post se configuro solo uno de los túneles, pero tenga en cuenta que AWS provee por defecto dos para mantener alta disponibilidad. Lo recomendado siempre es configurar todos los túneles.
  • Se puede cambiar el modo de la VPN creada para usar Transit Gateway siguiendo estos sencillos pasos.
  • La diferencia al configurar una VPN con enrutamiento dinámico (BGP) requiere más configuración del lado on-premises dependiendo del dispositivo que tengamos. Por ejemplo para Fortinet pueden hacerlo consultando el siguiente link.

Carlos Zambrano

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.

AWS x10, Tech Director en Globant con más de 7 años de experiencia en AWS.