您可以使用 CSM API 在 VPC 或 VNet 之间自动设置 VPN。

您无法使用 CSM API 通过内部部署端点设置 VPN。

必备条件:
  • VPN 隧道的两个端点必须位于公有云中,在其中部署了 PCG 并处于“正在运行”或“up”状态。

以下实体是使用 CSM API 配置的。您还可以使用这些 API 取消配置 VPN 设置。

对于支持标记的 NSX-T Data Center 实体,API 将标记应用于以前创建的实体并使用新的 VPN 会话 ID (例如 CsmVpnSessionId:<csm-vpn-session-id-new>)以重复使用这些实体。

  • 对于每个源和目标端点:

    • 配置名为 cloud-vpn-service-<vpc/vnet-id> 的 IPSec VPN 服务。

    • 配置名为 cloud-routing-config-<vpc/vnet-id> 的 BGP 路由。如果尚未启用 BGP,API 将启用 BGP,并使用以下格式分配 AS 编号:55555.<1-64999>

  • 对于源和目标端点中的每个 PCG:

    • 为 Tier-0 静态路由和 Tier-1 直连的分段启用 BGP 路由重新分发。

    • 将公用 IP 分配给 PCG 的上行链路接口,并将其与 PCG 的上行链路接口上的 VPN 辅助专用 IP 相关联。

    • 创建名为 cloud-vpn-local-endpoint-<gateway-id>-<preferred/non-preferred> 的 IPSec VPN 本地端点。

  • 对于源端点和目标端点之间的每个 PCG 组合:

    • 创建名为 <csm-vpn-session-id>-<Preferred/non-preferred>To<Preferred/non-preferred>-<hash-from-source-and-destination-PCG-ids> 的基于路由的 IPsec VPN 会话。

    • 在 Tier-0 网关上为每个配置的 IPSec VPN 会话添加 BGP 邻居。

配置/更新 VPN 会话

  1. 要配置新的 VPN 会话,请执行以下操作:
    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. 要更新现有 VPN 会话的显示名称,请运行以下命令:
    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"
      }
    }

获取现有 VPN 会话的状态

  • 要获取所有会话的状态,请运行以下命令:
    GET /api/v1/csm/vpn/sessions/status
  • 要提供会话 ID 以获取特定会话的状态,请运行以下命令:
    GET /api/v1/csm/vpn/sessions/<session-id>/status

删除会话

提供会话 ID 以删除会话:
DELETE /api/v1/csm/vpn/sessions/<session-id>

故障排除

如果创建实体失败:
  • 获取特定会话 ID 的状态:
    GET /api/v1/csm/vpn/sessions/<session-id>/status
  • 您可以在响应中看到故障点。进行所需的更改以解决该故障。
  • 使用 API 调用重新创建同一会话 ID 的其余实体:
    POST /api/v1/csm/vpn/sessions/<session-id>?action=recreate 
    

有关 API 详细信息,请参见最新版本的《NSX-T Data Center REST API 指南》,网址为 https://code.vmware.com/