È possibile utilizzare le API CSM per automatizzare la configurazione VPN tra VPC o VNet.

Non è possibile utilizzare le API CSM per configurare la VPN utilizzando endpoint locali.

Prerequisiti:
  • Entrambi gli endpoint per il tunnel VPN devono trovarsi nel cloud pubblico con gruppi di sicurezza distribuiti in tali endpoint e nello stato in esecuzione o up.

Le entità seguenti vengono configurate utilizzando le API CSM. È inoltre possibile utilizzare queste API per annullare la configurazione della VPN.

Per NSX-T Data Center entità che supportano i tag, l'API riutilizza le entità create in precedenza applicando un tag a tali entità con il nuovo ID sessione VPN, ad esempio CsmVpnSessionId:<csm-vpn-session-id-new>.

  • Per ogni endpoint di origine e destinazione:

    • Il servizio VPN IPSec è configurato, denominato cloud-vpn-service-<vpc/vnet-id>.

    • Il routing BGP è configurato, denominato cloud-routing-config-<vpc/vnet-id>. Se BGP non è già abilitato, l'API lo abilita e assegna un numero AS nel formato: 55555.<1-64999>.

  • Per ciascun PCG negli endpoint di origine e di destinazione:

    • La ridistribuzione della route BGP è abilitata per le route statiche livello 0 e i segmenti connessi livello 1.

    • L'IP pubblico è assegnato all'interfaccia di uplink di PCG e associato all'IP privato secondario VPN nell'interfaccia di uplink di PCG.

    • Viene creato l'endpoint locale di VPN IPSec, denominato cloud-vpn-local-endpoint-<gateway-id>-<preferred/non-preferred>.

  • Per ogni combinazione di PCG tra gli endpoint di origine e di destinazione:

    • Viene creata una sessione VPN IPSec basata su route, denominata <csm-vpn-session-id>-<Preferred/non-preferred>To<Preferred/non-preferred>-<hash-from-source-and-destination-PCG-ids>

    • Il router adiacente BGP viene aggiunto nel gateway di livello 0 per ogni sessione VPN IPSec configurata.

Configurazione/aggiornamento delle sessioni VPN

  1. Per configurare una nuova sessione VPN, eseguire i passaggi seguenti:
    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. Per aggiornare il nome visualizzato di una sessione VPN esistente:
    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"
      }
    }

Recupero dello stato delle sessioni VPN esistenti

  • Per ottenere lo stato di tutte le sessioni:
    GET /api/v1/csm/vpn/sessions/status
  • Per ottenere lo stato di una sessione specifica fornendo l'ID sessione:
    GET /api/v1/csm/vpn/sessions/<session-id>/status

Eliminazione delle sessioni

Eliminare le sessioni fornendo l'ID sessione:
DELETE /api/v1/csm/vpn/sessions/<session-id>

Risoluzione dei problemi

Se la creazione di entità non riesce:
  • Ottenere lo stato per l'ID sessione specifico:
    GET /api/v1/csm/vpn/sessions/<session-id>/status
  • Nella risposta è possibile vedere il punto di errore. Apportare le modifiche necessarie per risolvere l'errore.
  • Ricreare le entità rimanenti per lo stesso ID sessione utilizzando la chiamata API:
    POST /api/v1/csm/vpn/sessions/<session-id>?action=recreate 
    

Per dettagli sull'API, vedere la versione più recente della Guida alla REST API di NSX-T Data Center su https://code.vmware.com/.