Compila VPN con alta capacidad de procesamiento

En este instructivo, se muestra cómo crear VPN seguras con alta capacidad de procesamiento y probar su velocidad.

La comunicación segura entre Google Cloud y otras nubes o sistemas locales es una necesidad común y esencial. Por suerte, Google Cloud facilita la creación de redes privadas virtuales (VPN) seguras de protocolo de seguridad de Internet (IPsec) para lograr este objetivo. Si un solo túnel no proporciona la capacidad de procesamiento necesaria, Google Cloud puede distribuir sin problemas el tráfico entre varios túneles para proporcionar ancho de banda adicional.

Objetivos

Crea las VPN

  • Crear y configurar un proyecto de Google Cloud adecuado para las VPN
  • Crear una nube privada virtual (VPC) llamada cloud a fin de simular la red de Google Cloud, y una VPC llamada on-prem (local) para simular una red externa
  • Crear puertas de enlace de VPN, reglas de reenvío y direcciones para la VPC cloud
  • Formar un túnel para la VPN nueva y enrutar el tráfico a través de esta
  • Repetir el proceso de creación de VPN para la VPC on-prem y crear una segunda VPN

Prueba las VPN

  • Crear una máquina virtual (VM) mediante Compute Engine para probar las cargas de capacidad de procesamiento
  • Probar la velocidad de capacidad de procesamiento de una sola VPN mediante iperf
  • Enrutar el tráfico de forma simultánea a través de las dos VPN y probar la velocidad de capacidad de procesamiento aumentada mediante iperf

Costos

En este instructivo, se usan componentes facturables de Google Cloud Platform, incluidos los siguientes:

El precio estimado para ejecutar este instructivo, si usas cada recurso durante un día entero, es de alrededor de $10.01 en función de esta calculadora de precios.

Antes de comenzar

  1. En la página del selector de proyectos de Google Cloud Console, selecciona o crea un proyecto de Google Cloud.

    Ir al selector de proyecto

  2. Comprueba que la facturación esté habilitada en tu proyecto.

    Descubre cómo puedes habilitar la facturación

  3. Habilita la API Google Compute Engine.

    Habilita la API

  4. Revisa cómo crear una VPN mediante Google Cloud para familiarizarse con los pasos. Además, revisa la Descripción general de redes de VPC.

Crea la VPC cloud

En esta sección, harás lo siguiente:

  • Crear una VPC para simular tu red de producción de nube
  • Permitir que los tipos comunes de tráfico circulen por la VPC
  • Crear una subred para implementar hosts.

  1. Ve a Cloud Shell.

    ABRIR CLOUD SHELL

  2. En Cloud Shell, crea una VPC personalizada llamada cloud asociada a tu proyecto de Google Cloud. Esta VPC te permite usar direccionamiento IP no predeterminado, pero no incluye ninguna regla de firewall predeterminada:

    gcloud compute networks create cloud --subnet-mode custom
    
  3. Habilita icmp y SSH, ya que necesitarás una shell segura para comunicarte con las VM durante la prueba de carga:

    gcloud compute firewall-rules create cloud-fw --network cloud --allow tcp:22,icmp
    
  4. Crea una subred dentro de esta VCP y especifica la región y el rango de IP. En esta solución, usarás 10.0.1.0/24 y la región us-east1:

    gcloud compute networks subnets create cloud-east --network cloud \
        --range 10.0.1.0/24 --region us-east1
    

Crea la VPC on-prem

En esta sección, crearás una simulación de la VPC on-prem, o cualquier red que desees conectar a cloud. En la práctica, ya tendrás los recursos en este punto, sin embargo, a fin de crear túneles y validar opciones de configuración, sigue estos pasos:

  1. Crea una nueva VPC de subred personalizada asociada con tu proyecto mediante la herramienta de línea de comandos de gcloud. Asigna el nombre on-prem a la VCP nueva.

    gcloud compute networks create on-prem --subnet-mode custom
    
  2. Habilita SSH y icmp para los hosts en la VPC on-prem, ya que necesitarás una shell segura si quieres comunicarte con las VM durante la prueba de carga:

    gcloud compute firewall-rules create on-prem-fw --network on-prem --allow tcp:22,icmp
    
  3. Especifica el prefijo de la subred para la región. En este ejemplo, asignas 192.168.1.0/24 a la región us-central1:

    gcloud compute networks subnets create on-prem-central \
        --network on-prem --range 192.168.1.0/24 --region us-central1
    

