Conexión entre VPC de Amazon y Red On-Premises

news and informations automotive,business,crime,health,life,politics,science,technology,travelautomotive,business,crime,health,life,politics,science,technology,travel

Hace unos días surgió la necesidad de conectar la red del CPD de un cliente con la VPC (Virtual Private Cloud) que ese mismo cliente tiene en Amazon AWS. Por supuesto, en un escenario como este la mejor opción (tanto por precio como por seguridad) es utilizar una VPN Sitio a Sitio entre las dos localizaciones. El proceso es sencillo y voy a describir aquí los pasos a seguir.

Primero definimos la situación de partida:

  • El cliente ya cuenta con una VPC en Amazon AWS en la que tiene desplegadas varias instancias de máquinas virtuales que ofrece diferentes servicios.
  • El cliente dispone de un CPD on-premises en el que tiene implementada una red privada con múltiples subredes.
  • Se despliega un nuevo servicio en la VPC de Amazon y debe ser accesible desde la red on-premises.
  • El punto de conexión de la red on-premises será un router Cisco, concretamente un C3845

Aquí vemos la VPC del cliente.

Lo primero que haremos será crear un Customer Gateway que represente al router Cisco 3845 al que nos vamos a conectar mediante la VPN. Para esto, en la consola de Amazon AWS vamos a VPC Dashboard -> Virtual Private Networks (VPN) -> Customer Gateways y pulsamos en “Create Customer Gateway”:

En este caso utilicé un enrutamiento dinámico basado en BGP (Border Gateway Protocol) para facilitas la tarea de configuración. Para esto necesitamos la IP pública del router (debe ser estática) y el número de sistema autónomo (ASN) asociado a la IP. Para obtener el ASN podemos utilizar varias herramientas online. Una de ellas es:

https://www.ultratools.com/tools/asnInfo

Si introducimos la IP del router obtenemos el ASN:

Y con estos datos ya podemos crear el Customer Gateway:

El siguiente paso es crear un Virtual Private Gateway en la VPC. Vamos a VPC Dashboard -> Virtual Private Network (VPN) -> Virtual Private Gateways:

Basta con dar un nombre y dejamos el ASN por defecto de Amazon (64512):

Y lo conectamos con la VPC:

Y ya podemos crear la VPN Connection en VPN Dashboard -> Virtual Private Network (VPN) -> Site-to-Site VPN Connections:

Damos un nombre a la conexión, seleccionamos el Virtual Private Gateway y el Customer Gateway que hemos creado en los pasos anteriores:

Se configuran dos túneles IPSec para alta disponibilidad. Si queremos, podemos especificar una clave precompartida para estos túneles y un rango de direcciones IP, o podemos dejar que se generen automáticamente estos valores, como vemos en la imagen.

En el momento en el que finalicemos este paso, Amazon empezará a cobrar por el uso de estas conexiones VPN. Tenemos información sobre los precios en:

https://aws.amazon.com/es/vpn/pricing/

Como comentamos al principio, la conexión se establecerá con un router Cisco 3845. Para la configuración lo tenemos muy fácil, porque desde la misma página en la que hemos creado la conexión VPN podemos descargar la configuración necesaria para nuestro dispositivo on-premises:

Pulsando en “Download Configuration” podemos descargar la configuración para el modelo de dispositivo que necesitemos, que en nuestro escenario es:

Aunque también está disponible la configuración para otros fabricantes como Barracuda, CheckPoint, Fortinet, F5, … y para una gran variedad de modelos.

Descargamos el archivo txt con la configuración:


que incluye la configuración para los dos túneles IPSec, aunque se puede trabajar sólo con uno si no requerimos alta disponibilidad:

Basta con ejecutar estos comandos en la consola de nuestro Cisco:

Sin embargo, es posible que al ejecutar estos comandos en nuestro router no se levante el túnel y obtengamos los siguientes errores:

*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0):Can not start Aggressive mode, trying Main mode.
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0):found peer pre-shared key matching 54.1.1.1
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0): constructed NAT-T vendor-07 ID
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0): constructed NAT-T vendor-03 ID
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0): constructed NAT-T vendor-02 ID
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0):Input = IKE_MESG_FROM_IPSEC, IKE_SA_REQ_MM
*Dec 18 07:17:35.052: ISAKMP:(0:0:N/A:0):Old State = IKE_READY  New State = IKE_I_MM1

El problema se debe a que por defecto está habilitado NAT-T. Para solucionarlo añadimos el siguiente comando en nuestro router Cisco:

no crypto ipsec nat-transparency udp-encapsulation

Con esta configuración el túnel ya debe levantarse. Si sólo utilizamos uno de los túneles tendremos algo como:

El último paso será modificar la tabla de enrutamiento de la VPC en Amazon para que las instancias de máquinas virtuales puedan llegar a las que tenemos en el CPD on-premises utilizando la conexión VPN que acabamos de crear. Para esto vamos a VPC Dashboard -> Virtual Private Cloud -> Route Tables:

En la imagen vemos que hemos seleccionado la tabla de enrutamiento correspondiente a la VPC con la que estamos trabajando, que internamente usa el rango privado 172.17.0.0/16. Para que las instancias de máquinas virtuales de esta VPC salgan a Internet (0.0.0.0/0) usamos un Internet Gateway (igw-…) que se crea en el proceso de configuración inicial de la VPC. Para llegar a las redes que se encuentran en el CPD on-premises (10.11.0.0/16, 172.16.0.0/16 y 192.168.0.0/16) utilizamos el Virtual Private Gateway (vgw-…) que hemos creado en este mismo post.

El resto de la configuración ya debe hacerse en los dispositivos on-premises. Como en este caso estamos usando BGP, la configuración del enrutamiento es muy sencillo, aunque queda fuera del objetivo de este post que es mostrar cómo se configura una conexión VPN con Amazon AWS.

, , , ,