VPN 接続を作成して管理する

このページでは、Distributed Cloud ゾーンで Google Distributed Cloud VPN 接続リソースを作成して管理する方法について説明します。

この機能は、Distributed Cloud Rack でのみ使用できます。Distributed Cloud Servers は VPN 接続リソースをサポートしていません。

Distributed Cloud VPN 接続の詳細については、Distributed Cloud の仕組みをご覧ください。

次の点にご注意ください。

  • Distributed Cloud VPN 接続で必要なトラフィックを許可するようにネットワークを構成する必要があります。

  • Distributed Cloud VPN 接続を作成すると、Distributed Cloud は必要な Cloud VPN ゲートウェイと Cloud Router リソースを作成します。Cloud VPN ゲートウェイの名前には anthos-mcc という接頭辞が付いています。Cloud Router の名前には gdce という接頭辞が付いています。これらのリソースは変更しないでください。変更すると、Distributed Cloud VPN 接続が機能しなくなる可能性があります。これらのリソースを誤って変更した場合は、影響を受ける Distributed Cloud VPN 接続を削除して再作成する必要があります。

  • Distributed Cloud は、Google Cloud プロジェクトとリージョンで最初の Distributed Cloud VPN 接続を作成するときに、リージョンごとにプロジェクトごとに 1 つの Cloud Router を作成します。 Google Cloud その Google Cloud プロジェクトとリージョンで後で作成されるすべての VPN 接続は、同じ Cloud Router リソースを再利用します。

  • Cloud Router リソースを削除できるのは、セカンダリ ネットワーク インターフェースがアタッチされていない場合のみです。Distributed Cloud は、Cloud Router に接続されている最後の VPN 接続を削除すると、Cloud Router を自動的に削除します。

  • 分散 Cloud VPN 接続は IPv4 アドレスのみをサポートします。

  • Distributed Cloud クラスタごとに作成できる VPN 接続は 1 つのみです。

  • ローカル ネットワークで複数のネットワーク アドレス変換(NAT)ゲートウェイを使用する場合は、Distributed Cloud インストールで Virtual Private Cloud(VPC)ネットワークへのアウトバウンド トラフィックに単一の IP アドレスを使用するように構成する必要があります。

  • デフォルトでは、Distributed Cloud は単一ノードに単一の VPN クライアントを構成し、2 つの VPN トンネル( Google Cloud エンドの HA VPN とも呼ばれます)を使用して Google Cloud に接続します。--high-availability フラグを使用すると、VPN 接続の可用性をさらに高めることができます。このフラグは、2 つの別々のノードに 2 つの VPN クライアントを構成して、合計 4 つの VPN トンネルを構成するように Distributed Cloud に指示します。

  • VPN 接続の構成を変更する場合は、VPN 接続を削除して再作成する必要があります。

  • VPN 接続は、Google Cloud CLI または Distributed Cloud Edge Container API を使用して管理できます。

VPN 接続の作成

Distributed Cloud VPN 接続を作成するには、このセクションの手順を完了します。

このタスクを完了するには、 Google Cloud プロジェクトに対する Edge コンテナ管理者ロールroles/edgecontainer.admin)が必要です。

gcloud

gcloud edge-cloud container vpn-connections create コマンドを使用します。

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --router=ROUTER_NAME \
    --high-availability

次のように置き換えます。

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • CLUSTER_NAME: 対象とする Distributed Cloud クラスタの名前。
  • VPC_NETWORK_NAME: この VPN 接続が参照するターゲット VPC ネットワークの名前。このネットワークは、Distributed Cloud インストールと同じ Google Cloud プロジェクトに存在する必要があります。
  • NAT_GATEWAY_IP: ターゲット クラスタの NAT ゲートウェイ IP アドレス。NAT を使用していない場合は、このフラグを省略します。
  • ROUTER_NAME(省略可): この VPN 接続に使用する既存の Cloud Router リソースを指定します。それ以外の場合、ターゲットのGoogle Cloud プロジェクトとリージョンに Cloud Router がまだ存在しない場合は、Distributed Cloud によって Cloud Router が自動的に作成されます。
  • --high-availability(省略可): 2 つの別々のノードで実行される 2 つの別々の VPN クライアントを設定して、クラスタ側でこの VPN 接続を高可用性用に構成します。高可用性を無効にするには、このフラグを省略します。

API

projects.locations.vpnConnections.create メソッドに POST リクエストを送信します。

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID
  "enableHighAvailability": HA_ENABLE,
  "router": ROUTER_NAME,
}

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_ID: このノードプール リソースを識別する一意のプログラム ID。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。
  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • NAT_GATEWAY: NAT ゲートウェイの IP アドレス。
  • CLUSTER_PATH: ターゲット クラスタの完全な正規パス。
  • VPC_NETWORK_ID: ターゲット VPC ネットワークの ID。
  • HA_ENABLE: クラスタ側で高可用性用にこの VPN 接続を構成するかどうかを示します。TRUE に設定すると、2 つの別々のノードで実行される 2 つの別々の VPN クライアントが構成されます。
  • ROUTER_NAME(省略可): この VPN 接続に使用する既存の Cloud Router リソースを指定します。それ以外の場合、ターゲットのGoogle Cloud プロジェクトとリージョンに Cloud Router がまだ存在しない場合は、Distributed Cloud によって Cloud Router が自動的に作成されます。

