创建 VPN BGP 会话

本页面介绍 VPN 边界网关协议 (BGP) 会话必须遵循的规范,以及如何创建 VPN BGP 会话。

Google Distributed Cloud (GDC) 气隙 VPN 支持为每个 VPN 隧道使用 IPv4 BGP 会话进行动态路由。BGP 会话允许远程网络和 GDC 组织中的 BGP 对等方相互通告路由。

准备工作

如需创建 VPN BGP 会话,您必须拥有必要的身份和访问权限角色:

  • VPN 管理员:拥有对所有 VPN 相关资源的读写权限。请让您的组织 IAM 管理员向您授予 VPN 管理员 (vpn-admin) 角色。
  • VPN Viewer:拥有对所有 VPN 相关资源的读取权限。请让您的组织 IAM 管理员向您授予 VPN Viewer (vpn-viewer) 角色。
  • 如需了解详情,请参阅角色定义

VPN BGP 会话规范

组织中的 BGP 对等方支持 30 秒的 BGP Keepalive 间隔,保持时间为 90 秒。对于每个 BGP 会话,IPv4 地址必须满足以下要求:

  • 每个 BGP IPv4 地址都必须属于 169.254.0.0/16 范围内的同一 /30 子网。
  • 每个 BGP IPv4 地址是 /30 子网的第一个或第二个主机。该子网的第一个和最后一个 IP 地址是为网络和广播地址预留的。
  • 每个 BGP 会话的每个 BGP 地址范围在组织的所有 VPN BGP 会话中必须唯一。

不支持 MD5 身份验证。这是一种使用 MD5 哈希算法验证数据完整性和真实性的方法。

创建 VPN BGP 会话

如需为 VPN 隧道创建 BGP 会话,请按照以下步骤操作:

  1. 在平台命名空间中的组织管理员集群中创建 VPNBGPPeer 对象:

    kubectl --kubeconfig MANAGEMENT_API_SERVER create -n platform -f - <<EOF
    apiVersion: networking.gdc.goog/v1
    kind: VPNBGPPeer
    metadata:
      name: VPN_BGP_PEER_NAME
    spec:
      remote:
        name: REMOTE_PEER_NAME
        ip: REMOTE_PEER_IP
        asn: REMOTE_PEER_ASN
      local:
        name: LOCAL_PEER_NAME
        ip: LOCAL_PEER_IP
        asn: LOCAL_PEER_ASN
    EOF
    

    替换以下内容:

    • MANAGEMENT_API_SERVER:区域 API 服务器的 kubeconfig 路径。如果您尚未为目标地区中的 API 服务器生成 kubeconfig 文件,请参阅登录了解详情。
    • VPN_BGP_PEER_NAME:VPN BGP 对等端的名称。
    • REMOTE_PEER_NAME:远程网络中 BGP 对等端的名称。
    • REMOTE_PEER_IP:远程网络中 BGP 对等方的 /30 子网中的 BGP IPv4 地址。
    • REMOTE_PEER_ASN:为远程网络配置的自治系统编号 (ASN)。
    • LOCAL_PEER_NAME:GDC 组织中 BGP 对等端的名称。
    • LOCAL_PEER_IP:GDC 组织中 BGP 对等方的 /30 子网中的 BGP IPv4 地址。
    • LOCAL_PEER_ASN:为 GDC 组织配置的 ASN。
  2. 通过检查 Status 字段,验证 VPN_BGP_PEER_NAME 对象是否已正确协调。获取 VPNBGPPeer 对象的详细信息:

    kubectl --kubeconfig MANAGEMENT_API_SERVER describe -n platform vpnbgppeer VPN_BGP_PEER_NAME
    

    检查输出,它必须类似于以下示例:

      Status:
        Conditions:
          Last Transition Time:  2024-05-10T00:26:13Z
          Message:               Ready
          Observed Generation:   1
          Reason:                Ready
          Status:                True
          Type:                  ValidIPs
          Last Transition Time:  2024-05-10T00:26:00Z
          Message:               Used by 0 VPNTunnels, must be used by a single VPNTunnel
          Observed Generation:   1
          Reason:                GetResourceFailed
          Status:                False
          Type:                  TunnelsAttached
          Last Transition Time:  2024-05-10T00:26:00Z
          Message:               TunnelsAttached or ValidIPs Condition not Ready.
          Observed Generation:   1
          Reason:                Unknown
          Status:                False
          Type:                  Reconciled
          Last Transition Time:  2024-05-10T00:26:01Z
          Message:               ValidIPs or Reconciled Condition not Ready.
          Observed Generation:   1
          Reason:                Unknown
          Status:                False
          Type:                  AdvertisedRoutesReady
          Last Transition Time:  2024-05-10T00:26:13Z
          Message:               Ready
          Observed Generation:   1
          Reason:                Ready
          Status:                True
          Type:                  ReceivedRoutesValid
          Last Transition Time:  2024-05-10T00:26:01Z
          Message:               TunnelsAttached Condition not Ready.
          Observed Generation:   1
          Reason:                Unknown
          Status:                False
          Type:                  ReceivedRoutesReady
          Last Transition Time:  2024-05-10T00:26:01Z
          Message:               Condition "TunnelsAttached" is not ready.
          Observed Generation:   1
          Reason:                NotReady
          Status:                False
          Type:                  Ready
      ```
    

VPNBGPPeer 必须附加到 VPNTunnel。我们会在创建 VPN 隧道中处理此步骤。

后续步骤