Hace tiempo tuvimos un problema intentando comunicar el Cloud de AWS con una infraestructura local de uno de nuestros clientes.

Desplegamos una instancia de EC2 de Windows en una VPC, para que actuara como VPN final para correcaminos. Una vez se establecía la conexión de la VPN, no había manera de pasar las verificaciones de calidad. El tráfico no fluía de una punta a otra de la VPN.

Las máquinas en cada lado de la red podían comprobar la disponibilidad de las dos direcciones IP de las máquinas VPN (tanto del lado local como del remoto), por lo que el túnel parecía estar establecido correctamente. La máquina VPN pudo contactar los hosts a ambos lados de la red, pero parecía que esta no enrutaba.

Al rastrear el tráfico en el servidor VPN, veíamos que el tráfico se reenviaba a los hosts de AWS, pero el paquete IP que regresaba al de origen se descartaba, por lo tanto la comprobación fallaría y el protocolo de control de transmisión realizaría retransmisiones. La primera teoría fue que tal vez el cortafuegos de Windows estaba descartando paquetes.

¡No! Tener todos los cortafuegos desactivados daba lugar al mismo resultado frustrante.

Revisando todas las opciones de red de EC2 que pudieran estar involucradas, se verificó que las rutas estáticas, la configuración de la traducción de direcciones de red, los Security Groups, las verificaciones de IP de origen/destino, las Routing Tables y las listas de control de acceso a la red de VPC estaban bien.

Todo bien y la VPN estaba inutilizable.

Después de unas pruebas y algunos intentos más, tuvimos que reconsiderar la aproximación. El tiempo dedicado al proyecto corría y la VPN era un prerrequisito para otros elementos. Decidimos desplegar una solución de OpenVPN que resultó funcionar, pero que dejó una investigación abierta sobre qué había fallado con nuestros despliegues de Windows VPN.

Finalmente, con el proyecto de nuevo en marcha, decidimos investigar reproduciendo el bug y encontrando las posibles causas.

Habíamos desplegado VPNs de Windows en EC2 y en local en el pasado sin ningún tipo de fallo. Un nuevo despliegue en una cuenta de prueba que no tenía nada que ver con la última: la VPN no funcionaba. Así que volvimos al rastreo y a la limpieza del tráfico de red.
Windows cuenta con una herramienta excelente de captura de tráfico: Microsoft Network Monitor 3.4. En esta encontramos errores de suma de verificación de protocolo de control de transmisión. Al poco tiempo, nos encontramos con esta documentación oficial de AWS, aunque no se refería a nuestra configuración en particular:

Un fragmento del documento:

Si lanzaste la instancia de Windows desde una AMI de Amazon actual, es posible que no puedas enrutar el tráfico desde otras instancias sin actualizar los ajustes de tu adaptador. Desde tu servidor o instancia de Windows, haz lo siguiente: desactiva IPv4 Checksum Offload, TCP Checksum Offload (IPv4), y UDP Checksum Offload (IPv4).

¡Bug atrapado y aplastado!

Parece que la última versión de la AMI de AWS Windows había cambiado de comportamiento debido a una alteración en la configuración o los controladores de red.
¡Ahora las VPNs funcionan sin problemas!

Esto me hace pensar que, a veces, las tecnologías Cloud no son triviales: tienes que lidiar con Sistemas Operativos, virtualización, red, detalles de cada proveedor Cloud (bugs, limitaciones y funcionalidades). El equipo de CAPSiDE prueba y compara diferentes servicios Cloud constantemente para poder ofrecer proyectos a nuestros clientes en una variedad amplia de circunstancias. Nos importa tu proyecto y el éxito que tenga, y contamos con una gama amplia de herramientas y experiencia para ir solucionando posibles problemas durante el viaje.

TAGS: aws, ec2, firewall, ip, networking, routing, tcp, vpc, vpn, Windows

speech-bubble-13-icon Created with Sketch.
Comentarios
Francois | julio 23, 2014 4:20 am

Disabled them on both the RAS Server and an other machine in the same subnet, opened all traffic just to make sure, still no routing… I can see the RAS Sever from within the VPN of course and The routing table looks fine on the RAS, the packet are heading the right way, they just fail to come back…

Reply

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*
*