Google Cloud と Azure 間の HA VPN 接続を作成する

このチュートリアルでは、Google Cloud と Microsoft Azure との間に高可用性(HA)仮想プライベート ネットワーク(VPN)接続を作成する方法について説明します。こうした HA VPN サービスは、Google Cloud の Virtual Private Cloud(VPC)ネットワークと Microsoft Azure Virtual Network Gateway との間の直接通信に使用できます。

このドキュメントは、VPC ネットワーク、BGP(Border Gateway Protocol)、VPN、インターネット プロトコル セキュリティ(IPsec)トンネルの基本コンセプトについて理解していることを前提としています。

Google Cloud には、VPC ネットワークを Google Cloud の外部(Microsoft Azure など)で実行されている環境に IPsec VPN 接続を介して接続できる高可用性(HA)VPN サービスが用意されています。Google のベスト プラクティスに基づいて構成した場合、HA VPN には、99.99% のサービス可用性を保証するサービスレベル契約(SLA)が適用されます。

アーキテクチャの概要

次の図に、このドキュメントで説明するアーキテクチャを示します。

アーキテクチャの概要

この図のアーキテクチャには、次のコンポーネントが含まれています。

  • Cloud Router: 完全に分散されたフルマネージドの Google Cloud サービスを使用して、VPC ネットワークで BGP による動的ルーティングを実現できます。
  • HA VPN ゲートウェイ: Google Cloud 上で実行される Google 管理の VPN ゲートウェイ。各 HA VPN ゲートウェイはリージョン リソースで、2 つのインターフェース(インターフェース 0 と 1)があります。これらのインターフェースには、それぞれ独自の外部 IP アドレスが設定されています。
  • VPN トンネル: Google Cloud の HA VPN ゲートウェイから Azure のピア VPN ゲートウェイへの接続。暗号化されたトラフィックが通過します。
  • 仮想ネットワーク ゲートウェイ: Azure Cloud サービスで定義された 2 つのプライベート ネットワーク。

各仮想ネットワーク ゲートウェイ接続には、1 つのカスタマー ゲートウェイ(この場合は Google Cloud の HA VPN ゲートウェイ インターフェース)を指すように構成された 2 つのトンネルがあります。この構成で、99.99% のサービス可用性を保証する SLA を満たすために必要な Cloud VPN トンネルの最小数は 2 です。

手順に必要な IP アドレス

このドキュメントの手順では、Google Cloud と Azure でさまざまな IP アドレスを使用します。これらの IP アドレスの一部はリソースの作成時に自動的に割り当てられます。

自動的に割り当てられていない場合は、使用可能な IP アドレスと組織のニーズに基づいて IP アドレスを定義します。

Google Cloud のリソースには次の IP アドレスが必要です。

  • Virtual Private Cloud ネットワークのサブネットを作成する際に、ユーザー定義の IP アドレス範囲が必要になります。
  • HA VPN ゲートウェイを作成すると、Google Cloud は、2 つの外部 IP アドレスを HA VPN ゲートウェイに自動的に割り当てます。ゲートウェイの 2 つのインターフェースには、それぞれ 1 つの IP アドレスが割り当てられます。これらのインターフェースの IP アドレスは、Azure でローカル ネットワーク ゲートウェイを設定する際に必要になります。
  • Google Cloud で HA VPN トンネルを作成するときに、それぞれのトンネルに、Cloud Router への BGP インターフェースと Azure のアクティブ / アクティブ仮想ネットワーク ゲートウェイ(VPN ゲートウェイ)への BGP インターフェースを作成します。各トンネルに、169.254.21.*169.254.22.* の範囲内の /30 ブロックからリンクローカル BGP ピアリング IPv4 アドレスのペアを設定します。これらの範囲は、Azure APIPA BGP ピアリング IPv4 アドレスの有効な範囲です。合計 4 つの IP アドレスを選択する必要があります。

    選択する BGP ピアリング IPv4 アドレスは、VPC ネットワークのすべてのリージョンにある Cloud Router 間で一意にする必要があります。

Azure のリソースには次の IP アドレスが必要です。

  • 仮想ネットワーク(VNet)を作成するときに、VNet に、ネットワークの IP アドレス空間とネットワークのサブネット用の IP アドレス空間を設定します。デフォルトのアドレス空間を使用するか、ユーザー定義のアドレス空間を入力します。
  • アクティブ / アクティブ仮想ネットワーク ゲートウェイ(VPN ゲートウェイ)を作成するときに、ゲートウェイにサブネット アドレス範囲を設定します。デフォルトの範囲を使用するか、ユーザー定義の範囲を入力します。
  • アクティブ / アクティブ VPN ゲートウェイに BGP を構成するときに、ゲートウェイに APIPA BGP ピアリング IP アドレスを 2 つ設定します。前述のように、Azure APIPA BGP ピアリング IP アドレスの有効な範囲は 169.254.21.*169.254.22.* です。
  • アクティブ / アクティブ VPN ゲートウェイを作成すると、Azure は、各ゲートウェイのインターフェースに外部 IP アドレスを自動的に割り当てます。これらの IP アドレスは、Google Cloud でピア VPN ゲートウェイを設定する際に必要になります。

IP アドレスを定義する場合は、ネットワークごとに一意の IP アドレスのセットを使用してください。

