Utilización de una pasarela VPC/VPN para conseguir un acceso seguro y privado local a los recursos de la nube

Esta guía de aprendizaje puede incurrir en costes. Utilice Estimador de costes para generar una estimación del coste basada en el uso previsto.

IBM ofrece una serie de maneras de ampliar de forma segura una red de sistemas locales con recursos en IBM Cloud. Esto le permite aprovechar la elasticidad de suministrar recursos de nube cuando los necesite y eliminarlos cuando ya no sean necesarios. Además, puede conectar de forma fácil y segura sus prestaciones locales a los servicios de IBM Cloud.

Esta guía de aprendizaje proporciona la automatización necesaria para crear recursos que demuestran la conectividad de VPN (Virtual Private Network) entre los servidores locales y los recursos en la nube como IBM Cloud® Virtual Private Cloud Virtual Service Instances (VSI) y los servicios de datos de IBM Cloud. También se configura la resolución de DNS para los recursos de nube. La conocida pasarela VPN de Swan se utiliza para representar la pasarela VPN local.

Objetivos

  • Acceder a un entorno de nube privada virtual (VPC) desde un centro de datos local
  • Acceda de forma segura a los servicios en la nube mediante pasarelas de punto final privadas
  • Utilizar DNS local para acceder a recursos de nube a través de VPN

El diagrama siguiente muestra los recursos creados por esta guía de aprendizaje

de arquitectura del

Una configuración de Terraform creará los recursos siguientes:

  1. La infraestructura (VPC, subredes, grupos de seguridad con reglas, Network ACL y VSI).
  2. Las pasarelas de punto final privadas Object Storage y Databases for PostgreSQL a los servicios de datos.
  3. Se utiliza el software de pasarela IPsec de código abierto StrongSwan de forma local para establecer la conexión VPN con el entorno de nube.
  4. Se suministra una pasarela VPC/VPN para permitir la conectividad privada entre los recursos locales y los recursos en la nube.
  5. El solucionador de DNS local está conectado a la ubicación de solucionador de DNS en la nube para permitir el acceso a los recursos en la nube, incluido el acceso a las pasarelas de punto final privadas virtuales a través de una VPN.

Antes de empezar

Esta guía de aprendizaje requiere:

  • CLI de IBM Cloud,
    • Plugin IBM Cloud Schematics (schematics),
  • jq para consultar archivos JSON,
  • git to optionally clone source code repository,
  • Terraform CLI to optionally run Terraform on your desktop instead of the Schematics service.

Encontrará instrucciones para descargar e instalar estas herramientas para su entorno operativo en la guía de Iniciación a las guías de aprendizaje.

El centro de datos local de esta guía de aprendizaje se simulará utilizando una VSI en un VPC.

El mecanismo preferido para conectar VPC es Transit Gateway. La simulación de un entorno local con VPC, VSI y VPN solo se utiliza para fines ilustrativos.

Además:

Utilice Schematics para crear los recursos

  1. Inicie sesión en IBM Cloud.
  2. Navegue hasta Crear Schematics Espacios de trabajo En la sección Especificar plantilla, verifique:
    1. El URL de repositorio es https://github.com/IBM-Cloud/vpc-tutorials/tree/master/vpc-site2site-vpn
    2. La versión de Terraform es terraform_v1.2
  3. En Detalles del espacio de trabajo,
    1. Proporcione un nombre de espacio de trabajo: vpnsts.
    2. Elija un Resource Group y una Location.
    3. PulseSiguiente.
  4. Verifique los detalles y pulse Crear.
  5. En la sección Variables, proporcione los valores necesarios (nombre_grupo_recursos, nombre_clave_ssh) pulsando el menú de desbordamiento y seleccionando Editar para cada fila. El valor de la variable maintenance debe establecerse en true.
  6. Desplácese a la parte superior de la página y pulse Aplicar plan. Compruebe los registros para ver el estado de los servicios creados.

Para explorar los recursos que se han creado, pulse a continuación y seleccione la instancia con el prefijo coincidente. Localice todos los recursos del diagrama anterior.

Verificación de la conectividad