Crea puertas de enlace de VPN

Cada entorno requiere puertas de enlace de VPN para una comunicación externa segura. Sigue estos pasos a fin de crear las puertas de enlace iniciales para las VPC cloud y on-prem:

  1. Crea una puerta de enlace de VPN llamada on-prem-gw1 en la VPC on-prem y en la región us-central1:

    gcloud compute target-vpn-gateways create on-prem-gw1 --network on-prem --region us-central1
    
  2. Crea una puerta de enlace de VPN llamada cloud-gw1 en la VPC cloud y en la región us-east1:

    gcloud compute target-vpn-gateways create cloud-gw1 --network cloud --region us-east1
    

Crea un túnel VPN basado en rutas entre redes locales y de Google Cloud

Ahora que creaste las puertas de enlace de VPN, cada una necesita una dirección IP externa y estática para que los sistemas fuera de la VPC puedan comunicarse con ellas. Sigue estos pasos para crear direcciones IP y rutas en las VPC cloud y on-prem:

  1. Asigna la IP para la puerta de enlace de VPN cloud-gw1:

    gcloud compute addresses create cloud-gw1 --region us-east1
    
  2. Asigna la IP para la puerta de enlace de VPN on-prem-gw1:

    gcloud compute addresses create on-prem-gw1 --region us-central1
    
  3. Almacena las direcciones creadas en los pasos anteriores para que no tengas que buscarlas en comandos futuros.

    1. Primero, para la puerta de enlace cloud-gw1, ejecuta lo siguiente:

      cloud_gw1_ip=$(gcloud compute addresses describe cloud-gw1 \
          --region us-east1 --format='value(address)')
      
    2. Segundo, para la puerta de enlace on-prem-gw1, ejecuta lo siguiente:

      on_prem_gw_ip=$(gcloud compute addresses describe on-prem-gw1 \
          --region us-central1 --format='value(address)')
      
  4. Crea reglas de reenvío para IPsec en la VPC cloud. Deberás crear reglas de reenvío en ambas direcciones.

    1. Reenvía el protocolo de carga útil de seguridad de encapsulamiento (ESP) desde cloud-gw1:

      gcloud compute forwarding-rules create cloud-1-fr-esp --ip-protocol ESP \
          --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
    2. Reenvía el tráfico UDP:500 desde cloud-gw1:

      gcloud compute forwarding-rules create cloud-1-fr-udp500 --ip-protocol UDP \
          --ports 500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
    3. Reenvía el tráfico UDP:4500 desde cloud-gw1:

      gcloud compute forwarding-rules create cloud-fr-1-udp4500 --ip-protocol UDP \
          --ports 4500 --address $cloud_gw1_ip --target-vpn-gateway cloud-gw1 --region us-east1
      
  5. Del mismo modo, crea reglas de reenvío para el túnel IPsec en la VPC on-prem. Este paso permite que el túnel IPsec salga de los firewalls y, como antes, debe hacerse en función de los siguientes protocolos:

    1. Reenvía el protocolo ESP desde on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-esp --ip-protocol ESP \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
    2. Reenvía el tráfico UDP:500 que se usa para establecer el túnel IPsec desde on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-udp500 --ip-protocol UDP --ports 500 \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
    3. Reenvía el tráfico UDP:4500 que lleva el tráfico encriptado desde on-prem-gw1:

      gcloud compute forwarding-rules create on-prem-fr-udp4500 --ip-protocol UDP --ports 4500 \
          --address $on_prem_gw_ip --target-vpn-gateway on-prem-gw1 --region us-central1
      
  6. Genera un secreto que usarás en el siguiente paso, en el que creas y validas los túneles on-prem-tunnel1 y cloud-tunnel1. A fin de obtener detalles sobre cómo crear y almacenar secretos de forma segura, consulta la administración de secretos.

  7. Con el secreto que acabas de generar, crea un túnel para la red local, on-prem-tunnel1, y la red basada en la nube, cloud-tunnel1. Cada red debe tener una puerta de enlace de VPN y los secretos deben coincidir. En los dos comandos que siguen, reemplaza [MY_SECRET] por el secreto que generaste.

    1. Crea el túnel VPN desde on-prem hasta cloud:

      gcloud compute vpn-tunnels create on-prem-tunnel1 --peer-address $cloud_gw1_ip \
          --target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
          --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-central1
      
    2. Crea el túnel VPN desde cloud hasta on-prem:

      gcloud compute vpn-tunnels create cloud-tunnel1 --peer-address $on_prem_gw_ip \
          --target-vpn-gateway cloud-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
          --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-east1
      
  8. Ahora que creaste las puertas de enlace y compilaste túneles, necesitas agregar rutas desde las subredes creadas con anterioridad a través de los dos túneles.

    1. Enruta el tráfico de la VPC on-prem al rango cloud 10.0.1.0/24 a través del túnel:

      gcloud compute routes create on-prem-route1 --destination-range 10.0.1.0/24 \
          --network on-prem --next-hop-vpn-tunnel on-prem-tunnel1 \
          --next-hop-vpn-tunnel-region us-central1
      
    2. Enruta el tráfico de la VPC cloud al rango on-prem 192.168.1.0/24 a través del túnel:

      gcloud compute routes create cloud-route1 --destination-range 192.168.1.0/24 \
          --network cloud --next-hop-vpn-tunnel cloud-tunnel1 --next-hop-vpn-tunnel-region us-east1
      