VPN 接続を一覧表示する

Distributed Cloud クラスタ用にプロビジョニングされた VPN 接続を一覧表示するには、このセクションの手順を行います。

このタスクを完了するには、 Google Cloud プロジェクトに対する Edge コンテナ閲覧者ロールroles/edgecontainer.viewer)が必要です。

gcloud

gcloud edge-cloud container vpn-connections list コマンドを使用します。

gcloud edge-cloud container vpn-connections list \
    --project=PROJECT_ID \
    --location=REGION

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。

API

projects.locations.vpnConnections.list メソッドに GET リクエストを送信します。

GET /v1/PROJECT_ID/locations/REGION/vpnConnections?filter=FILTER&pageSize=PAGE_SIZE&orderBy=SORT_BY&pageToken=PAGE_TOKEN

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • FILTER: 返される結果を特定の値に制限する式。
  • PAGE_SIZE: ページごとに返す結果の数
  • SORT_BY: 返される結果の並べ替えの基準とするフィールド名のカンマ区切りリストデフォルトの並べ替え順は昇順です。降順で並べ替えるには、目的のフィールドに ~ という接頭辞を付けます。
  • PAGE_TOKEN: レスポンスの nextPageToken フィールドで、最後のリスト リクエストのレスポンスで受け取ったトークン。このトークンを送信して、結果のページを受け取ります。

VPN 接続に関する情報を取得する

Distributed Cloud VPN 接続に関する情報を取得するには、このセクションの手順を完了します。

このタスクを完了するには、 Google Cloud プロジェクトに対する Edge コンテナ閲覧者ロールroles/edgecontainer.viewer)が必要です。

gcloud

gcloud edge-cloud container vpn-connections describe コマンドを使用します。

gcloud edge-cloud container vpn-connections describe VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION

次のように置き換えます。

  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。

API

projects.locations.vpnConnections.get メソッドに GET リクエストを送信します。

GET /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。

VPN 接続の削除

Distributed Cloud VPN 接続を削除するには、このセクションの手順を完了します。

Distributed Cloud が以前に Google Cloud プロジェクトで作成した Cloud Router リソースに関連付けられている最後の VPN 接続を削除する場合、VPN 接続を削除すると、関連付けられている Cloud Router リソースが自動的に削除されます。ただし、この状況で自動的に削除されるのは、Distributed Cloud によって自動的に作成された Cloud Router リソースのみです。Distributed Cloud は、--router フラグを使用して指定された既存の Cloud Router リソースを削除しません。

このタスクを完了するには、 Google Cloud プロジェクトに対する Edge コンテナ管理者ロールroles/edgecontainer.admin)が必要です。

gcloud

gcloud edge-cloud container vpn-connections delete コマンドを使用します。

gcloud edge-cloud container vpn-connections delete VPN_CONNECTION_NAME \
    --location=REGION \
    --project=PROJECT_ID

次のように置き換えます。

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。

API

projects.locations.vpnConnections.delete メソッドに DELETE リクエストを送信します。

DELETE /v1/PROJECT_ID/locations/REGION/vpnConnections/VPN_CONNECTION_NAME?requestId=REQUEST_ID

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_NAME: ターゲット VPN 接続の名前。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。

プロジェクト間の VPN 接続を管理する

Distributed Cloud では、Distributed Cloud クラスタを含む Google Cloud プロジェクトとは異なる Google Cloud プロジェクトの VPC ネットワークへの VPN 接続を作成することもできます。

前提条件

プロジェクト間の VPN 接続を作成するには、このセクションの前提条件を満たす必要があります。

呼び出し元アカウントの権限

ターゲット VPC プロジェクトの呼び出し元ユーザー アカウントには、次の権限が必要です。これらの権限は、プロジェクト IAM 管理者ロールroles/resourcemanager.projectIamAdmin)にカプセル化されています。

  • resourcemanager.projects.get
  • resourcemanager.projects.getIamPolicy
  • resourcemanager.projects.setIamPolicy

IAM のロールと権限の設定方法については、プロジェクト、フォルダ、組織に対するアクセス権の管理をご覧ください。

Distributed Cloud サービス アカウントの権限

Distributed Cloud が、プロジェクト間の VPN 接続を有効にするターゲット VPC プロジェクトに Cloud Router リソースと Cloud VPN リソースを作成できるようにするには、Distributed Cloud クラスタ内の Distributed Cloud サービス アカウントに Compute ネットワーク管理者ロールroles/compute.networkAdmin)を付与する必要があります。

Compute ネットワーク管理者のロールを付与する手順は次のとおりです。

gcloud

gcloud projects add-iam-policy-binding コマンドを使用します。

gcloud projects add-iam-policy-binding VPC_PROJECT_ID \
    --member="serviceAccount:service-PROJECT_NUM@gcp-sa-edgecontainer.iam.gserviceaccount.com" \
    --role="roles/compute.networkAdmin" \
    --project=VPC_PROJECT_ID

