VPC ネットワーク ピアリングを使用する

Google Cloud VPC ネットワーク ピアリングでは、2 つの Virtual Private Cloud(VPC)ネットワークが同じプロジェクトまたは同じ組織に属しているかにかかわらず、内部 IP アドレス接続できます。ピアリングは、デュアルスタック サブネットを使用するネットワーク間の接続をサポートします。

詳細については、VPC ネットワーク ピアリングをご覧ください。

ピアリング構成を作成する

操作を始める前に、ピアリング先の VPC ネットワークの名前を確認する必要があります。そのネットワークが別のプロジェクトにある場合は、そのプロジェクトのプロジェクト ID も必要です。VPC ネットワークのピアリング リクエストの一覧は表示できません。必要に応じて、ピアリングするネットワークの管理者にネットワーク名とプロジェクト名を確認してください。

ピアリングを構成することは、別の VPC ネットワークに接続する意思があることを表します。ピアリングされるそれぞれのネットワークが相手側とのピアリングを構成するまでは、両者は接続されません。相手側のネットワークでこちら側のネットワークとピアリングするための構成が行われると、双方のネットワークでピアリング状態が ACTIVE に変わり、接続が確立されます。相手側のネットワークで同じピアリング構成が行われていない場合、ピアリング状態は INACTIVE のままになります。これは、2 つのネットワークが接続されていないことを示します。

Google Cloud では、ピアリングされたネットワーク間で一度に 1 つのピアリング関連アクティビティしか許可されません。たとえば、あるネットワークとのピアリングを設定し、すぐに別のネットワークとのピアリングを設定しようとすると、オペレーションは失敗し、Error: There is a peering operation in progress on the local or peer network. Try again later. が返されます。

接続された 2 つのネットワークは常にサブネット ルートを交換します。ピアリングされたネットワークが、静的および動的 IPv4 カスタムルートと、動的 IPv6 カスタムルートをエクスポートするように構成されている場合、これらのカスタムルートをピアリングされたネットワークから必要に応じてインポートできます。詳細については、カスタムルートのインポートとエクスポートをご覧ください。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. [接続の作成] をクリックします。
  3. [続行] をクリックします。
  4. [名前] フィールドに、ピアリング構成の名前を入力します。
  5. [VPC ネットワーク] で、ピアリングするネットワークを選択します。
  6. ピアリング先のネットワークを選択します。

    • ピアリング先のネットワークが同じプロジェクト内にある場合は、[プロジェクト [NAME-OF-YOUR-PROJECT]] を選択した後、ピアリング先のネットワークを選択します。
    • ピアリング先のネットワークが別のプロジェクト内にある場合は、[別のプロジェクト] を選択します。ピアリング先のネットワークを含むプロジェクトの ID と、その VPC ネットワークの名前を指定します。
  7. [IP スタックタイプ] で、ピアリングされたネットワーク間で交換するサブネット ルートを指定します。

    • IPv4(シングルスタック): IPv4 ルートのみを交換します。
    • IPv4 と IPv6(デュアル スタック): IPv4 ルートと IPv6 ルートの両方を交換します。
  8. IPv4 と IPv6 のカスタムルートをインポートまたはエクスポートするには、次のオプションのいずれかまたは両方を選択します。

    • カスタムルートをインポートする: ピア ネットワークからカスタムルートをインポートします。ルートをインポートするには、ピア ネットワークでカスタムルートのエクスポートを有効にする必要があります。
    • カスタムルートをエクスポートする: カスタムルートをピア ネットワークにエクスポートします。ルートをエクスポートするには、ピア ネットワークでカスタムルートのインポートを有効にする必要があります。
  9. ネットワークまたはピア ネットワークが、サブネット内でプライベート パブリック IPv4 範囲を使用している場合、これらのルートはデフォルトでエクスポートされますが、インポートされません。プライベートで使用されるパブリック IPv4 サブネット ルートをインポートするには:

    • [パブリック IP を使用したサブネット ルートのインポート] を選択して、他のネットワークからエクスポートしたパブリック IP サブネット ルートをインポートします。
  10. [作成] をクリックします。