Prueba la capacidad de procesamiento a través de VPN

En este punto, ya estableciste una ruta de acceso segura entre las VPC on-prem y cloud. Para probar la capacidad de procesamiento, usarás iperf, una herramienta de código abierto que permite probar las carga de red. Necesitarás una VM en cada entorno, una que envíe tráfico y otra que lo reciba.

Prueba de carga de una sola VPN

  1. Crea una máquina virtual para la VPC cloud. Aquí, el nombre debe ser cloud-loadtest; en este ejemplo, se usa una imagen de Debian Linux para el SO. Si ya tienes un proyecto, puedes omitir este paso y usar los recursos existentes. Ten en cuenta que el ancho de banda para una VM es de 2 Gbps * CPU virtuales, por lo que necesitarás un mínimo de 4 CPU virtuales.

    gcloud compute instances create "cloud-loadtest" --zone "us-east1-b" \
        --machine-type "n1-standard-4" --subnet "cloud-east" \
        --image-family "debian-9" --image-project "debian-cloud" --boot-disk-size "10" \
        --boot-disk-type "pd-standard" --boot-disk-device-name "cloud-loadtest"
    
  2. Crea una máquina virtual para la VPC on-prem. En este ejemplo, se usa la misma imagen de Debian que en la VPC cloud. Omite este paso si ya tienes recursos. Aquí, el nombre es on-prem-loadtest.

    gcloud compute instances create "on-prem-loadtest" --zone "us-central1-a" \
        --machine-type "n1-standard-4" --subnet "on-prem-central" \
        --image-family "debian-9" --image-project "debian-cloud" --boot-disk-size "10" \
        --boot-disk-type "pd-standard" --boot-disk-device-name "on-prem-loadtest"
    
  3. Abre el puerto TCP 5001 en el firewall de la red on-prem para aceptar solicitudes de iperf:

    gcloud compute firewall-rules create on-prem-iperf-fw --network on-prem --allow tcp:5001
    
  4. Conéctate a cada VM mediante SSH y, luego, instala una copia de iperf. Para instalar iperf en Debian, usa la siguiente línea de comandos:

    sudo apt-get install iperf
    
  5. En la VM on-prem-loadtest, ejecuta este comando:

    iperf -s -i 5 -p 5001
    

    Creaste un servidor de iperf en la VM que informa su estado cada 5 segundos:

  6. En la VM cloud-loadtest, ejecuta este comando:

    iperf -c 192.168.1.2 -P 20 -x C -p 5001
    

Creaste un cliente iperf con veinte transmisiones que informarán valores luego de 10 segundos de prueba:

Prueba iperf

Observa el valor de capacidad de procesamiento [SUM]; si es suficiente para tu tráfico, puedes detenerte aquí. Sin embargo, si necesitas capacidad de procesamiento adicional, deberás crear y usar túneles adicionales.

Prueba de carga de múltiples VPN