La salida del espacio de trabajo Schematics contiene variables que pueden utilizarse para verificar la conectividad VPN.

  1. Obtenga la lista de espacios de trabajo, observe la columna ID y establezca la variable de shell:

    ibmcloud schematics workspace list
    
  2. Establezca la variable WORKSPACE_ID:

    WORKSPACE_ID=YOUR_WORKSPACE_ID
    
  3. Obtenga las variables de entorno para los recursos de nube:

    ibmcloud schematics output --id $WORKSPACE_ID --output json | jq -r '.[0].output_values[].environment_variables.value'
    
  4. La salida será similar a la siguiente. Copie/pegue estos resultados en el shell para establecerlos en el entorno:

    IP_FIP_ONPREM=169.48.x.x
    IP_PRIVATE_ONPREM=10.0.0.4
    IP_PRIVATE_CLOUD=10.1.1.4
    IP_FIP_BASTION=52.118.x.x
    IP_PRIVATE_BASTION=10.1.0.4
    IP_DNS_SERVER_0=10.1.0.5
    IP_DNS_SERVER_1=10.1.1.6
    IP_ENDPOINT_GATEWAY_POSTGRESQL=10.1.1.9
    IP_ENDPOINT_GATEWAY_COS=10.1.1.5
    HOSTNAME_POSTGRESQL=a43ddb63-dcb1-430a-a2e4-5d87a0dd12a6.6131b73286f34215871dfad7254b4f7d.private.databases.appdomain.cloud
    HOSTNAME_COS=s3.direct.us-south.cloud-object-storage.appdomain.cloud
    PORT_POSTGRESQL=32525
    
  5. Ahora puede ejecutar ssh en cada una de las instancias siguiendo diferentes vías de acceso, incluido saltando a través de la VPN. El diagrama muestra las vías de comunicación que se utilizan en los pasos.

    Si la clave SSH no es la predeterminada para SSH, puede configurar la opción -I PATH_TO_PRIVATE_KEY_FILE o consultar el manual de referencia de SSH para obtener más ayuda.

Verificar conectividad
Verificar conectividad

  1. Pruebe el acceso a VSI local:
    ssh root@$IP_FIP_ONPREM
    
  2. Pruebe el acceso al bastión de nube:
    ssh root@$IP_FIP_BASTION
    
  3. Pruebe el acceso a la VSI de nube a través del bastión:
    ssh -J root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  4. Pruebe el acceso a la VSI de nube a través del entorno local, a través del túnel VPN, a través del bastión:
    ssh -J root@$IP_FIP_ONPREM,root@$IP_FIP_BASTION root@$IP_PRIVATE_CLOUD
    
  5. Pruebe el acceso a VSI local a través del bastión, a través de la VSI de nube, a través del túnel VPN:
    ssh -J root@$IP_FIP_BASTION,root@$IP_PRIVATE_CLOUD root@$IP_PRIVATE_ONPREM
    

Verificar la resolución de DNS

La resolución DNS local se ha configurado para utilizar la ubicación IBM Cloud VPC Ubicación de resolución DNS. Esto permite acceder a los servicios de nube por nombre y resolverlos en las direcciones IP de las pasarelas de punto final privadas.

Pruebe la resolución de DNS en Postgresql y el almacenamiento de objetos a través de la pasarela de punto final virtual. Las dos vías de acceso que se verifican se muestran en el siguiente diagrama:

Verificar resolución DNS
Verificar resolución DNS

  1. Acceda a la VSI local.

    ssh root@$IP_FIP_ONPREM
    
  2. Copie y pegue tres (3) de las variables capturadas anteriormente: HOSTNAME_POSTGRESQL, HOSTNAME_COS, PORT_POSTGRESQL.

  3. Ejecute un mandato dig para confirmar la resolución de la instancia de base de datos a través de la pasarela de punto final virtual.

    dig $HOSTNAME_POSTGRESQL
    
  4. Verifique la conectividad con la base de datos emitiendo un mandato telnet. Debería mostrar "conectado".

    telnet $HOSTNAME_POSTGRESQL $PORT_POSTGRESQL
    
  5. Una vez conectado a la base de datos, emita un Ctrl+C para desconectarse.

  6. Ejecute un mandato dig para confirmar la resolución de la instancia de almacenamiento de objetos en la nube a través de la pasarela de punto final virtual.

    dig $HOSTNAME_COS
    
  7. Verifique la conectividad con la instancia de almacenamiento de objetos en la nube emitiendo un mandato telnet. Debería mostrar "conectado".

    telnet $HOSTNAME_COS 443
    
  8. Una vez conectado a la instancia de almacenamiento de objetos en la nube, emita un Ctrl+C para desconectarse.

Si hay algún problema, consulte la sección Resolución de problemas en el repositorio github.

Ampliar opcionalmente la guía de aprendizaje

¿Desea añadir o ampliar esta guía de aprendizaje? Estas son algunas de las ideas:

  • En el repositorioGitHub hay una aplicación que se puede desplegar que utiliza la base de datos y el almacenamiento de objetos en la nube. Las instrucciones sobre cómo realizar el despliegue están en el README.
  • Si ha desplegado la aplicación, añada una zona DNS para la aplicación.
  • Ejecute la aplicación en varios Virtual Servers for VPC y añada un equilibrador de carga para distribuir el tráfico de microservicio de entrada.

Eliminación de recursos

  1. Vaya a los Espacios de trabajo de Schematics y pulse su espacio de trabajo.
  2. Pulse Acciones... > Destruir recursos
  3. Pulse Acciones... > Suprimir espacio de trabajo