gcloud

VPC ネットワーク ピアリング接続を作成します。

gcloud compute networks peerings create PEERING_NAME \
    --network=NETWORK \
    --peer-project=PEER_PROJECT_ID \
    --peer-network=PEER_NETWORK_NAME \
    [--stack-type=STACK_TYPE] \
    [--import-custom-routes] \
    [--export-custom-routes] \
    [--import-subnet-routes-with-public-ip] \
    [--export-subnet-routes-with-public-ip]

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

  • PEERING_NAME: ピアリング構成の名前。
  • NETWORK: ピアリングするプロジェクトのネットワーク名。
  • PEER_PROJECT_ID: ピアリング先のネットワークを含むプロジェクトの ID。
  • PEER_NETWORK_NAME: ピアリング先のネットワーク名。
  • STACK_TYPE: ピアリング接続のスタックタイプ。IPv4 ルートのみを交換する場合は、IPV4_ONLY を指定します。あるいは、IPV4_IPV6 を指定して IPv4 ルートと IPv6 ルートの両方を交換します。IPV4_ONLY がデフォルト値です。
  • --import-custom-routes を使用すると、ネットワークはピアリングされるネットワークからカスタムルートを受け取ります。まず、ピアリングされたネットワークでルートをエクスポートする必要があります。
  • --export-custom-routes を使用すると、ネットワークはピアリングされるネットワークにカスタムルートをエクスポートします。ルートをインポートするように、ピアリングされたネットワークを設定する必要があります。
  • --import-subnet-routes-with-public-ip を使用すると、ネットワークがサブネット内でプライベート パブリック IPv4 アドレスを使用している場合に、ピアリングされたネットワークからサブネット ルートを受け取ります。まず、ピアリングされたネットワークでルートをエクスポートする必要があります。
  • --export-subnet-routes-with-public-ip を使用すると、ネットワークはプライベートで使用されているパブリック IP アドレスを含むサブネット ルートをエクスポートします。ルートをインポートするように、ピアリングされたネットワークを設定する必要があります。

Terraform

Terraform モジュールを使用してピアリング構成を作成できます。

module "peering1" {
  source        = "terraform-google-modules/network/google//modules/network-peering"
  version       = "~> 9.0"
  local_network = var.local_network # Replace with self link to VPC network "foobar" in quotes
  peer_network  = var.peer_network  # Replace with self link to VPC network "other" in quotes
}

ピアリングされた 2 つの VPC ネットワークの場合、各セルフリンクには、プロジェクト ID と VPC ネットワークの名前が含まれます。VPC ネットワークのセルフリンクを取得するには、VPC ネットワーク プロジェクトそれぞれで gcloud compute networks describe コマンドまたは networks.get メソッドを使用します。

local_network から peer_network へのピアリングを作成すると、ピアリング関係は双方向になります。peer_network から local_network へのピアリングが自動的に作成されます。

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

ピアリングされた VPC ネットワーク間でトラフィックが送受信されていることを確認する

VPC フローログを使用すると、VM インスタンスで送受信されたネットワーク フローを確認できます。また、ファイアウォール ルールロギングを使用して、ネットワーク間でのトラフィックの受け渡しを確認することもできます。ピアリングされるネットワーク間のトラフィックを許可(または拒否)する VPC ファイアウォール ルールを作成し、それらのルールのファイアウォール ルールロギングを有効にします。Cloud Logging で、どのファイアウォール ルールが一致したかを確認できます。

ピアリング接続の更新

既存の VPC ネットワーク ピアリング接続を更新すると、次のことができます。

  • VPC ネットワークが、ピア VPC ネットワーク間でカスタムルートまたはプライベート パブリック IPv4 サブネット ルートのエクスポートまたはインポートを行うかどうかを変更します。
  • 既存のピアリング接続を更新して、ピアリング ネットワーク間の IPv6 ルート交換を有効または無効にします。