目標

  • Azure Virtual Network(VNet)とアクティブ / アクティブ仮想ネットワーク ゲートウェイ(VPN ゲートウェイ)を作成する。
  • Google Cloud で必要なコンポーネント(VPC ネットワーク、Cloud Router、HA VPN ゲートウェイ、ピア VPN ゲートウェイ、BGP セッションを含む 2 つの HA VPN トンネル)を作成する。
  • Azure で 2 つのローカル ネットワーク ゲートウェイと 2 つの VPN 接続を作成する。Cloud Router の構成を確認し、Google Cloud の HA VPN トンネルのステータスを確認する。
  • Google Cloud の VPC ネットワークと Azure の仮想ネットワーク(VNet)間の Cloud VPN 接続をテストする。

費用

このドキュメントの手順では、Google Cloud の課金対象となる次のコンポーネントを使用します。

Google Cloud コンポーネントの費用を見積もるには、Google Cloud 料金計算ツールを使用してください。

このドキュメントの手順では、Microsoft Azure Cloud サービスの課金対象となるコンポーネントを使用します。これには、次のものが含まれます。

  • VPN ゲートウェイ
  • ローカル ネットワーク ゲートウェイ

Azure コンポーネントの費用を見積もるには、Azure 料金計算ツールを使用してください。

始める前に

  1. Google Cloud Console の [プロジェクト セレクタ] ページで、Google Cloud プロジェクトを選択または作成します。

    プロジェクト セレクタに移動

  2. Google Cloud プロジェクトで課金が有効になっていることを確認します

  3. Compute Engine API を有効にします。

    API を有効にする

  4. Google Cloud コンソールで、「Cloud Shell をアクティブにする」をクリックします。

    Cloud Shell をアクティブにする

  5. ネットワーク コンポーネントの構成に必要な管理者ロールを付与されていることを確認します。

    • ネットワーク管理者: compute.networkAdmin
    • セキュリティ管理者: compute.securityAdmin
    • Compute 管理者: compute.admin

    これらのロールの目的の詳細については、ネットワーク関連ジョブ機能の IAM のロールをご覧ください。

Azure で VNet とアクティブ / アクティブ VPN ゲートウェイを作成する

Azure で次のコンポーネントを設定する必要があります。

  • Azure 仮想ネットワーク(VNet)。これにより、Azure のリソースと Google Cloud VPN の通信が可能になります。
  • アクティブ / アクティブ仮想ネットワーク ゲートウェイ(VPN ゲートウェイ)。これにより、ゲートウェイの仮想マシン(VM)の両方のインスタンスが Google Cloud VPN への VPN トンネルを確立できるようになります。

VNet を作成する

VNet により、Azure リソースとインターネット、その他のネットワーク(Cloud VPN など)の安全な通信が可能になります。VNet の作成方法の詳細については、VNet の作成に関する Azure ドキュメントをご覧ください。

  1. Azure Portal にログインします。
  2. [リソース、サービス、ドキュメントの検索(G+/)] ボックスに「virtual network」と入力します。
  3. Marketplace の検索結果から [仮想ネットワーク] を選択します。
  4. [仮想ネットワーク] ページで、[作成] を選択します。
  5. [仮想ネットワークの作成] ページの [基本] タブで、[プロジェクトの詳細] と [インスタンスの詳細] に次の VNet 設定を構成します。

    1. [サブスクリプション] ボックスで、表示されているサブスクリプションが正しいことを確認します。サブスクリプションを変更するには、リストからサブスクリプションを選択します。
    2. リソース グループを指定するには、[新規作成] をクリックして新しいグループを作成し、リソース グループの名前として「azure‑to‑google‑resgroup」などの名前を入力します。
    3. [名前] ボックスに、VNet の名前を入力します(例: azure‑to‑google‑network)。
    4. [リージョン] ボックスで、VNet のロケーションを選択します。

      選択したロケーションによって、この仮想ネットワークにデプロイするリソースのストレージ ロケーションが決まります。

  6. [IP アドレス] タブの [IPv4 アドレス空間] ボックスで、Azure によって作成されたデフォルトのアドレス空間とサブネットを使用します。

  7. [セキュリティ] タブで、BastionHostDDos Protection Standardファイアウォールの値を、デフォルト値の [無効] に設定します。

  8. VNet 設定を確認するには、[確認と作成] を選択します。

  9. 設定を確認したら、[作成] を選択します。

アクティブ / アクティブ VPN ゲートウェイを作成する

次の手順では、アクティブ / アクティブ VPN ゲートウェイを作成します。

  • 最初に、プロジェクトとインスタンスの詳細を定義します。
  • 次に、ゲートウェイの IP アドレスを指定します。

ここでは、アクティブ / アクティブ VPN ゲートウェイのみを作成します。Azure で必要なトンネルを構成する前に、Google Cloud コンポーネントを作成する必要があります。アクティブ / アクティブ VPN ゲートウェイの詳しい作成方法については、Azure ドキュメントの portal を使用してアクティブ / アクティブな VPN ゲートウェイを構成するをご覧ください。

