Supongamos que tenemos dos instancias EC2 en diferentes VPC y necesitamos conectarlas entre sí. Por ejemplo un servidor de monitoreo en la VPC "vpc_backup" necesita acceder a un servidor de desarrollo en la VPC "vpc_desarrollo". El concepto de VPC precisamente implica que las redes son privadas (de forma virual) y a priori no podrían conectarse entre sí. Sin embargo, existe el concepto de "VPC peering" el cual permite interconectar dos redes privadas entre sí para establecer comunicación entre las mismas.

El objetivo de este artículo es demostrar el proceso de interconexión (peering) entre dos VPC (Virtual Private Cloud) de AWS. Lo cual permite conectar y rutear tráfico entre dos VPC independientes.

Un requisito indispensable para poder implementar peering es que las VPCs involucradas utilicen rangos de red separados, de lo contrario no se podría implementar el ruteo entre las mismas. Si ambas redes utilizan el rango de red "10.0.0.0/16" por defecto, no será posible implementar el peering. En tal caso una de las VPC debería ser recreada desde cero con un rango nuevo.

Desde la consola de VPC, acceder la menú "Peering Connections".

Abrir "Create Peering Connection". La solicitud se puede hacer desde cualquiera de las VPC involucradas.

Setear el origen (vpc_desarrollo) y destino (vpc_backup) de la solicitud:

Crear la conexión y volver a la pantalla anterior, donde se debe aceptar la solicitud mediante clic derecho y luego "Accept Request":

Con el peering establecido, proceder a agregar las rutas necesarias para dirigir el tráfico entre ambas redes (10.1.0.0/16 y 10.0.0.0/16):

Se debe editar la tabla de ruteo de ambas VPC, como en cualquier red física.

Editar la tabla de ruteo de la vpc_desarrollo desde "Routes > Edit routes":

Al seleccionar "Peering Connection" aparece la única conexión definida hasta el momento. Completar y guardar los cambios.

Repetir para la tabla de ruteo de la vpc_backup:

Agregar la ruta a través de la peering connection.

Si una VPC tiene varias tablas de ruteo es necesario replicar la ruta a través de las mismas.

Finalmente, los Security Groups que correspondan en ambas VPC deben ajustarse para permitir el tráfico (por ejemplo ping):

Probar el acceso a través de la peering connection:

root@debian:~# ping 10.1.0.125
PING 10.1.0.125 (10.1.0.125) 56(84) bytes of data.
64 bytes from 10.1.0.125: icmp_seq=1 ttl=64 time=0.399 ms
64 bytes from 10.1.0.125: icmp_seq=2 ttl=64 time=0.381 ms
64 bytes from 10.1.0.125: icmp_seq=3 ttl=64 time=0.367 ms
^C
--- 10.1.0.125 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2044ms
rtt min/avg/max/mdev = 0.367/0.382/0.399/0.020 ms

Finalmente, es necesario revisar las Network ACLs (en caso de que se hayan endurecido).

Cabe destacar que el peering es posible no sólo entre VPCs de una misma cuenta sino también entre VPCs de diferentes cuentas. Por ejemplo sería posible acceder a una VPC de otra organización si fuese necesario. Siempre teniendo en cuenta el requisito de que las redes tengan rangos (direcciones de red) disjuntos.

Referencias

Compartí este artículo