Si las rutas coinciden, las puertas de enlace de la VPN de Google Cloud realizan un enrutamiento de múltiples rutas por flujo de igual costo (ECMP) para balancear cargas entre múltiples túneles y tener una mayor capacidad de procesamiento agregada. Debido a que el balanceo de cargas es por flujo, un solo flujo no logra beneficios, pero múltiples flujos sí lo hacen.

  1. Crea una puerta de enlace de VPN cloud adicional, cloud-gw2, en la misma región que cloud-gw1:

    gcloud compute target-vpn-gateways create cloud-gw2 --network cloud --region us-east1
    
  2. Crea la dirección para cloud-gw2:

    gcloud compute addresses create cloud-gw2 --region us-east1
    
  3. Almacena la dirección para cloud-gw2:

    cloud_gw2_ip=$(gcloud compute addresses describe cloud-gw2 \
        --region us-east1 --format='value(address)')
    
  4. Crea reglas de reenvío en cloud-gw2:

    gcloud compute forwarding-rules create cloud-2-fr-esp --ip-protocol ESP \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
    gcloud compute forwarding-rules create cloud-2-fr-udp500 --ip-protocol UDP --ports 500 \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
    gcloud compute forwarding-rules create cloud-fr-2-udp4500 --ip-protocol UDP --ports 4500 \
        --address $cloud_gw2_ip --target-vpn-gateway cloud-gw2 --region us-east1
  5. Crea el túnel desde on-prem hasta cloud-gw2 y reemplaza [MY_SECRET] por el secreto que generaste:

    gcloud compute vpn-tunnels create on-prem-tunnel2 --peer-address $cloud_gw2_ip \
        --target-vpn-gateway on-prem-gw1 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
        --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-central1
    
  6. Crea el túnel desde cloud-gw2 hasta on-prem y reemplaza [MY_SECRET] por el secreto que generaste:

    gcloud compute vpn-tunnels create cloud-tunnel2 --peer-address $on_prem_gw_ip \
        --target-vpn-gateway cloud-gw2 --ike-version 2 --local-traffic-selector 0.0.0.0/0 \
        --remote-traffic-selector 0.0.0.0/0 --shared-secret=[MY_SECRET] --region us-east1
    
  7. Enruta desde on-prem hasta cloud-gw2:

    gcloud compute routes create on-prem-route2 --destination-range 10.0.1.0/24 --network on-prem \
        --next-hop-vpn-tunnel on-prem-tunnel2 --next-hop-vpn-tunnel-region us-central1
    
  8. Enruta desde cloud-gw2 hasta on-prem:

    gcloud compute routes create cloud-route2 --destination-range 192.168.1.0/24 \
        --network cloud --next-hop-vpn-tunnel cloud-tunnel2 --next-hop-vpn-tunnel-region us-east1
    

Creaste dos túneles, cloud-tunnel1 y cloud-tunnel2, con rutas idénticas. Se realizará el balanceo de cargas automático del tráfico entre ellos.

Vuelve a probar la capacidad de procesamiento a través de VPN

  • Usa iperf para volver a probar la velocidad de la red:

    iperf -c 192.168.1.2 -P 20 -x C
    

Observa cómo el valor de capacidad de procesamiento es mayor que en la prueba de un solo túnel:

Vuelve a probar iperf

Observa también que el límite para los túneles VPN de enrutamiento de múltiples rutas de igual costo no es de 2 y que no es necesario que los túneles terminen en las mismas regiones.

Para un escalamiento adicional, puedes seguir realizando este proceso de manera indefinida. Además, para mejorar la confiabilidad, puedes crear o terminar estos túneles en diferentes subredes regionales.

Realice una limpieza

Para evitar que se apliquen cargos a tu cuenta de Google Cloud por los recursos usados en este instructivo, borra el proyecto que contiene los recursos o conserva el proyecto y borra los recursos individuales.

Borra el proyecto

La manera más fácil de eliminar la facturación es borrar el proyecto que creaste para el instructivo.

Para borrar el proyecto, sigue estos pasos:

  1. En Cloud Console, ve a la página Administrar recursos.

    Ir a Administrar recursos

  2. En la lista de proyectos, elige el proyecto que quieres borrar y haz clic en Borrar.
  3. En el diálogo, escribe el ID del proyecto y, luego, haz clic en Cerrar para borrar el proyecto.

¿Qué sigue?

  • Revisa Cloud Router para habilitar el Protocolo de puerta de enlace fronteriza (BGP) y aumentar la tolerancia a errores.
  • Revisa Cloud Interconnect para ver otras opciones de interconexión.
  • Supervisa las puertas de enlace de VPN con Cloud Monitoring.
  • Explora arquitecturas de referencia, diagramas, instructivos y prácticas recomendadas sobre Google Cloud. Consulta nuestro Cloud Architecture Center.