次のように置き換えます。

  • VPC_PROJECT_ID: ターゲット VPC プロジェクトの ID。
  • PROJECT_NUM: ターゲットの Distributed Cloud Google Cloud プロジェクトの番号。

プロジェクト間の VPN 接続を作成する

別のGoogle Cloud プロジェクトの VPC ネットワークへの VPN 接続を作成するには、このセクションの手順を完了します。

gcloud

gcloud edge-cloud container vpn-connections create コマンドを使用します。

gcloud edge-cloud container vpn-connections create VPN_CONNECTION_NAME \
    --project=PROJECT_ID \
    --location=REGION \
    --cluster=CLUSTER_NAME \
    --vpc-project=VPC_PROJECT_ID \
    --vpc-network=VPC_NETWORK_NAME \
    --nat-gateway-ip=NAT_GATEWAY_IP \
    --high-availability

次のように置き換えます。

  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • PROJECT_ID: ターゲットの Distributed Cloud クラスタ Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • CLUSTER_NAME: 対象とする Distributed Cloud クラスタの名前。
  • VPC_PROJECT_ID: ターゲット VPC ネットワークを含むターゲットGoogle Cloud プロジェクトの ID。
  • VPC_NETWORK_NAME: この VPN 接続が参照するターゲット VPC ネットワークの名前。
  • NAT_GATEWAY_IP: ターゲット クラスタの NAT ゲートウェイ IP アドレス。NAT を使用していない場合は、このフラグを省略します。
  • --high-availability(省略可): 2 つの個別のノードで実行される 2 つの個別の VPN クライアントを設定して、クラスタ側の高可用性用にこの VPN 接続を構成します。高可用性を無効にするには、このフラグを省略します。

API

projects.locations.vpnConnections.create メソッドに POST リクエストを送信します。

POST /v1/PROJECT_ID/locations/REGION/vpnConnections?vpnConnectionId=VPN_CONNECTION_ID&requestId=REQUEST_ID
{
  "name": string,
  "labels": {
   },
  "natGatewayIp": NAT_GATEWAY,
  "cluster": CLUSTER_PATH,
  "vpc": VPC_NETWORK_ID,
  "vpcProject": VPC_PROJECT_ID,
  "vpcServiceAccount": var>VPC_PROJECT_SERVICE_ACCOUNT,
  "enableHighAvailability": HA_ENABLE,
}

次のように置き換えます。

  • PROJECT_ID: ターゲット Google Cloud プロジェクトの ID。
  • REGION: ターゲットの Distributed Cloud ゾーンが作成される Google Cloud リージョン。
  • VPN_CONNECTION_ID: このノードプール リソースを識別する一意のプログラム ID。
  • REQUEST_ID: このリクエストを識別する一意のプログラム ID。
  • VPN_CONNECTION_NAME: この VPN 接続を一意に識別する説明的な名前。
  • NAT_GATEWAY: NAT ゲートウェイの IP アドレス。
  • CLUSTER_PATH: ターゲット クラスタの完全な正規パス。
  • VPC_NETWORK_ID: ターゲット VPC ネットワークの ID。
  • VPC_PROJECT_ID: ターゲット VPC ネットワークを含むターゲットGoogle Cloud プロジェクトの ID。
  • HA_ENABLE: クラスタ側で高可用性用にこの VPN 接続を構成するかどうかを示します。TRUE に設定すると、2 つの別々のノードで実行される 2 つの別々の VPN クライアントが構成されます。

プロジェクト間の VPN 接続の Cloud Audit Logs

クロス プロジェクト VPN 接続を作成すると、Cloud Audit Logs ログは次のように書き込まれます。

  • Distributed Cloud クラスタの監査ログには、クロス プロジェクト VPN 接続の長時間実行オペレーション、認証、認可に関する情報が記録されます。この情報には、作成オペレーションの呼び出し元と、呼び出し元に付与または拒否された権限が含まれます。
  • ターゲット VPC プロジェクトの監査ログには、Cloud Router や Cloud VPN リソースなど、プロジェクト間の VPN 接続を有効にする Google Cloud リソースに関する情報が記録されます。これらのリソースにアクセスする呼び出し元は、Edge Container サービス エージェントのロールroles/edgecontainer.serviceAgent)を付与した Distributed Cloud サービス アカウントです。

VPN 接続の制限事項

特定の VPN 接続を作成したクラスタのノードプールを変更する場合は、その VPN 接続を削除して再作成する必要があります。そうしないと、次のような予期しない動作が発生する可能性があります。

  • VPN 接続が断続的に切断される
  • Distributed Cloud ゾーンの他のクラスタで VPN 接続を作成できない

プロジェクト間の VPN 接続の制限事項

また、プロジェクト間の VPN 接続には次の制限があります。

  • クロス プロジェクト VPN 接続リソースは、Distributed Cloud クラスタにのみ存在します。
  • ターゲット VPC プロジェクトで Distributed Cloud サービス アカウントの権限を変更すると、Distributed Cloud クラスタからクロス プロジェクト VPN 接続を削除できなくなります。

次のステップ