Puede usar las API de CSM para automatizar la configuración de VPN entre VPC o VNet.

No se pueden utilizar las API de CSM para configurar la VPN mediante endpoints locales.

Requisitos previos:
  • Ambos extremos del túnel VPN deben estar en la nube pública con PCG implementadas en ellos y en un estado en ejecución o up.

Las siguientes entidades se configuran mediante las API de CSM. También puede utilizar estas API para anular la configuración de la VPN.

Para las entidades de NSX que admiten etiquetas, la API reutiliza las entidades previamente creadas mediante la aplicación de una etiqueta con el nuevo identificador de sesión de VPN, por ejemplo, CsmVpnSessionId:<csm-vpn-session-id-new>.

  • Para cada Endpoint de origen y destino:

    • El servicio VPN de IPSec está configurado con el nombre cloud-vpn-service-<vpc/vnet-id>.

    • El enrutamiento de BGP está configurado con el nombre cloud-routing-config-<vpc/vnet-id>. Si BGP aún no estaba habilitado, la API lo habilita y asigna un número AS con el formato: 55555.<1-64999>.

  • Para cada PCG en los endpoints de origen y destino:

    • La redistribución de rutas BGP está habilitada para las rutas estáticas de nivel 0 y los segmentos conectados de nivel 1.

    • La dirección IP pública se asigna a la interfaz de vínculo superior de la PCG y se asocia a la dirección IP privada de VPN-secundaria en la interfaz de vínculo superior de la PCG.

    • Se crea un endpoint local de VPN de IPSec con el nombre cloud-vpn-local-endpoint-<gateway-id>-<preferred/non-preferred>.

  • Para cada combinación de PCG entre los endpoints de origen y destino:

    • La sesión de VPN de IPSec basada en rutas se creó con el nombre <csm-vpn-session-id>-<Preferred/non-preferred>To<Preferred/non-preferred>-<hash-from-source-and-destination-PCG-ids>

    • Se agregó el vecino de BGP en la puerta de enlace de nivel 0 para cada sesión de VPN de IPSec configurada.

Configurar/actualizar sesiones de VPN

  1. Para configurar una nueva sesión de VPN, haga lo siguiente:
    1. GET /api/v1/csm/vpn/endpoints
    2. POST /api/v1/csm/vpn/session
      
      Example Request:
      POST https://<nsx-csm>/api/v1/csm/vpn/sessions
      {
        "display_name": "aws azure session 01",
        "source_endpoint": {
          "id": "vpc-12345678",
          "display_name": "vpc test",
          "endpoint_type": "AWS"
        },
        "destination_endpoint": {
          "id": "d02af61a-e212-486e-b6c8-10462ccfbad6",
          "display_name": "vnet-01",
          "endpoint_type": "AZURE"
        }
      }
  2. Para actualizar el nombre para mostrar de una sesión de VPN existente:
    PUT /api/v1/csm/vpn/sessions/<session-id>
    
    Example Request:
    PUT https://<nsx-csm>/api/v1/csm/vpn/sessions/9174ffd1-41b1-42d6-a28d-05c61a0698e2
    {
      "display_name": "New VPN session",
      "source_endpoint": {
        "id": "vpc-12345678",
        "display_name": "vpc test",
        "endpoint_type": "AWS"
      },
      "destination_endpoint": {
        "id": "d02af61a-e212-486e-b6c8-10462ccfbad6",
        "display_name": "vnet-01",
        "endpoint_type": "AZURE"
      }
    }

Obtener el estado de las sesiones de VPN existentes

  • Para obtener el estado de todas las sesiones:
    GET /api/v1/csm/vpn/sessions/status
  • Para obtener el estado de una sesión específica, proporcione el ID de sesión:
    GET /api/v1/csm/vpn/sessions/<session-id>/status

Eliminar sesiones

Elimine sesiones proporcionando el ID de sesión:
DELETE /api/v1/csm/vpn/sessions/<session-id>

Solucionar problemas

Si se produce un error en la creación de entidades:
  • Obtenga el estado del ID de sesión específico:
    GET /api/v1/csm/vpn/sessions/<session-id>/status
  • Puede ver el punto de error en la respuesta. Realice los cambios necesarios para resolver el error.
  • Vuelva a crear las entidades restantes para el mismo ID de sesión con la llamada API:
    POST /api/v1/csm/vpn/sessions/<session-id>?action=recreate 
    

Para obtener más información sobre la API, consulte la versión más reciente de la Guía de REST API de NSX en https://code.vmware.com/.