ルートをインポートするのは、ピア ネットワークがルートをエクスポートしている場合のみです。ピア ネットワークでは、ルートをインポートする場合にのみルートを受け取ります。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. 更新するピアリング接続を選択します。
  3. [編集] をクリックします。
  4. [IP スタックタイプ] の選択を更新して、ピアリングされたネットワーク間で交換するサブネット ルートを指定します。
    • IPv4(シングルスタック): ピアリングを介した既存の IPv6 ルートの交換を停止し、IPv4 ルートのみの交換を継続します。
    • IPv4 と IPv6(デュアル スタック): IPv4 ルートと IPv6 ルートの交換を開始します(一致するピアリング接続で IP スタックタイプが [IPv4 と IPv6(デュアル スタック)] に設定されている場合)。
  5. IPv4 と IPv6 のカスタムルートをインポートまたはエクスポートするには、次のオプションのいずれかまたは両方を選択します。
    • カスタムルートをインポートして、相手側のネットワークからエクスポートされたカスタムルートをインポートする。
    • カスタムルートをエクスポートして、カスタムルートを他のネットワークにエクスポートする。他のネットワークは、使用するルートをインポートする必要があります。
  6. ネットワークまたはピア ネットワークが、サブネット内でプライベート パブリック IPv4 範囲を使用している場合、これらのルートはデフォルトでエクスポートされますが、インポートされません。プライベートで使用されるパブリック IPv4 サブネット ルートをインポートするには:
    • [パブリック IP を使用したサブネット ルートのインポート] を選択して、他のネットワークからエクスポートしたパブリック IP サブネット ルートをインポートします。
    • [保存] をクリックします。

gcloud

gcloud compute networks peerings update PEERING_NAME \
    --network=NETWORK \
    [--stack-type=STACK_TYPE] \
    [--import-custom-routes] \
    [--export-custom-routes] \
    [--export-subnet-routes-with-public-ip] \
    [--import-subnet-routes-with-public-ip]

以下を更新します。

  • PEERING_NAME: 既存のピアリング接続の名前。
  • NETWORK: ピアリングされているプロジェクト内のネットワークの名前。
  • STACK_TYPE: ピアリング接続のスタックタイプ。
    • ピアリングでの IPv6 ルートの既存の交換を停止し、IPv4 ルートのみの交換を継続するには、IPV4_ONLY を指定します。
    • 一致するピアリング接続の stack_typeIPV4_IPV6 に設定されている場合は、IPv4 ルートと IPv6 ルートの交換を開始するために、IPV4_IPV6 を指定します。
  • --import-custom-routes を使用すると、ネットワークはピアリングされるネットワークからカスタムルートを受け取ります。まず、ピアリングされたネットワークでルートをエクスポートする必要があります。
  • --export-custom-routes を使用すると、ネットワークはピアリングされるネットワークにカスタムルートをエクスポートします。ルートをインポートするように、ピアリングされたネットワークを設定する必要があります。
  • --import-subnet-routes-with-public-ip を使用すると、ネットワークがサブネット内でプライベート パブリック IPv4 アドレスを使用している場合に、ピアリングされたネットワークからサブネット ルートを受け取ります。まず、ピアリングされたネットワークでルートをエクスポートする必要があります。
  • --export-subnet-routes-with-public-ip を使用すると、ネットワークはプライベートで使用されているパブリック IP アドレスを含むサブネット ルートをエクスポートします。ルートをインポートするように、ピアリングされたネットワークを設定する必要があります。

ピアリング接続を一覧表示する

既存のピアリング接続を一覧表示すると、それぞれのステータスと、カスタムルートのインポートまたはエクスポートが行われているかを確認できます。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. 目的のピアリング接続を選択し、詳細を表示します。

gcloud

gcloud compute networks peerings list

ピアリング接続のルートを一覧表示する

VPC ネットワークがピアリング先の VPC ネットワークとの間でインポートまたはエクスポートを行っている動的ルートのリストを一覧表示できます。エクスポートされたルートでは、ピア ネットワークがカスタムルートを受け入れているか拒否しているかを確認できます。インポートされたルートでは、自分のネットワークがピア ネットワークからのカスタムルートを受け入れているか拒否しているかを確認できます。

