Blog de Amazon Web Services (AWS)
AWS Transit gateway: Una nueva forma de interconectar redes en AWS y su centro de datos local
Por Jesús Humberto Contreras Rancurello, Arquitecto de Soluciones, AWS México
Es muy común que nuestros clientes requieran conectar sus centros de datos locales hacia su red en AWS, a la que comúnmente llamamos Virtual Private Cloud o VPC. Esta configuración puede ser realizada a través de un Virtual Private Gateway (VGW), servicio que ha existido en AWS desde hace ya mucho tiempo.
Si se deseaba conectar varios centros de datos hacia diferentes VPCs, el reto de configuración era mayor, ya que se requería realizar una VPN hacia cada VPC o en su caso, utilizar un producto de terceros para realizar el en rutamiento necesario dentro de AWS.
Debido al alto número de clientes que requieren esta configuración, AWS anunció durante el pasado re:Invent 2018 un nuevo servicio llamado AWS Transit Gateway (TGW), mismo que permite interconectar hasta 5,000 VPCs y redes locales de forma centralizada.
AWS Transit gateway no es un dispositivo físico como podríamos imaginarlo, sino un servicio distribuido, flexible y altamente disponible creado para satisfacer las necesidades de clientes que desean interconectar varias redes locales y redes en la nube (incluso de diferentes cuentas y/o regiones de AWS) hacia un punto único, el cual toma las decisiones de enrutamiento adecuadas.
En este post realizaremos la configuración necesaria para interconectar cuatro VPCs y una VPN hacia un centro de datos local utilizando un TGW, una arquitectura de uso muy recurrente.
En un mismo TGW es posible crear diferentes caminos para el tráfico utilizando “dominios de enrutamiento”, donde puede crear topologías de red flexibles que hagan sentido para su negocio.
Principales características del TGW:
- Interconexión de múltiples VPCs
- Consolidación de conecitividad en la frontera
- Flexibilidad utilizando dominios de enrutamiento
Antes de contar con el servicio de TGW, en un escenario tradicional de interconexiones de VPCs existían dos caminos:
- Realizar una arquitectura de Transit VPC, la cual concentraba todo el tráfico en un VPC y, utilizando un producto de terceros, este realizaba el enrutamiento necesario para enviar cada paquete de forma correcta a su destino final.
- Interconectar cada VPC de forma 1:1 utilizando VPC Peering y de esta forma crear un “full mesh” (fig1).
Fig 1
Ahora simplemente podemos interconectar los VPCs deseados utilizando un TGW como punto central. (fig2)
Fig 2
El mismo caso sucede con redes locales conectadas hacia uno o varios VPCs. Antes era necesario realizar una conexión VPN hacia cada VPC. La misma se realizaba utilizando un VGW como terminación en cada VPC y un Customer Gateway (CGW) del lado de la red local (fig3). Ahora, utilizando un TGW, es posible realizar una única conexión entre las redes locales a interconectar con su TGW para después, vía reglas de enrutamiento, dirigir el tráfico hacia el destino deseado (fig4).
Fig 3
Fig 4
Debido a que de forma natural el VGW y el TGW tienen alta disponibilidad, para contar con completa redundancia en el escenario descrito en la figura 3, era necesario contar con dos CGWs (fig5).
Fig 5
Utilizando un TGW, el mismo caso aplica para contar con redundancia local. Por lo tanto, la topología quedaría de la siguiente forma (fig6):
Fig 6
Existen dos conceptos fundamentales al hablar de un AWS Transit Gateway:
- Interconexiones
- Tablas de enrutamiento (Asociación y Propagación)
Las interconexiones se realizan cada vez que conectamos un VPC o una VPN hacia un TGW (fig6.1)
fig 6.1
Dentro de un TGW existe una tabla de enrutamiento base que al inicio está vacía (fig6.2)
fig 6.2
Al momento de realizar la asociación de los VPCs al TGW (fig6.3), el direccionamiento de red de la VPC se propaga hacia la tabla de enrutamiento (fig6.4)
fig 6.3
fig 6.4
¿Y qué sucede del lado de los VPCs? Se requiere ir a las tablas de enrutamietno de cada VPC y crear las rutas necesarias para conocer el camino de salida del tráfico (fig6.5).
fig 6.5
Imaginemos que el cliente A cuenta con cuatro VPCs que desea interconectar entre ellos (fig7) y también con el centro de datos local. La topología deseada se muestra en la figura 8
Fig 7
Fig 8
El primer paso a realizar es crear un TGW (fig9). Lo único necesario para crearlo es asignarle un nombre. Dejaremos todo lo adicional con los valores por defecto.
Fig 9
Después de crearlo, en alrededor de 2 minutos pasará de estado pendiente (fig10) a disponible (fig11)
Fig 10
Fig 11
Cabe recordar que un TGW es regional, por lo tanto, cuenta con alta disponibilidad y escalabilidad de forma automática.
El siguiente paso es conectar los VPCs deseados al TGW. Esta tarea es muy sencilla:
1. Haga clic en “Transit Gateway Attachments”
2. Seleccione el TGW a utilizar
3. Seleccione el tipo de conexión (VPC o VPN). En este caso usaremos el tipo de conexión VPC.
4. Asigne un nombre a la conexión
5. Seleccione el VPC a conectar
6. Elija las subredes que participarán en la conexión
Los pasos anteriores se muestran en la figura 12
Fig 12
Repetimos el proceso cuatro veces para configurar las conexiones a los cuatro VPCs que deseamos interconectar (fig13). Todas pasarán de estatus “pending” a “available”.
Fig 13
El siguiente paso es asegurarnos de que los CIDRs de cada VPC sean conocidos por el TGW. Para ello debemos revisar la tabla de enrutamiento del TGW y validar que existan las rutas adecuadas (fig14)
Fig 14
Ahora debemos pensar cómo será el camino de regreso, es decir, de cada uno de los VPCs hacia el TGW y para ello, es necesario modificar las tablas de enrutamiento de cada uno de los VPCs y hacerles saber hacia donde enviar el tráfico.
Debido a que en este ejemplo estoy utilizando CIDRs similares (172.X.0.0/16), podré agregar un 172.0.0.0/8 a la tabla de enrutamiento de cada VPC y dirigiré este tráfico hacia el TGW (fig15 y fig16)
Fig 15
Fig 16
Ahora, ¿cómo sabemos si está funcionando? ¡Muy sencillo! Estos son los pasos que podemos seguir:
Puede lanzar una instancia EC2 con Amazon Linux en cada uno de los VPCs conectados vía el TGW. (Fig17)
Fig 17
Después, conéctese a una de ellas (fig18)
Fig 18
En este caso, podemos validar que dicha instancia se encuentra en el VPC default ya que tiene el siguiente direccionamiento de red:
Ahora probamos un ping desde esta instancia hacia las demás, mismas que cuentan con las siguientes direcciones IP privadas:
- InstanciaEnVPCDefault – 172.31.8.71
- InstanciaEnVPC2 – 172.16.1.72
- InstanciaEnVPC3 – 172.17.1.88
- InstanciaEnVPC4 – 172.18.1.238
Aquí los resultados de las pruebas de comunicación (fig20):
Fig 20
Esto demuestra que existe interconectividad entre los cuatro VPCs creados.
Ahora, volviendo al escenario inicial en donde necesitamos conectar estos cuatro VPCs hacia un centro de datos local utilizando una única conexión, estos son los pasos a seguir (fig21):
- Vaya a Transit Gateway Attachments
- Cree un nuevo attachment
- Seleccione attachment tipo VPN
- De de alta un nuevo CGW (en caso de que no se tenga ya declarado)
- Escriba la IP del CGW
- Elija el tipo de enrutamiento a utilizar (BGP o Estático)
Fig 21
Quienes estén familiarizados con el proceso de creación de un CGW podrán darse cuenta de que los pasos son muy similares a la configuración normal de una VPN sitio a sitio, con la única diferencia de utilizar un TGW en vez de un VGW del lado de AWS.
Una vez realizando este procedimiento, verán un nuevo CGW (fig22) y una nueva conexión VPN (fig23)
Fig 22
Fig 23
Solo queda realizar la configuración del Customer Gateway que tenga de forma local. Recuerde que la configuración base puede ser descargada directamente de la consola de AWS seleccionando la VPN y haciendo clic en el botón “Download Configuration”. Esto abrirá un menú para seleccionar el modelo/marca requerido (fig24) para después descargar la configuración base, validarla y ejecutarla en el dispositivo local.
Fig 24
De esta manera la VPN pasará a ser productiva y la tabla de enrutamiento del TGW convergerá para tener el CIDR anunciado a través de la VPN. Será necesario agregar los CIDR locales en las tablas de enrutamiento de los VPCs que desee comunicar con su centro de datos.
Con el escenario descrito en este post podemos realizar interconectividad de un centro de datos local y varios VPCs, sin importar si estas VPCs se encuentran en diversas cuentas de AWS o diferentes regiones, así como gestionar el enrutamiento entre ellos utilizando un servicio redundante y administrado.
Recuerde que todas las configuraciones explicadas en este post pueden ser realizadas a través de la consola de AWS o a través de la AWS CLI
Tags: #VPC #VPN #TransitVPC #SiteToSite #TransitGateway #NubeHibrida
Más información:
https://aws.amazon.com/es/transit-gateway/
https://www.youtube.com/watch?time_continue=870&v=yQGxPEGt_-w
Referencias:
https://aws.amazon.com/transit-gateway/
https://aws.amazon.com/es/vpc/
https://docs.aws.amazon.com/vpc/latest/userguide/vpc-peering.html
https://docs.aws.amazon.com/es_es/vpc/latest/userguide/VPC_VPN.html
Por Jesús Humberto Contreras Rancurello, Arquitecto de Soluciones, AWS México