ゲートウェイの詳細を定義する

  1. Azure Portal にログインします。
  2. [リソース、サービス、ドキュメントの検索(G+/)] に「virtual network gateway」と入力します。
  3. 検索結果の [サービス] で、[仮想ネットワーク ゲートウェイ] を見つけて選択します。
  4. [仮想ネットワーク ゲートウェイ] ページで、[作成] を選択します。
  5. [仮想ネットワーク ゲートウェイの作成] ページの [基本] タブで、[プロジェクトの詳細] と [インスタンスの詳細] セクションのオプションに次の値を指定します。

    1. [サブスクリプション] リストで、使用するサブスクリプションを選択します。
    2. (省略可)[ゲートウェイ サブネットのアドレス範囲] ボックスに、サブネットのアドレス範囲を入力します。
    3. [リソース グループ] に、このページで選択した仮想ネットワークに対応するリソース グループが表示されていることを確認します。
    4. [名前] に、ゲートウェイの名前(azure‑to‑google‑gateway など)を入力します。
    5. [リージョン] で、VNET の作成に使用したリージョンを選択します。
    6. [ゲートウェイの種類] で、[VPN] を選択します。
    7. [VPN の種類] で、[ルートベース] を選択します。

    8. [SKU] リストで、使用するゲートウェイ SKU を選択します。

      プルダウンに表示される SKU は、選択した VPN タイプによって異なります。

    9. [世代] リストで、使用する世代を選択します。

    10. [仮想ネットワーク] リストで、前に作成した VNet を選択します。

  6. 次の手順はこのページから行います。

ゲートウェイ IP アドレスを定義する

  1. [仮想ネットワーク ゲートウェイの作成] ページの [基本] タブで、次の手順に沿って、アクティブ / アクティブ VPN ゲートウェイで使用する外部 IP アドレスを作成します。

    1. [パブリック IP アドレス] で、[新規作成] を選択します。

      Azure では、アクティブ / アクティブ VPN ゲートウェイに外部 IP アドレスが自動的に割り当てられます。

    2. [パブリック IP アドレス名] ボックスに、外部 IP アドレス インスタンスの名前を入力します(例: azure‑to‑google‑network‑ip1)。

    3. [アクティブ / アクティブ モードの有効化] で [有効] を選択します。

    4. 省略可: リージョンが使用可能な場合は、可用性ゾーンを構成します。たとえば、[ゾーン冗長] を選択できます。

    5. [Second Public IP Address] で [新規作成] を選択します。

    6. [パブリック IP アドレス名] ボックスに、2 番目の外部 IP アドレスの名前を入力します(例: azure‑to‑google‑network‑ip2)。

    7. [BGP の構成] で [有効] を選択します。

    8. [自律システム番号(ASN)] に、許容される有効な値を設定します。

      この ASN 値は、Google Cloud でトンネルの BGP セッションを設定するときに使用します。このアクティブ / アクティブ VPN ゲートウェイを参照するために、この値を AZURE_ASN として記録します。

    9. [Custom Azure APIPA BGP IP address] に、最初の APIPA BGP IP アドレスを入力し、値を AZURE_BGP_IP_0 として記録します。Azure APIPA BGP IP アドレスの有効な範囲は 169.254.21.*169.254.22.* です。

    10. [Second Custom Azure APIPA BGP IP address] に、2 番目の APIPA BGP IP アドレスを入力し、値を AZURE_BGP_IP_1 として記録します。これらの変数は、Google Cloud で BGP セッションを構成するときに使用します。

  2. 検証を行うには、[確認と作成] を選択します。

  3. 検証が完了したら、[作成] を選択して VPN ゲートウェイをデプロイします。

アクティブ / アクティブ VPN ゲートウェイの外部 IP アドレスを表示して記録する

Azure でアクティブ / アクティブ VPN ゲートウェイに自動的に割り当てられた外部 IP アドレスが必要です。これらの IP アドレスは、Google Cloud にピア VPN ゲートウェイ リソースを作成する際に使用します。

  1. 作成したアクティブ / アクティブ ゲートウェイの [概要] ページで、ゲートウェイの外部 IP アドレスを探します。
  2. 画面に表示された IP アドレスを記録します。
    • 最初の外部 IP アドレスを AZURE_GW_IP_0 として記録します。
    • 2 番目の外部 IP アドレスを AZURE_GW_IP_1 として記録します。

このドキュメントでは、これらの IP アドレスを AZURE_GW_IP_0AZURE_GW_IP_1 とします。

Google Cloud コンポーネントを作成する

Google Cloud で次のコンポーネントを設定する必要があります。

  • VPC ネットワーク。
  • HA VPN ゲートウェイ。
  • Cloud Router。
  • ピア VPN ゲートウェイ。
  • BGP セッションの HA VPN トンネル。

以下の手順は、始める前にの説明どおりに Google Cloud が設定されていることを前提としています。これらの手順を完了していない場合は、先に進む前に完了してください。

Google Cloud で VPC ネットワーク、サブネット、HA VPN ゲートウェイ、Cloud Router を作成する