リージョンによって表示されるルートの数が異なる場合があります。詳細については、トラブルシューティングをご覧ください。

コンソール

  1. Google Cloud コンソールで、[VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. 目的のピアリング接続を選択し、詳細を表示します。
  3. 自分のネットワークがインポートまたはエクスポートしているカスタムルートを表示します。リージョン セレクタを使用して、特定のリージョン内の動的ルートを表示します。サブネット ルートと静的ルートはグローバルであるため、すべてのリージョンに表示されます。

    • インポートされたカスタムルートを表示するには、[インポート済みのルート] タブを選択します。
    • エクスポートされたカスタムルートを表示するには、[エクスポート済みのルート] タブを選択します。

gcloud

gcloud compute networks peerings list-routes PEERING_NAME \
    --network=NETWORK \
    --region=REGION \
    --direction=DIRECTION

以下を更新します。

  • PEERING_NAME: 既存のピアリング接続の名前。
  • NETWORK: ピアリングされているプロジェクト内のネットワークの名前。
  • REGION: すべての動的ルートの一覧を取得するリージョン。サブネット ルートと静的ルートはグローバルであるため、すべてのリージョンに表示されます。
  • DIRECTION: インポートされたルート(incoming)とエクスポートされたルート(outgoing)のどちらの一覧を取得するかを指定します。

VPC ネットワークのピアリング接続を削除する

ピアリング構成の削除は、自分自身で行うこともピア VPC ネットワークのネットワーク管理者が行うこともできます。ピアリング構成を削除すると、相手側のネットワークでピアリング接続INACTIVE に切り替わり、ネットワーク間で共有されていたすべてのルートが削除されます。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. 削除するピアリングの横にあるチェックボックスをオンにします。
  3. [削除] をクリックします。

gcloud

gcloud compute networks peerings delete PEERING_NAME \
    --network=NETWORK

以下を更新します。

  • PEERING_NAME: 削除するピアリング接続の名前。
  • NETWORK: ピアリングされているプロジェクト内のネットワークの名前。

VPC ネットワーク ピアリングの設定例

たとえば、組織 organization-aproject-anetwork-aproject-bnetwork-b との間で VPC ネットワーク ピアリングを確立する必要があるとします。VPC ネットワーク ピアリングを正常に確立するには、network-anetwork-b の管理者がそれぞれのネットワークでピアリングを構成する必要があります。

ステップ 1: network-a を network-b とピアリングする

project-a で適切な IAM 権限を持つユーザーが、network-anetwork-b とピアリングするように構成します。たとえば、roles/editor または roles/compute.networkAdmin のロールを持つユーザーがピアリングを構成できます。

network-a から network-b へのピアリング
network-A から network-B へのピアリング(クリックで拡大)

始める前に、ピアリングするネットワークのプロジェクト ID とネットワーク名が必要です。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. [接続の作成] をクリックします。
  3. [続行] をクリックします。
  4. 自分側の接続に対して、[名前] に peer-ab と入力します。
  5. [VPC ネットワーク] で、ピアリングするネットワークを選択します。
  6. 同じプロジェクト内でピアリングする場合を除き、[ピアリングした VPC ネットワーク] ラジオボタンを In another project に設定します。
  7. 他のプロジェクトのプロジェクト ID を指定します。
  8. 他のネットワークの VPC ネットワーク名を指定します。
  9. [カスタムルートをインポートする] と [カスタムルートをエクスポートする] をオンにします。
  10. [作成] をクリックします。

gcloud

gcloud compute networks peerings create peer-ab \
    --network=network-a \
    --peer-project=project-b \
    --peer-network=network-b \
    --import-custom-routes \
    --export-custom-routes

project-bnetwork-b に一致する構成がないため、この時点でピアリング状態は INACTIVE のままになります。

ピアリング状態が ACTIVE になると、VPC ネットワーク ピアリングで自動的にサブネット ルートが交換されます。さらに Google Cloud では、ピアリング接続を介してカスタムルート(静的ルートと動的ルート)をインポートまたはエクスポートすることで、カスタムルートの交換を行います。カスタムルートを共有するには、あらかじめ双方のネットワークがカスタムルートを交換できるように構成されている必要があります。詳細については、カスタムルートのインポートとエクスポートをご覧ください。

現在のピアリング状態を確認するには、ピアリング接続を表示します。

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. ステータスに「ピア ネットワークの接続を待機しています」と表示されます。

gcloud

gcloud compute networks peerings list --network network-a

ステップ 2: network-b を network-a とピアリングする

ピアリングを両側で ACTIVE 状態にするには、project-bNetworkAdmin または適切な IAM 権限を持つユーザーが network-b から network-a に同じ構成を行う必要があります。

network-b から network-a へのピアリング(クリックで拡大)
network-A から network-B へのピアリング(クリックで拡大)

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. [接続の作成] をクリックします。
  3. [続行] をクリックします。
  4. 自分側の接続に対して、[名前] に peer-ba と入力します。
  5. [VPC ネットワーク] で、ピアリングするネットワークを選択します。
  6. 同じプロジェクト内でピアリングする場合を除き、[ピアリングした VPC ネットワーク] ラジオボタンを In another project に設定します。
  7. 他のプロジェクトのプロジェクト ID を指定します。
  8. 他のネットワークの VPC ネットワーク名を指定します。
  9. [カスタムルートをインポートする] と [カスタムルートをエクスポートする] をオンにします。
  10. [作成] をクリックします。

gcloud

gcloud compute networks peerings create peer-ba \
     --network=network-b \
     --peer-project=project-a \
     --peer-network=network-a \
     --import-custom-routes \
     --export-custom-routes

ステップ 3: VPC ネットワーク ピアリングが ACTIVE になる

ピアリングが ACTIVE 状態に移行すると、すぐにサブネット ルートとカスタムルートが交換されます。次のトラフィック フローが設定されます。

  • ピアリングされたネットワークの VM インスタンス間: フルメッシュ接続
  • 一方のネットワークの VM インスタンスから、ピアリングされたネットワークの内部パススルー ネットワーク ロードバランサ エンドポイント
ACTIVE 状態のピアリング(クリックで拡大)
ACTIVE 状態のピアリング(クリックで拡大)

コンソール

  1. Google Cloud コンソールの [VPC ネットワーク ピアリング] ページに移動します。
    [VPC ネットワーク ピアリング] に移動
  2. ステータスに「接続済み」と表示されます。
  3. 他のプロジェクトで [VPC ネットワーク ピアリング] ページに移動し、そこでもステータスに「接続済み」と表示されていることを確認します。

gcloud

gcloud compute networks peerings list --network network-a

VPC ネットワーク ピア間で、ピアリングされたネットワークの CIDR 接頭辞へのルートが公開されます。これらのルートは、アクティブなピアリング接続用に生成される暗黙的なルートです。対応するルートリソースはありません。次の手順を行うと、project-a のすべての VPC ネットワークのルートが一覧表示されます。

コンソール

  1. Google Cloud コンソールの [ルート] ページに移動します。
    [ルート] に移動

gcloud

gcloud compute routes list --project project-a

複数のピアリング接続を作成する

ここでは、network-a の VM インスタンスが 2 つの異なる外部組織(SaaS1SaaS2)のサービスにアクセスする場合について考えてみます。内部 IP アドレスのみを使用して両方のサービスにアクセスするには、2 つのピアリング接続が必要です。

  • network-a によって、SaaS1 内の network-b がピアリングされます。
  • network-a によって、SaaS2 内の network-c がピアリングされます。

VPC ネットワーク ピアリングでは、network-bnetwork-c が異なるプロジェクトや異なる組織にあっても構いません。

組織間のピアリング(クリックで拡大)
組織間のピアリング(クリックで拡大)

この設定を作成するには、2 つの異なるピアリング セッションを作成します。

割り当てと上限

VPC ネットワーク ピアリングの割り当てと上限をご覧ください。

トラブルシューティング

以降のセクションでは、VPC ネットワーク ピアリングのトラブルシューティング方法について説明します。

ピア VM に到達できない

ピアリング接続が ACTIVE になった後、ピアリングされたネットワーク間ですべてのトラフィック フローが設定されるまでに 1 分ほどかかることがあります。所要時間は、ピアリングしているネットワークのサイズによって異なります。ピアリング接続を最近設定した場合は、1 分ほど待ってからもう一度試してください。また、ピア VPC ネットワークのサブネット CIDR へのアクセスおよび CIDR からのアクセスをブロックするファイアウォール ルールがないことを確認してください。

ピアリングされたネットワーク間でカスタムルートが交換されない

まず、ピアリング接続のルートを一覧表示してください。目的の宛先へのルートが表示されない場合は、次の点を確認してください。

  • ピアリング接続を一覧表示します。目的の宛先範囲を含むネットワークを見つけて、そのピアリング状態が ACTIVE であることを確認します。ピアリング接続が INACTIVE の場合、相手側のネットワークにこちら側のネットワークのピアリング構成が存在していません。相手側のネットワークを自分で管理していない場合は、それを管理しているネットワーク管理者と協力する必要があります。

  • 自分のネットワークのピアリング構成を更新して、相手側のネットワークからカスタムルートをインポートするように構成します。相手側のネットワークがそのカスタムルートをエクスポートするように構成されていることを確認してください。

ピア ネットワークを宛先とするトラフィックがドロップされる

まず、ピアリング接続を一覧表示して、自分のネットワークが相手側にまだ接続されていることを確認します。ピアリング状態が INACTIVE であれば、こちら側のネットワークのピアリング構成が相手側のネットワークに存在していません。相手側のネットワークを自分で管理していない場合は、それを管理しているネットワーク管理者に問い合わせる必要があります。

次に、ピア接続のルートを一覧表示します。インポートできるルートの数は、VPC ネットワーク ピアリングの上限までです。

トラフィックが想定外のネクストホップに送信される

ルーティング順序を調べて、別のルートが代わりに選択されたかどうかを確認してください。

特定の VPC ネットワークとピアリングできない

特定の VPC ネットワークでピアリング構成を作成できない場合は、組織のポリシーによって、ネットワークでピアリングできる VPC ネットワークが制限されていることもあります。組織ポリシーで、許可されたネットワークのリストに、ロードバランサを作成するピアを追加するか、組織管理者にお問い合わせください。詳細については、constraints/compute.restrictVpcPeering の制約をご覧ください。

ピアリングの stack_typeIPV4_IPV6 に更新した後、IPv6 サブネット ルートが交換されない

一致するピアリング接続の stack_type の値も IPV4_IPV6 に設定されていることを確認してください。IPv6 ルートとトラフィックを交換するには、ピアリング接続の両側で stack_typeIPV4_IPV6 に設定する必要があります。

ピアリングの stack_typeIPV4_IPV6 に更新した後、IPv6 動的ルートがエクスポートされない

動的 IPv6 ルートと静的 IPv6 ルートをエクスポートするには、一致するピアリング接続で –export-custom-route フラグと –import-custom-route フラグを有効にする必要があります。

カスタムルートのインポートとエクスポートを有効にした後、IPv6 静的ルートと動的ルートが交換されない

両方のピアリングで stack_typeIPV4_IPV6 に設定されていることを確認してください。

一部の動的ルートはインポートされていますが、その一部しか表示されない

次の点を考慮してください。

  • リージョンによって表示されるルートの数が異なる場合があります。同じ IP アドレス範囲を持つ複数のルートがリージョン間で交換される場合、優先度の最も高いルートのみがインポートされます。これらのルートを同じリージョン間で交換する場合は、すべてのルートがインポートされます。

  • ネットワークがピアリング グループ内の動的ルートの上限に達すると、ルートがインポートされなくなります。ただし、どのルートが省略されているかを確認することはできません。

次のステップ