Azure CLI を使用して VNet 間の VPN ゲートウェイ接続を構成する
この記事は、VNet 間という接続の種類を使用して仮想ネットワークを接続する際に役立ちます。 仮想ネットワークが属しているリージョンやサブスクリプションは異なっていてもかまいません。 異なるサブスクリプションの VNet を接続する場合、サブスクリプションが同じテナントに関連付けられている必要はありません。
この演習では、必要な仮想ネットワーク (VNet) と VPN ゲートウェイを作成します。 同じサブスクリプション内で VNet を接続する手順と、異なるサブスクリプションの VNet を接続するためのより複雑なシナリオの手順とコマンドがあります。
接続を作成する Azure CLI コマンドは、az network vpn-connection です。 異なるサブスクリプションから VNet を接続する場合は、この記事または PowerShell の記事の手順を使用します。 接続する VNet が既にあり、それが同じサブスクリプション内にある場合は、プロセスがより簡単な Azure portal 手順を使用することをお勧めします。 Azure portal を使用する場合は、異なるサブスクリプションの VNet を接続できないことに注意してください。
VNet の接続について
VNet の接続方法は複数あります。 以下のセクションでは、仮想ネットワークを接続するさまざまな方法について説明します。
VNet 間
VNet 間接続の構成は、VNet を簡単に接続するための良い方法です。 VNet 間接続の種類を使用して仮想ネットワークどうしを接続することは、オンプレミスの場所へのサイト間 IPsec 接続を作成することに似ています。 どちらの接続の種類も、VPN ゲートウェイを使用して IPsec/IKE を使った安全なトンネルが確保され、通信時には同じように機能します。 この接続の種類の違いは、ローカル ネットワーク ゲートウェイの構成方法にあります。 VNet 間接続を作成するときは、ローカル ネットワーク ゲートウェイのアドレス空間は見えません。 自動的に作成されて値が設定されます。 一方の VNet のアドレス空間を更新した場合、もう一方の VNet が、更新されたアドレス空間へのルーティングを自動的に認識します。 VNet 間接続の作成は、通常、VNet 間のサイト間接続の作成よりも高速で簡単ですが、ローカル ネットワーク ゲートウェイのアドレス空間を手動で変更できないため、別の接続を追加する場合に同じレベルの柔軟性は提供されません。
サイト間 (IPsec) の手順による VNet の接続
複雑なネットワーク構成で作業している場合は、VNet 間の手順の代わりにサイト間の手順を使用して VNet を接続する方がよいときもあります。 サイト間の手順を使用する場合は、ローカル ネットワーク ゲートウェイを手動で作成および構成します。 各 VNet のローカル ネットワーク ゲートウェイは、他方の VNet をローカル サイトとして扱います。 そうすることで、トラフィックをルーティングするために、ローカル ネットワーク ゲートウェイに追加のアドレス空間を指定できます。 VNet のアドレス空間が変更されたら、変更を反映するように、対応するローカル ネットワーク ゲートウェイを手動で更新する必要があります。 これは、自動的には更新されません。
VNET ピアリング
VNET ピアリングを使用して VNet を接続することを検討することもできます。 VNet ピアリングは VPN ゲートウェイを使用せず、さまざまな制約があります。 さらに、VNET ピアリングの料金は、VNet 間 VPN Gateway の料金と計算方法が異なります。 詳細については、「 VNet ピアリング」を参照してください。
VNet 間接続を作成する理由
VNet 間接続を使用する仮想ネットワークの接続が望ましいのは、次のような場合です。
リージョン間の geo 冗長性および geo プレゼンス
- インターネット接続エンドポイントを介さず、安全な接続を使って独自の geo レプリケーションや geo 同期をセットアップすることができます。
- Azure Traffic Manager および Load Balancer を使用し、複数の Azure リージョンをまたぐ geo 冗長性を備えた、可用性に優れたワークロードをセットアップすることができます。 たとえば、複数の Azure リージョンにまたがる SQL AlwaysOn 可用性グループをセットアップすることができます。
特定のリージョン内で分離または管理境界を備えた多層アプリケーション
- 同じリージョン内で、分離または管理要件に基づいて相互に接続された複数の仮想ネットワークを利用し、多層アプリケーションをセットアップすることができます。
マルチサイト構成と VNet 間通信を組み合わせることができます。 そのため、クロスプレミス接続と仮想ネットワーク間接続とを組み合わせたネットワーク トポロジを確立することができます。
どの VNet 間の手順を使用する必要がありますか。
この記事では、VNet 間接続の 2 種類の手順について説明します。 1 つは VNet が同じサブスクリプション内に存在する場合の手順で、もう 1 つは VNet が別のサブスクリプション内に存在する場合の手順です。
この演習では、構成を組み合わせるか、希望する方のみを選んでもかまいません。 どの構成でも、接続の種類として VNet 間を使用します。 ネットワーク トラフィックは、互いに直接接続されている VNet 間を行き来します。
同じサブスクリプション内にある VNet の接続
開始する前に
開始する前に、最新バージョンの CLI コマンド (2.0 以降) をインストールします。 CLI コマンドのインストール方法については、「Azure CLI 2.0 のインストール」をご覧ください。
IP アドレス範囲の計画
以下の手順に従って、2 つの仮想ネットワークを、それぞれのゲートウェイ サブネットおよび構成と共に作成します。 その後、2 つの VNet 間の VPN 接続を作成します。 ネットワーク構成の IP アドレスの範囲を計画することが重要です。 VNet の範囲やローカル ネットワークの範囲が重複することは、どのような形であれ許容されないので注意してください。 以下の例では、DNS サーバーは含まれていません。 仮想ネットワークの名前解決が必要な場合は、名前解決に関する記事を参照してください。
例では、次の値を使用します。
TestVNet1 の値:
- VNet 名: TestVNet1
- リソース グループ:TestRG1
- [場所] :米国東部
- TestVNet1: 10.11.0.0/16 & 10.12.0.0/16
- FrontEnd:10.11.0.0/24
- BackEnd: 10.12.0.0/24
- GatewaySubnet: 10.12.255.0/27
- GatewayName: VNet1GW
- パブリック IP: VNet1GWIP
- VPNType: RouteBased
- 接続 (1 から 4): VNet1toVNet4
- 接続 (1 から 5): VNet1toVNet5 (VNet が異なるサブスクリプションに存在する場合)
TestVNet4 の値:
- VNet 名: TestVNet4
- TestVNet2: 10.41.0.0/16 & 10.42.0.0/16
- FrontEnd:10.41.0.0/24
- BackEnd: 10.42.0.0/24
- GatewaySubnet: 10.42.255.0/27
- リソース グループ:TestRG4
- 場所:米国西部
- GatewayName: VNet4GW
- パブリック IP: VNet4GWIP
- VPN の種類: RouteBased
- 接続:VNet4toVNet1
手順 1 - サブスクリプションに接続する
(Azure CloudShell を使用する代わりに) Azure CLI をローカルで使用する場合は、次の手順を使用して Azure サブスクリプションに接続します。 Cloud Shell を使用している場合は、次のセクションに進みます。
az login コマンドで Azure サブスクリプションにサインインし、画面上の指示に従います。 サインインの詳細については、「Azure CLI を使ってみる」を参照してください。
az login
複数の Azure サブスクリプションを所有している場合は、アカウントのサブスクリプションが一覧表示されます。
az account list --all
使用するサブスクリプションを指定します。
az account set --subscription <replace_with_your_subscription_id>
手順 2 - TestVNet1 を作成し、構成する
リソース グループを作成します。
az group create -n TestRG1 -l eastus
az network vnet create コマンドを使用して、TestVNet1 と TestVNet1 のサブネットを作成します。 次の例では、TestVNet1 という名前の仮想ネットワークと FrontEnd という名前のサブネットを作成します。
az network vnet create \ -n TestVNet1 \ -g TestRG1 \ -l eastus \ --address-prefix 10.11.0.0/16 \ --subnet-name Frontend \ --subnet-prefix 10.11.0.0/24
バックエンド サブネット用に追加のアドレス空間を作成します。 この手順では、先ほど作成したアドレス空間と、追加するアドレス空間の両方を指定したことに注意してください。 これは、az network vnet update コマンドによって前の設定が上書きされるためです。 このコマンドを使用する際は、必ずすべてのアドレス プレフィックスを指定するようにしてください。
az network vnet update \ -n TestVNet1 \ --address-prefixes 10.11.0.0/16 10.12.0.0/16 \ -g TestRG1
バックエンド サブネットを作成します。
az network vnet subnet create \ --vnet-name TestVNet1 \ -n BackEnd \ -g TestRG1 \ --address-prefix 10.12.0.0/24
ゲートウェイ サブネットを作成します。 ゲートウェイ サブネットの名前が "GatewaySubnet" であることに注意してください。 この名前は必須です。 この例では、ゲートウェイ サブネットに /27 が使用されています。 /29 と同程度の小規模なゲートウェイ サブネットを作成することはできますが、少なくとも /28 または /27 を選択してさらに多くのアドレスが含まれる大規模なサブネットを作成することをお勧めします。 これで、今後必要となる可能性のある追加の構成に対応するのに十分なアドレスを持つことができるようになります。
az network vnet subnet create \ --vnet-name TestVNet1 \ -n GatewaySubnet \ -g TestRG1 \ --address-prefix 10.12.255.0/27
VPN ゲートウェイには、パブリック IP アドレスが必要です。 仮想ネットワーク用に作成した VPN ゲートウェイにパブリック IP アドレスが割り当てられます。 次の例を使い、az network public-ip create コマンドを使ってパブリック IP アドレスを要求します。
az network public-ip create \ -g TestRG1 \ -n VNet1GWIP1 \ --sku Standard \ --allocation-method Static \ --l eastus
TestVNet1 の仮想ネットワーク ゲートウェイの作成には、az network vnet-gateway create コマンドを使用します。 このコマンドの実行時に "--no-wait" パラメーターを使用した場合には、フィードバックや出力が表示されなくなります。 "--no-wait" パラメーターを使用すると、ゲートウェイをバックグラウンドで作成できます。 これは、VPN ゲートウェイの作成がすぐに完了するという意味ではありません。 使用するゲートウェイ SKU によっては、ゲートウェイの作成に 45 分以上かかる場合も少なくありません。
az network vnet-gateway create \ --name VNet1GW \ --public-ip-address VNet1GWIP \ --resource-group TestRG1 \ --vnet TestVNet1 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
手順 3 - TestVNet4 を作成し、構成する
リソース グループを作成します。
az group create -n TestRG4 -l westus
TestVNet4 を作成します。
az network vnet create \ -n TestVNet4 \ -g TestRG4 \ -l westus \ --address-prefix 10.41.0.0/16 \ --subnet-name Frontend \ --subnet-prefix 10.41.0.0/24
TestVNet4 用に追加のサブネットを作成します。
az network vnet update \ -n TestVNet4 \ --address-prefixes 10.41.0.0/16 10.42.0.0/16 \ -g TestRG4 \
az network vnet subnet create \ --vnet-name TestVNet4 \ -n BackEnd \ -g TestRG4 \ --address-prefix 10.42.0.0/24
ゲートウェイ サブネットを作成します。
az network vnet subnet create \ --vnet-name TestVNet4 \ -n GatewaySubnet \ -g TestRG4 \ --address-prefix 10.42.255.0/27
パブリック IP アドレスを要求します。
az network public-ip create \ -g TestRG4 \ --n VNet4GWIP \ --sku Standard \ --allocation-method Static \ --l westus
TestVNet4 の仮想ネットワーク ゲートウェイを作成します。
az network vnet-gateway create \ -n VNet4GW \ -l westus \ --public-ip-address VNet4GWIP \ -g TestRG4 \ --vnet TestVNet4 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
手順 4 - 接続を作成する
ここまでで、VPN ゲートウェイを備えた VNet を 2つ用意できました。 次の手順では、仮想ネットワーク ゲートウェイの間に VPN ゲートウェイ接続を作成します。 前の例を使用した場合、VNet ゲートウェイは異なるリソース グループに存在します。 ゲートウェイが異なるリソース グループにある場合は、接続時に各ゲートウェイのリソース ID を特定して指定する必要があります。 VNet が同じリソース グループにある場合は、リソース ID を指定する必要がないため、2 番目の手順を使用できます。
異なるリソース グループにある VNet を接続するには
次のコマンドの出力から、VNet1GW のリソース ID を取得します。
az network vnet-gateway show -n VNet1GW -g TestRG1
出力結果から
"id:"
行を探し出します。 次のセクションで接続を作成する際に引用符で囲まれた値が必要になります。 これらの値は、メモ帳などのテキスト エディターにコピーしてください。そうすることで、接続の作成時に簡単に貼り付けることができます。出力例:
"activeActive": false, "bgpSettings": { "asn": 65515, "bgpPeeringAddress": "10.12.255.30", "peerWeight": 0 }, "enableBgp": false, "etag": "W/\"ecb42bc5-c176-44e1-802f-b0ce2962ac04\"", "gatewayDefaultSite": null, "gatewayType": "Vpn", "id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW", "ipConfigurations":
"id":
の後にある引用符で囲まれた値をコピーします。"id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
VNet4GW のリソース ID を取得し、その値をテキスト エディターにコピーします。
az network vnet-gateway show -n VNet4GW -g TestRG4
TestVNet1 から TestVNet4 への接続を作成します。 この手順では、TestVNet1 から TestVNet4 への接続を作成します。 この例では、参照される共有キーがあります。 共有キーには独自の値を使用することができます。 両方の接続の共有キーが一致することが重要です。 接続の作成が完了するまでしばらくかかります。
az network vpn-connection create \ -n VNet1ToVNet4 \ -g TestRG1 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \ -l eastus \ --shared-key "aabbcc" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW
TestVNet4 から TestVNet1 への接続を作成します。 この手順は、上記の手順と似ていますが、TestVNet4 から TestVNet1 への接続を作成する点が異なります。 共有キーが一致することを確認してください。 接続が確立されるまで数分かかります。
az network vpn-connection create \ -n VNet4ToVNet1 \ -g TestRG4 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG4/providers/Microsoft.Network/virtualNetworkGateways/VNet4GW \ -l westus \ --shared-key "aabbcc" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
接続を確認します。 接続の確認に関するセクションを参照してください。
同じリソース グループにある VNet を接続するには
TestVNet1 から TestVNet4 への接続を作成します。 この手順では、TestVNet1 から TestVNet4 への接続を作成します。 この例ではリソース グループが同じであることに注意してください。 ここでも参照される共有キーが表示されます。 共有キーには独自の値を使用することができますが、両方の接続の共有キーが一致する必要があります。 接続の作成が完了するまでしばらくかかります。
az network vpn-connection create \ -n VNet1ToVNet4 \ -g TestRG1 \ --vnet-gateway1 VNet1GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 VNet4GW
TestVNet4 から TestVNet1 への接続を作成します。 この手順は、上記の手順と似ていますが、TestVNet4 から TestVNet1 への接続を作成する点が異なります。 共有キーが一致することを確認してください。 接続が確立されるまで数分かかります。
az network vpn-connection create \ -n VNet4ToVNet1 \ -g TestRG1 \ --vnet-gateway1 VNet4GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 VNet1GW
接続を確認します。 接続の確認に関するセクションを参照してください。
異なるサブスクリプション内にある VNet の接続
このシナリオでは、TestVNet1 と TestVNet5 を接続します。 VNet は異なるサブスクリプション内に存在します。 サブスクリプションが同じテナントに関連付けられている必要はありません。 この構成の手順では、TestVNet1 を TestVNet5 に接続するために VNet 間接続を追加します。
手順 5 - TestVNet1 を作成し、構成する
以下の手順は、前のセクションで説明した手順の続きです。 TestVNet1 と TestVNet1 の VPN ゲートウェイを作成して構成するには、手順 1. と手順 2. を完了する必要があります。 この構成では、前のセクションの TestVNet4 を作成する必要はありませんが、作成しても以下の手順とは競合しません。TestVNet4 からのトラフィックは TestVNet5 にルーティングされません。 手順 1 と手順 2 が完了したら、手順 6 に進みます。
手順 6 - IP アドレス範囲を確認する
追加の接続を作成する場合、重要なのは、新しい仮想ネットワークの IP アドレス空間が、他の VNet 範囲またはローカル ネットワーク ゲートウェイ範囲のどれとも重複していないことを確認することです。 この演習では、TestVNet5 に次の値を使用します。
TestVNet5 の値:
- VNet 名: TestVNet5
- リソース グループ:TestRG5
- 場所:東日本
- TestVNet5: 10.51.0.0/16 & 10.52.0.0/16
- FrontEnd:10.51.0.0/24
- BackEnd: 10.52.0.0/24
- GatewaySubnet: 10.52.255.0/27
- GatewayName: VNet5GW
- パブリック IP: VNet5GWIP
- VPN の種類: RouteBased
- 接続:VNet5toVNet1
- ConnectionType: VNet2VNet
手順 7 - TestVNet5 を作成し、構成する
この手順は、新しいサブスクリプション (サブスクリプション 5) との関連で実行する必要があります。 この部分は、サブスクリプションを所有する別の組織の管理者が実行できます。 サブスクリプションを切り替えるには、az account list --all
を使用して、ご自分のアカウントで使用できるサブスクリプションを一覧表示します。次に、az account set --subscription <subscriptionID>
を実行して、使用するサブスクリプションに切り替えます。
サブスクリプション 5 に接続していることを確認し、リソース グループを作成します。
az group create -n TestRG5 -l japaneast
TestVNet5 を作成します。
az network vnet create \ -n TestVNet5 \ -g TestRG5 \ --address-prefix 10.51.0.0/16 \ -l japaneast \ --subnet-name FrontEnd \ --subnet-prefix 10.51.0.0/24
サブネットを追加します。
az network vnet update \ -n TestVNet5 \ --address-prefixes 10.51.0.0/16 10.52.0.0/16 \ -g TestRG5 \
az network vnet subnet create \ --vnet-name TestVNet5 \ -n BackEnd \ -g TestRG5 \ --address-prefix 10.52.0.0/24
ゲートウェイ サブネットを追加します。
az network vnet subnet create \ --vnet-name TestVNet5 \ -n GatewaySubnet \ -g TestRG5 \ --address-prefix 10.52.255.0/27
パブリック IP アドレスを要求します。
az network public-ip create \ -g TestRG5 \ --n VNet5GWIP \ --sku Standard \ --allocation-method Static \ --l japaneast
TestVNet5 ゲートウェイを作成する
az network vnet-gateway create \ -n VNet5GW \ -l japaneast \ --public-ip-address VNet5GWIP \ -g TestRG5 \ --vnet TestVNet5 \ --gateway-type Vpn \ --sku VpnGw2 \ --vpn-gateway-generation Generation2 \ --no-wait
手順 8 - 接続を作成する
ゲートウェイが異なるサブスクリプションにあるため、この手順は、 [サブスクリプション 1] と [サブスクリプション 5] というマークの付いた 2 つの CLI セッションに分かれています。 サブスクリプションを切り替えるには、az account list --all
を使用して、ご自分のアカウントで使用できるサブスクリプションを一覧表示します。次に、az account set --subscription <subscriptionID>
を実行して、使用するサブスクリプションに切り替えます。
[サブスクリプション 1] サインインし、サブスクリプション 1 に接続します。 次のコマンドを実行し、その出力からゲートウェイの名前と ID を取得します。
az network vnet-gateway show -n VNet1GW -g TestRG1
id:
の出力をコピーします。 メールやその他の方法で、VNet ゲートウェイ (VNet1GW) の ID と名前をサブスクリプション 5 の管理者に送信します。出力例:
"id": "/subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW"
[サブスクリプション 5] サインインし、サブスクリプション 5 に接続します。 次のコマンドを実行し、その出力からゲートウェイの名前と ID を取得します。
az network vnet-gateway show -n VNet5GW -g TestRG5
id:
の出力をコピーします。 メールやその他の方法で、VNet ゲートウェイ (VNet5GW) の ID と名前をサブスクリプション 1 の管理者に送信します。[サブスクリプション 1] この手順では、TestVNet1 から TestVNet5 への接続を作成します。 共有キーには独自の値を使用することができますが、両方の接続の共有キーが一致する必要があります。 接続の作成完了までしばらくかかります。 サブスクリプション 1 に接続します。
az network vpn-connection create \ -n VNet1ToVNet5 \ -g TestRG1 \ --vnet-gateway1 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW \ -l eastus \ --shared-key "eeffgg" \ --vnet-gateway2 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW
[サブスクリプション 5] この手順は前の手順と同じですが、TestVNet5 から TestVNet1 への接続を作成する点が異なります。 同じ共有キーを使用し、サブスクリプション 5 に接続してください。
az network vpn-connection create \ -n VNet5ToVNet1 \ -g TestRG5 \ --vnet-gateway1 /subscriptions/e7e33b39-fe28-4822-b65c-a4db8bbff7cb/resourceGroups/TestRG5/providers/Microsoft.Network/virtualNetworkGateways/VNet5GW \ -l japaneast \ --shared-key "eeffgg" \ --vnet-gateway2 /subscriptions/d6ff83d6-713d-41f6-a025-5eb76334fda9/resourceGroups/TestRG1/providers/Microsoft.Network/virtualNetworkGateways/VNet1GW
接続の確認
重要
ゲートウェイ サブネット上のネットワーク セキュリティ グループ (NSG) はサポートされていません。 ネットワーク セキュリティ グループをこのサブネットに関連付けると、仮想ネットワーク ゲートウェイ (VPN と ExpressRoute ゲートウェイ) が想定どおりに機能しなくなる可能性があります。 ネットワーク セキュリティ グループの詳細については、「ネットワーク セキュリティ グループ (NSG) について」を参照してください。
接続に成功したことを確認するには、az network vpn-connection show コマンドを使用します。 この例では、"--name" はテストする接続の名前を示しています。 接続が確立中の場合は、接続状態は "Connecting" と表示されます。 接続が確立されると、状態は "Connected" に変更されます。 環境の値を使用して次の例を変更します。
az network vpn-connection show --name <connection-name> --resource-group <resource-group-name>
VNet 間接続に関してよく寄せられる質問
VNet 間接続に関してよく寄せられる質問については、「VPN Gateway に関する FAQ」を参照してください。
次のステップ
- 接続が完成したら、仮想ネットワークに仮想マシンを追加することができます。 詳細については、Virtual Machines のドキュメントを参照してください。
- BGP の詳細については、BGP の概要に関する記事と BGP の構成方法に関する記事を参照してください。