Google Cloud で、VPC ネットワークの作成、HA VPN ゲートウェイの作成、Cloud Router の作成、Google Cloud に対するファイアウォール ルールの構成を行います。

  1. Google Cloud Shell で、ご自身が作成または選択した Cloud プロジェクトで作業していることを確認します。

    gcloud config set project YOUR_PROJECT_ID
    
    export PROJECT_ID=`gcloud config list   --format="value(core.project)"`
    

    YOUR_PROJECT_ID をクラウド プロジェクト ID に置き換えます。

  2. 単一のサブネットを使用して、カスタム VPC ネットワークを作成します。

    gcloud compute networks create NETWORK \
        --subnet-mode SUBNET_MODE \
        --bgp-routing-mode BGP_ROUTING_MODE
    

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

    • NETWORK: ネットワークの名前(例: google‑to‑azure‑vpc)。
    • SUBNET_MODE: サブネット モードcustom に設定)。
  3. BGP_ROUTING_MODE: BGP ルーティング モードglobal に設定)。

    コマンドは次の例のようになります。

    gcloud compute networks create google-to-azure-vpc \
        --subnet-mode custom \
        --bgp-routing-mode global
    
  4. テスト用 VM をホストするサブネットを 1 つ作成します。

    gcloud compute networks subnets create SUBNET_NAME \
        --network NETWORK \
        --region SUBNET_REGION \
        --range SUBNET_IP_ADDRESS_RANGE
    

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

    コマンドは次の例のようになります。

    gcloud compute networks subnets create subnet-central1  \
        --network google-to-azure-vpc \
        --region us-central1 \
        --range 10.1.1.0/24
    
  5. HA VPN ゲートウェイを作成します。

    gcloud compute vpn-gateways create HA_VPN_GATEWAY_NAME \
        --network NETWORK \
        --region REGION
    

    HA_VPN_GATEWAY_NAME は HA VPN ゲートウェイの名前に置き換えます。

    コマンドは次の例のようになります。

    gcloud compute vpn-gateways create ha-vpn-gw-a \
       --network google-to-azure-vpc \
       --region us-central1
    

    作成するゲートウェイは、次の出力例のようになります。

    Created [https://www.googleapis.com/compute/v1/projects/YOUR_PROJECT_ID/regions/us-central1/vpnGateways/ha-vpn-gw-a].
    NAME          INTERFACE0     INTERFACE1     NETWORK     REGION
    ha-vpn-gw-a   203.0.113.1   203.0.113.2   google-to-azure-vpc   us-central1
    

    出力には、各ゲートウェイ インターフェース(INTERFACE0INTERFACE1)に自動的に割り当てられた外部 IPv4 アドレスが表示されます。これらの IP アドレスは、Azure でローカル ネットワーク ゲートウェイを設定するときに必要になります。

    • INTERFACE0 の IP アドレスを HA_VPN_INT_0 に記録します。
    • INTERFACE1 の IP アドレスを HA_VPN_INT_1 に記録します。
  6. Cloud Router を作成します。

    gcloud compute routers create ROUTER_NAME \
        --region REGION \
        --network NETWORK \
        --asn GOOGLE_ASN \
    

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

    • ROUTER_NAME: Cloud Router の名前。
    • REGION: HA VPN ゲートウェイとトンネルを作成するリージョン。
    • GOOGLE_ASN: 作成する Cloud Router のプライベート自律システム番号(ASN)。64512-65534 または 4200000000-4294967294 の範囲の任意のプライベート ASN を指定できます。ただし、同じリージョンおよびネットワークでまだピア ASN として使用していないことが条件です。

    コマンドは次の例のようになります。

    gcloud compute routers create cloud-router \
        --region us-central1 \
        --network google-to-azure-vpc \
        --asn 65534
    

Azure VPN 用のピア VPN ゲートウェイを作成する

このセクションでは、Azure のアクティブ / アクティブ VPN ゲートウェイに関する情報を Google Cloud に提供する外部 VPN ゲートウェイ リソースを作成します。独自の外部 IP アドレスが割り当てられた 2 つの個別のインターフェースを持つ単一のピア VPN ゲートウェイを作成します。

2 つのインターフェースを持つ単一の外部ピア VPN ゲートウェイを作成します。

gcloud compute external-vpn-gateways create AZURE_GW_NAME \
     --interfaces 0=AZURE_GW_IP_0,1=AZURE_GW_IP_1

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

  • AZURE_GW_NAME: Azure のアクティブ / アクティブ VPN ゲートウェイの名前
  • AZURE_GW_IP_0: ピア ゲートウェイの一方のインターフェースの外部 IP アドレス
  • AZURE_GW_IP_1: ピア ゲートウェイのもう一方のインターフェースの外部 IP アドレス

作成したピア VPN ゲートウェイ リソースは、次の例のようになります。ここで、AZURE_GW_IP_0AZURE_GW_IP_1 は、ピア ゲートウェイ インターフェースの実際の外部 IP アドレスです。

gcloud compute external-vpn-gateways create azure-peer-gw \
     --interfaces 0=203.0.113.1,1=203.0.113.2

Created [https://www.googleapis.com/compute/v1/projects/PROJECT_ID/global/externalVpnGateways/peer-gw].
NAME     INTERFACE0    INTERFACE1
azure-peer-gw  203.0.113.1  203.0.113.2

VPN トンネルを作成する

ピア VPN ゲートウェイのインターフェースごとに 1 つずつ、合計 2 つの VPN トンネルを作成します。Azure への VPN トンネルを構成するときに、IKEv2 暗号化プロトコルを使用します。

このセクションで使用するコマンドでは、次の項目を置き換えます。

  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1: トンネルの名前。ゲートウェイ インターフェース名を含めてトンネルに名前を付けると、後でトンネルを識別しやすくなります。
  • AZURE_GW_NAME: 前に作成した外部ピア ゲートウェイの名前
  • AZURE_GW_INT_NUM_0AZURE_GW_INT_NUM_1: 前に外部ピア ゲートウェイで構成したインターフェース番号
  • IKE_VERS: IKEv2 には 2 を使用します。
  • SHARED_SECRET: 事前共有キー(共有シークレット)。これは、Azure で VPN 接続を設定するときに指定する事前共有キーに対応している必要があります。推奨事項については、強力な事前共有キーを生成するをご覧ください。
  • HA_VPN_GATEWAY_NAME: HA VPN ゲートウェイの名前。
  • INT_NUM_0: 前に作成した HA VPN ゲートウェイの最初のインターフェースの番号(0)。
  • INT_NUM_1: 前に作成した HA VPN ゲートウェイの 2 番目のインターフェースの番号(1)。

次の手順で VPN トンネルを作成します。

  1. インターフェース 0 の VPN トンネルを作成します。

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF0 \
       --peer-external-gateway=AZURE_GW_NAME \
       --peer-external-gateway-interface=AZURE_GW_INT_NUM_0  \
       --region=REGION \
       --ike-version=IKE_VERS \
       --shared-secret=SHARED_SECRET \
       --router=ROUTER_NAME \
       --vpn-gateway=HA_VPN_GATEWAY_NAME \
       --interface=INT_NUM_0
    

    コマンドは次の例のようになります。

    gcloud compute vpn-tunnels create azure-tunnel-1 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 0  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 0
    
  2. インターフェース 1 の VPN トンネルを作成します。

    gcloud compute vpn-tunnels create TUNNEL_NAME_IF1 \
      --peer-external-gateway=AZURE_GW_NAME \
      --peer-external-gateway-interface=AZURE_GW_INT_NUM_1 \
      --region=REGION \
      --ike-version=IKE_VERS \
      --shared-secret=SHARED_SECRET \
      --router=ROUTER_NAME \
      --vpn-gateway=HA_VPN_GATEWAY_NAME \
      --interface=INT_NUM_1
    

    コマンドは次の例のようになります。

    gcloud compute vpn-tunnels create azure-tunnel-2 \
       --peer-external-gateway azure-peer-gw \
       --peer-external-gateway-interface 1  \
       --region us-central1  \
       --ike-version 2 \
       --shared-secret xo2aTKHipD/oE1GAXgj3lMwjBmJXZjqD \
       --router cloud-router \
       --vpn-gateway ha-vpn-gw-a \
       --interface 1
    

BGP セッションを作成する

動的ルーティングの場合は、Cloud Router を使用して Google Cloud と Azure との間に BGP セッションを確立します。可能であれば、静的ルーティングではなく動的ルーティングを使用することをおすすめします。詳細については、Cloud VPN の概要Cloud VPN ネットワークとトンネル ルーティングをご覧ください。

BGP セッションは、VPN トンネルごとに作成する必要があります。各 BGP セッションは、Cloud Router への BGP インターフェースと BGP ピアで構成されます。BGP ピアは、作成した 2 つの VPN トンネルのそれぞれに作成します。

このセクションで使用するコマンドでは、次の項目を置き換えます。

  • ROUTER_NAME: Cloud Router に割り当てられた名前。
  • ROUTER_INTERFACE_NAME_0ROUTER_INTERFACE_NAME_1: Cloud Router BGP インターフェースの名前。以前に構成したトンネル名に関連する名前を使用すると便利です。
  • MASK_LENGTH: 30 を指定します。同じ Cloud Router 上の各 BGP セッションでは、169.254.0.0/16 ブロックの中から一意の /30 CIDR を使用する必要があります。
  • GOOGLE_BGP_IP_0GOOGLE_BGP_IP_1: 構成する HA VPN ゲートウェイ インターフェースの BGP ピアリング IP アドレス。各トンネルでは、異なるゲートウェイ インターフェースが使用されます。Azure APIPA BGP ピアリング IP アドレスに許可される範囲は 169.254.21.*169.254.22.* であるため、これらの範囲の /30 CIDR で使用可能な IP アドレスを Cloud Router の BGP ピアリング IP アドレスに選択する必要があります。
  • AZURE_BGP_IP_0AZURE_BGP_IP_1: Azure のアクティブ / アクティブ VPN ゲートウェイで構成した APIPA BGP ピアリング IP アドレス。各トンネルでは異なるアドレスが使用されます。
  • TUNNEL_NAME_IF0TUNNEL_NAME_IF1: 構成した HA VPN ゲートウェイ インターフェースに関連付けられたトンネル。
  • AZURE_ASN: Azure でアクティブ / アクティブ ピア VPN ゲートウェイに構成した ASN。
  • BGP_PEER_NAME_1BGP_PEER_NAME_2: 各 BGP ピアに固有の名前。たとえば、azure‑bgp‑peer‑1azure‑bgp‑peer‑2 です。

VPN トンネルの BGP セッションを作成する手順は次のとおりです。

  1. 最初の VPN トンネルに対して、Cloud Router に BGP インターフェースを追加します。

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_0 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_0 \
       --region=REGION
    

    コマンドは次の例のようになります。

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-1-int-0 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-1 \
       --ip-address 169.254.21.2 \
       --region us-central1
    
  2. 最初の VPN トンネルに対して、インターフェースに BGP ピアを追加します。

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_1 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_0 \
       --peer-ip-address=AZURE_BGP_IP_0 \
       --region=REGION
    

    コマンドは次の例のようになります。

    gcloud compute routers add-bgp-peer cloud-router \
       --peer-name azure-bgp-peer-1 \
       --peer-asn 65515 \
       --interface azure-tunnel-1-int-0 \
       --peer-ip-address 169.254.21.1 \
       --region us-central1
    
  3. 2 番目の VPN トンネルに対して、Cloud Router に BGP インターフェースを追加します。

    gcloud compute routers add-interface ROUTER_NAME \
       --interface-name=ROUTER_INTERFACE_NAME_1 \
       --mask-length=MASK_LENGTH \
       --vpn-tunnel=TUNNEL_NAME_IF0 \
       --ip-address=GOOGLE_BGP_IP_1 \
       --region=REGION
    

    コマンドは次の例のようになります。

    gcloud compute routers add-interface cloud-router \
       --interface-name azure-tunnel-2-int-1 \
       --mask-length 30 \
       --vpn-tunnel azure-tunnel-2 \
       --ip-address 169.254.22.2 \
       --region us-central1
    
  4. 2 番目の VPN トンネルに対して、インターフェースに BGP ピアを追加します。

    gcloud compute routers add-bgp-peer ROUTER_NAME \
       --peer-name=BGP_PEER_NAME_2 \
       --peer-asn=AZURE_ASN \
       --interface=ROUTER_INTERFACE_NAME_1 \
       --peer-ip-address=AZURE_BGP_IP_1 \
       --region=REGION
    

    コマンドは次の例のようになります。

    gcloud compute routers add-bgp-peer cloud-router \
      --peer-name azure-bgp-peer-2 \
      --peer-asn 65515 \
      --interface azure-tunnel-2-int-1 \
      --peer-ip-address 169.254.22.1 \
      --region us-central1
    

Azure でローカル ネットワーク ゲートウェイと VPN 接続を作成する

Google Cloud コンポーネントを作成して構成したら、Azure 環境に戻って Google Cloud を Azure に接続します。この接続を完了するには、Azure で次のコンポーネントを作成します。

  • Azure で Google Cloud VPN を表す 2 つのローカル ネットワーク ゲートウェイ。
  • Google Cloud で構成した 2 つの HA VPN トンネルに対応する 2 つの VPN 接続。

2 つのローカル ネットワーク ゲートウェイを作成する

ローカル ネットワーク ゲートウェイは、Azure で Google Cloud VPN を表す特定のオブジェクトです。ローカル ネットワーク ゲートウェイを作成するときに、次の情報を指定します。

  • ローカル ネットワーク ゲートウェイの名前。
  • 接続で使用される HA VPN インターフェースの IP アドレス。
  • 接続を作成する Google Cloud Router の IP アドレス。
  • VPN ゲートウェイを介して Cloud Router に転送される IP アドレス プレフィックス。指定するアドレス プレフィックスは、Cloud VPN にあるプレフィックスです。Cloud Virtual Private Network が変更された場合や、Cloud Router の外部 IP アドレスを変更する必要がある場合は、後で値を更新できます。

2 つのローカル ネットワーク ゲートウェイを作成する必要があります。1 つは、Google Cloud で最初の HA VPN トンネル インターフェースに接続するゲートウェイ、もう 1 つは、2 番目の HA VPN トンネル インターフェースに接続するゲートウェイです。

詳細については、Azure ドキュメントの「チュートリアル: Azure portal でサイト間 VPN 接続を作成する」のローカル ネットワーク ゲートウェイの作成セクションをご覧ください。

最初のローカル ネットワーク ゲートウェイを作成する手順は次のとおりです。

  1. Azure Portal にログインします。
  2. [リソース、サービス、ドキュメントの検索(G+/)] に「ローカル ネットワーク ゲートウェイ」と入力します。
  3. [Marketplace] の検索結果で、[ローカル ネットワーク ゲートウェイ] を見つけて選択します。
  4. [作成] をクリックします。
  5. [ローカル ネットワーク ゲートウェイの作成] ページの [基本] タブで、ローカル ネットワーク ゲートウェイに次の値を指定します。

    1. [サブスクリプション] リストで、正しいサブスクリプションが表示されていることを確認します。
    2. [リソース グループ] リストで、このドキュメントで VNet 用に作成したリソース グループを選択します。
    3. [リージョン] で、VNet と同じロケーションを選択します。
    4. [名前] に、ローカル ネットワーク ゲートウェイの名前を入力します(例: azure-to-google-locgateway1)。
    5. [エンドポイント] で [IP アドレス] を選択します。
    6. [IP アドレス] ボックスに、HA VPN の INTERFACE0 の IP アドレスを入力します(「HA_VPN_INT_0」と入力)。
    7. [アドレス空間] に、このローカル ネットワークが表すネットワークのアドレス範囲を入力します。

      複数のアドレス空間範囲を追加できます。ここで指定する範囲が、接続する他のネットワークの範囲と重複しないようにしてください。

  6. [詳細設定] タブで、BGP 設定を次のように構成します。

    1. [BGP 設定の構成] で [はい] を選択します。
    2. [自律システム番号(ASN)] に、Cloud Router の ASN を入力します(「GOOGLE_ASN」と入力)。
    3. [BGP ピア IP アドレス] に、トンネル 1 の Cloud Router の BGP IP アドレスを入力します(「GOOGLE_BGP_IP_0」と入力)。
  7. ローカル ネットワーク ゲートウェイの構成を確認するには、ページの下部にある [確認と作成] をクリックします。

  8. 問題がなければ [作成] をクリックして、ローカル ネットワーク ゲートウェイを作成します。

2 番目のローカル ネットワーク ゲートウェイを作成する手順は次のとおりです。

  1. Azure Portal の [リソース、サービス、ドキュメントの検索(G+/)] に「local network gateway」と入力します。
  2. [Marketplace] の検索結果で、[ローカル ネットワーク ゲートウェイ] を見つけて選択します。
  3. [ローカル ネットワーク ゲートウェイの作成] ページの [基本] タブで、ローカル ネットワーク ゲートウェイに次の値を指定します。

    1. [サブスクリプション] リストで、正しいサブスクリプションが表示されていることを確認します。
    2. [リソース グループ] リストで、このドキュメントで VNet 用に作成したリソース グループを選択します。
    3. [リージョン] で、VNet と同じリージョンを選択します。
    4. [名前] に、ローカル ネットワーク ゲートウェイの名前を入力します(例: azure-to-google-locgateway2)。
    5. [エンドポイント] で [IP アドレス] を選択します。
    6. [IP アドレス] ボックスに、HA VPN の INTERFACE1 の IP アドレスを入力します(「HA_VPN_INT_1」と入力)。
    7. [アドレス空間] に、このローカル ネットワークが表すネットワークのアドレス範囲を入力します。

    複数のアドレス空間範囲を追加できます。ここで指定する範囲が、接続する他のネットワークの範囲と重複しないようにしてください。

  4. [詳細設定] タブで、BGP 設定を次のように構成します。

    1. [BGP 設定の構成] で [はい] を選択します。
    2. [自律システム番号(ASN)] に、Cloud Router の ASN を入力します(「GOOGLE_ASN」と入力)。
    3. [BGP ピア IP アドレス] に、トンネル 1 の Cloud Router の BGP IP アドレスを入力します(「GOOGLE_BGP_IP_1」と入力)。
  5. ローカル ネットワーク ゲートウェイの構成を確認するには、ページの下部にある [確認と作成] をクリックします。

  6. 問題がなければ [作成] をクリックして、ローカル ネットワーク ゲートウェイを作成します。

2 つの VPN 接続を作成する

Azure で VPN 接続を作成するには、Google Cloud で HA VPN トンネルを設定する際に構成した事前共有キー SHARED_SECRET が必要です。

  1. Azure Portal で、アクティブ / アクティブ VPN ゲートウェイの作成で作成したアクティブ / アクティブ VPN ゲートウェイを見つけます。
  2. [接続] を選択します。
  3. [接続] ページの上部で [+ 追加] を選択します。
  4. [接続の追加] ページで、最初の接続に次の値を指定します。
    1. [名前] に、接続の名前を入力します(例: azure-vnet-to-google1)。
    2. [接続の種類] で、[サイト対サイト(IPsec)] を選択します。
    3. [ローカル ネットワーク ゲートウェイ] で、作成した最初のローカル ネットワーク ゲートウェイ(azure-to-google-locgateway1 など)を指定します。
    4. [共有キー(PSK)] に、最初の HA VPN トンネルに構成した共有キーを指定します。
    5. [BGP を有効にする] を選択します。
    6. [IKE プロトコル] で [IKEv2] を選択します。
    7. [OK] をクリックします。
    8. [接続] ページで、[+ 追加] を選択して、次の値を設定して 2 番目の接続を追加します。
    9. [名前] に、接続の名前を入力します(例: azure-vnet-to-google2)。
    10. [接続の種類] で、[サイト対サイト(IPsec)] を選択します。
    11. [ローカル ネットワーク ゲートウェイ] で、作成した 2 番目のローカル ネットワーク ゲートウェイ(azure-to-google-locgateway2 など)を指定します。
    12. [共有キー(PSK)] に、2 番目の HA VPN トンネルに構成した共有キーを指定します。
    13. [BGP を有効にする] を選択します。
    14. [IKE プロトコル] で [IKEv2] を選択します。
    15. [OK] をクリックします。
  5. [接続] ページで、両方の接続のステータスが「接続済み」と表示されていることを確認します。

構成を確認する

Google Cloud では、まず Cloud Router の構成を一覧表示して、HA VPN トンネルのステータスをチェックすることで HA VPN 構成を確認できます。

  1. Cloud Shell で、Cloud Router によって選択された BGP ピアリング IP アドレスを一覧表示します。

    gcloud compute routers get-status ROUTER_NAME \
       --region=REGION \
       --format='flattened(result.bgpPeerStatus[].name,
         result.bgpPeerStatus[].ipAddress, result.bgpPeerStatus[].peerIpAddress)'
    

    コマンドは次の例のようになります。

    gcloud compute routers get-status cloud-router \
        --region us-central1 \
    --format='flattened(result.bgpPeerStatus[].name,result.bgpPeerStatus[].ipAddress,result.bgpPeerStatus[].peerIpAddress)'
    

    2 つの HA VPN トンネル(インデックス 01)を管理する Cloud Router に想定される出力は次のようになります。

    result.bgpPeerStatus[0].ipAddress:     169.254.21.2
    result.bgpPeerStatus[0].name:          azure-bgp-peer-1
    result.bgpPeerStatus[0].peerIpAddress: 169.254.21.1
    result.bgpPeerStatus[1].ipAddress:     169.254.22.2
    result.bgpPeerStatus[1].name:          azure-bgp-peer-2
    result.bgpPeerStatus[1].peerIpAddress: 169.254.22.1
    
  2. Cloud Shell で、最初の HA VPN トンネルのステータスを表示します。

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF0 \
       --region=REGION
    

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

    • TUNNEL_NAME_IF0: 構成した最初の HA VPN ゲートウェイ インターフェースに関連付けられたトンネル。
    • REGION: HA VPN ゲートウェイをデプロイしたリージョン。

    コマンドは次の例のようになります。

    gcloud compute vpn-tunnels describe azure-tunnel-1 -–region=us-central1
    

    トンネルに想定される出力は、次の例のようになります。

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '278561789474069966'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-1
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 0
    peerIp: 203.0.113.1
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-1
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9paz
    status: ESTABLISHED
    vpnGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnGateways/ha-vpn-gw-a
    vpnGatewayInterface: 0
    
  3. Cloud Shell で、2 番目の HA VPN トンネルのステータスを表示します。

    gcloud compute vpn-tunnels describe TUNNEL_NAME_IF1 \
       --region=REGION
    

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

    • TUNNEL_NAME_IF1: 構成した 2 番目の HA VPN ゲートウェイ インターフェースに関連付けられたトンネル。
    • REGION: HA VPN ゲートウェイをデプロイしたリージョン。

    コマンドは次の例のようになります。

    gcloud compute vpn-tunnels describe azure-tunnel-2 --region=us-central1
    

    トンネルに想定される出力は、次の例のようになります。

    creationTimestamp: '2022-09-28T17:13:21.592-07:00'
    description: ''
    detailedStatus: Tunnel is up and running.
    id: '5665972275117479944'
    ikeVersion: 2
    kind: compute#vpnTunnel
    localTrafficSelector:
    -   0.0.0.0/0
    name: azure-tunnel-2
    peerExternalGateway: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/global/externalVpnGateways/azure-peer-gw
    peerExternalGatewayInterface: 1
    peerIp: 203.0.113.2
    region: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1
    remoteTrafficSelector:
    -   0.0.0.0/0
    router: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/routers/cloud-router
    selfLink: https://www.googleapis.com/compute/v1/projects/PROJECT-ID/regions/us-central1/vpnTunnels/azure-tunnel-2
    sharedSecret: '*************'
    sharedSecretHash: ALDZGgSMUxj8KFahMoG_L0Fz9ddd
    

接続をテストする

HA VPN 接続をテストするには、まず、トンネルの各側に VM を作成する必要があります。

次に、Google Cloud で、Azure ネットワーク サブネットからの受信 ICMP トラフィックを許可するファイアウォール ルールが定義されていることを確認します。VM とファイアウォール ルールを設定すると、ping を使用して接続をテストし、iperf で帯域幅をテストできます。

  1. ping リクエストをテストするため、トンネルの両側にテスト VM を作成します。

    また、Virtual Private Cloud で使用されているサブネット プレフィックスからの受信トラフィックを許可するように、Azure ネットワーク ファイアウォールを構成する必要があります。

  2. Google Cloud で、Azure VPN からの受信 ICMP トラフィックを許可するファイアウォール ルールを構成します。

    gcloud compute firewall-rules create RULE_NAME \
        --network NETWORK \
        --direction ingress \
        --action allow \
        --source-ranges AZURE_VNET_RANGE \
        --rules icmp \
    

    AZURE_VNET_RANGE は、Azure VNet に割り当てられている IP アドレス範囲に置き換えます。

    コマンドは次の例のようになります。

    gcloud compute firewall-rules create allow-azure-icmp \
      --network google-to-azure-vpc \
      --direction ingress \
      --action allow \
      --source-ranges 10.0.0.0/16 \
      --rules icmp
    
  3. ping コマンドを使用して接続をテストします。

  4. iperf を使用してテストマシン間の帯域幅を測定します。

クリーンアップ

このチュートリアルで作成した Google Cloud と Azure のリソースを削除します。

Google Cloud プロジェクトを削除する

このチュートリアルで使用したリソースに対する Google Cloud アカウントへの課金を回避するには、プロジェクトを削除します。

  1. Google Cloud コンソールで、[リソースの管理] ページに移動します。

    [リソースの管理] に移動

  2. プロジェクト リストで、削除するプロジェクトを選択し、[削除] をクリックします。
  3. ダイアログでプロジェクト ID を入力し、[シャットダウン] をクリックしてプロジェクトを削除します。

Azure リソース グループを削除する

VNet の作成時に作成した Azure Manager リソース グループを削除します。このチュートリアルでのサンプル リソース グループの名前は azure-to-google-resgroup です。

詳細については、Azure Resource Manager のリソース グループとリソースの削除をご覧ください。

次のステップ