【Azure】仮想ネットワーク同士の接続方法と通信性能について

こんにちは、Aireです。

今回はAzure上の仮想ネットワーク同士を接続する方法と手順を紹介します。

目次

接続方法の種類

サイト間接続(Site-to-Site)

接続先と接続元の仮想ネットワークに仮想ネットワークゲートウェイ(VPNゲートウェイ)とローカルネットワークゲートウェイを作成し、仮想ネットワーク同士を接続する方法です。仮想ネットワークゲートウェイによって仮想ネットワーク間にIPsec/IKEを使用したセキュアなVPNトンネルが確立されます。一般にオンプレ拠点と仮想ネットワークをVPN接続するための方法ですが、仮想ネットワーク同士を接続する際も使用可能です。

仮想ネットワーク間接続(VNet-to-VNet)

接続先と接続元の仮想ネットワークに仮想ネットワークゲートウェイを作成し、仮想ネットワーク同士を接続する方法です。サイト間接続と同様、仮想ネットワーク間にはVPNトンネルが確立されます。ただし、ローカルネットワークゲートウェイは内部的に自動で作成されます(画面上には表示されません)。サイト間接続と比較し、簡単に作成することが可能です。

仮想ネットワークピアリング

仮想ネットワークゲートウェイを使用せずに仮想ネットワーク同士を接続する方法です。仮想ネットワークゲートウェイを使用・経由しないため、機能的な制約はありますが高速通信が可能です。仮想ネットワークピアリングは通常、リモート仮想ネットワークからのトラフィックを転送しないため、通信したい仮想ネットワーク同士を個別にピアリング接続する必要がありますが、仮想ネットワークゲートウェイを作成し、リモートゲートウェイ転送を設定することでトラフィックの転送が可能です。

グローバル仮想ネットワークピアリング

異なるリージョンにある仮想ネットワーク同士をピアリング接続する方法です。異なるリージョンにある仮想ネットワーク間ではリモートゲートウェイ転送を設定することはできないため、ピアリング先とピアリング元の仮想ネットワーク間での通信のみ可能です。

仮想ネットワークピアリング+仮想ネットワークゲートウェイ

仮想ネットワークピアリングの場合、ピアリング先とピアリング元の仮想ネットワーク間でのみ通信が可能であり、仮想ネットワークを跨いでの通信はできません。ただし、ピアリング先の仮想ネットワークに仮想ネットワークゲートウェイを作成し、ゲートウェイ転送を有効にすると、仮想ネットワークゲートウェイによるトラフィックの転送が可能になり、仮想ネットワークを跨いだ通信が可能になります。

接続手順

サイト間接続(Site-to-Site)

サイト間接続の手順は以下の通りです。また、最終構成図を記載します。

  1. 仮想ネットワークの作成
  2. 仮想ネットワークゲートウェイの作成
  3. ローカルネットワークゲートウェイの作成
  4. VPN接続の作成
  5. VPN接続の確認

仮想ネットワークの作成

仮想ネットワークの作成画面に移動し、仮想ネットワーク「VNet1」、「VNet2」を作成します。パラメータは以下のように設定します。

設定(VNet1)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG1(リージョン:Japan East)
インスタンスの詳細
名前 VNet1
地域(リージョン) Japan East
IPアドレス
IPv4アドレス空間 10.0.0.0/16
サブネット名 SNet11
サブネットアドレス範囲 10.0.0.0/24
セキュリティ
BastionHost 無効
DDoS Protection Standard 無効
ファイアウォール 無効
設定(VNet2)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG2
インスタンスの詳細
名前 VNet2
地域(リージョン) Japan East
IPアドレス
IPv4アドレス空間 10.1.0.0/16
サブネット名 SNet21
サブネットアドレス範囲 10.1.0.0/24
セキュリティ
BastionHost 無効
DDoS Protection Standard 無効
ファイアウォール 無効

仮想ネットワークゲートウェイの作成

仮想ネットワークゲートウェイの作成画面に移動し、仮想ネットワークゲートウェイ「VPN-GW1」、「VPN-GW2」を作成します。パラメータは以下のように設定します。

設定(VPN-GW1)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG1(仮想ネットワークのリソースグループから派生)
インスタンスの詳細
名前 VPN-GW1
地域(リージョン) Japan East
ゲートウェイの種類 VPN
VPNの種類 ルートベース
SKU Basic
世代 Generation1
仮想ネットワーク VNet1
ゲートウェイサブネットのアドレス範囲 10.0.1.0/27
パブリックIPアドレス
パブリックIPアドレス [新規作成]
パブリックIPアドレス名 pip-VPN-GW1
パブリックIPアドレスのSKU Basic
アクティブ/アクティブモードの有効化 無効
BGPの構成 無効
設定(VPN-GW2)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG2(仮想ネットワークのリソースグループから派生)
インスタンスの詳細
名前 VPN-GW2
地域(リージョン) Japan East
ゲートウェイの種類 VPN
VPNの種類 ルートベース
SKU Basic
世代 Generation1
仮想ネットワーク VNet2
ゲートウェイサブネットのアドレス範囲 10.1.1.0/27
パブリックIPアドレス
パブリックIPアドレス [新規作成]
パブリックIPアドレス名 pip-VPN-GW2
パブリックIPアドレスのSKU Basic
アクティブ/アクティブモードの有効化 無効
BGPの構成 無効

ローカルネットワークゲートウェイの作成

ローカルネットワークゲートウェイの作成画面に移動し、ローカルネットワークゲートウェイ「LGW1」、「LGW2」を作成します。パラメータは以下のように設定します。

設定(LGW1)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG1
インスタンスの詳細
地域(リージョン) Japan East
名前 LGW1
エンドポイント IPアドレス
IPアドレス (pip-VPN-GW2のIPアドレス)
アドレス空間 10.1.0.0/24
詳細設定
BGP設定の構成 いいえ
設定(LGW2)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG2
インスタンスの詳細
地域(リージョン) Japan East
名前 LGW2
エンドポイント IPアドレス
IPアドレス (pip-VPN-GW1のIPアドレス)
アドレス空間 10.0.0.0/24
詳細設定
BGP設定の構成 いいえ

VPN接続の作成

仮想ネットワークゲートウェイ「VPN-GW1」の管理画面に移動し、サイト間VPN接続「Site-to-Site_VNet1toVNet2」を作成します。同様に「VPN-GW2」の管理画面に移動し、「Site-to-Site_VNet2toVNet1」を作成します。

パラメータは以下のように設定します。

設定(Site-to-Site_VNet1toVNet2)
接続の追加
プロジェクトの詳細
名前 Site-to-Site_VNet1toVNet2
接続の種類 サイト対サイト(IPsec)
仮想ネットワークゲートウェイ VPN-GW1
ローカルネットワークゲートウェイ LGW1
共有キー(PSK) (任意の値)
AzureプライベートIPアドレスを使用する (チェックを入れない)
BGPを有効にする (チェックを入れない)
IKEプロトコル IKEv2
設定(Site-to-Site_VNet2toVNet1)
接続の追加
プロジェクトの詳細
名前 Site-to-Site_VNet2toVNet1
接続の種類 サイト対サイト(IPsec)
仮想ネットワークゲートウェイ VPN-GW2
ローカルネットワークゲートウェイ LGW2
共有キー(PSK) (任意の値)(Site-to-Site_VNet1toVNet2と同じ)
AzureプライベートIPアドレスを使用する (チェックを入れない)
BGPを有効にする (チェックを入れない)
IKEプロトコル IKEv2

VPN接続の確認

接続画面に移動し、[状態]欄が「接続済み」であることを確認します。

仮想ネットワーク間接続(VNet-to-VNet)

仮想ネットワーク間接続の手順は以下の通りです。また、最終構成図を記載します。

  1. 仮想ネットワークの作成
  2. 仮想ネットワークゲートウェイの作成
  3. VPN接続の作成
  4. VPN接続の確認

仮想ネットワークの作成

サイト間接続(Site-to-Site)の仮想ネットワークの作成を参照して、「VNet1」、「VNet2」を作成します。

仮想ネットワークゲートウェイの作成

サイト間接続(Site-to-Site)の仮想ネットワークゲートウェイの作成を参照して、「VPN-GW1」、「VPN-GW2」を作成します。

VPN接続の作成

VPN接続「VNet-to-VNet_VNet1toVNet2」、「VNet-to-VNet_VNet2toVNet1」を作成します。パラメータは以下のように設定します。

設定(VNet-to-VNet_VNet1toVNet2)
接続の追加
プロジェクトの詳細
名前 VNet-to-VNet_VNet1toVNet2
接続の種類 VNet対VNet
最初の仮想ネットワークゲートウェイ VPN-GW1
2番目の仮想ネットワークゲートウェイ VPN-GW2
共有キー(PSK) (任意の値)
AzureプライベートIPアドレスを使用する (チェックを入れない)
BGPを有効にする (チェックを入れない)
IKEプロトコル IKEv2
設定(VNet-to-VNet_VNet2toVNet1)
接続の追加
プロジェクトの詳細
名前 VNet-to-VNet_VNet2toVNet1
接続の種類 VNet対VNet
最初の仮想ネットワークゲートウェイ VPN-GW2
2番目の仮想ネットワークゲートウェイ VPN-GW1
共有キー(PSK) (任意の値)(VNet-to-VNet_VNet1toVNet2と同じ)
AzureプライベートIPアドレスを使用する (チェックを入れない)
BGPを有効にする (チェックを入れない)
IKEプロトコル IKEv2

VPN接続の確認

サイト間接続(Site-to-Site)のVPN接続の確認を参照してください。

仮想ネットワークピアリング

仮想ネットワークピアリング接続の手順は以下の通りです。また、最終構成図を記載します。

  1. 仮想ネットワークの作成
  2. ピアリングの作成
  3. ピアリングの確認

仮想ネットワークの作成

サイト間接続(Site-to-Site)の仮想ネットワークの作成を参照して、「VNet1」、「VNet2」を作成します。

ピアリングの作成

仮想ネットワーク「VNet1」の管理画面に移動し、VNetピアリング「VNet-Peering_VNet1toVNet2」と「VNet-Peering_VNet2toVNet1」を作成します。

設定(VNet1)
ピアリングの追加
この仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet1toVNet2
リモート仮想ネットワークへのトラフィック 許可(既定)
リモート仮想ネットワークから転送されたトラフィック 許可(既定)
仮想ネットワークゲートウェイまたはルートサーバー なし(既定)
リモート仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet2toVNet1
仮想ネットワークのデプロイモデル Resource Manager
リソースIDを知っている (チェックを入れない)
サブスクリプション (任意のサブスクリプション)
仮想ネットワーク VNet2
リモート仮想ネットワークへのトラフィック 許可(既定)

リモート仮想ネットワークから転送されたトラフィック

許可(既定)

仮想ネットワークゲートウェイまたはルートサーバー なし(既定)

ピアリングの確認

仮想ネットワーク「VNet1」、「VNet2」の管理画面で、VNetピアリング「VNet-Peering_VNet1toVNet2」と「VNet-Peering_VNet2toVNet1」の[ピアリング状態]欄が「接続済み」であることを確認します。

グローバル仮想ネットワークピアリング

基本的に仮想ネットワークピアリングの手順や構成と同じです。作成する2つの仮想ネットワークの作成先リージョンは異なるリージョンを指定してください。

仮想ネットワークピアリング+仮想ネットワークゲートウェイ

仮想ネットワークピアリング+仮想ネットワークゲートウェイ接続の手順は以下の通りです。また、最終構成図を記載します。

  1. 仮想ネットワークの作成
  2. 仮想ネットワークゲートウェイの作成
  3. ピアリングの作成
  4. ピアリングの確認
  5. ルートテーブルの作成・ルートの設定

仮想ネットワークの作成

サイト間接続(Site-to-Site)の仮想ネットワークの作成で作成した「VNet1」、「VNet2」に加えて、「VNet3」を作成します。パラメータは以下のように設定します。

設定(VNet3)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG3
インスタンスの詳細
名前 VNet3
地域(リージョン) Japan East
IPアドレス
IPv4アドレス空間 10.2.0.0/16
サブネット名 SNet31
サブネットアドレス範囲 10.2.0.0/24
セキュリティ
BastionHost 無効
DDoS Protection Standard 無効
ファイアウォール 無効

仮想ネットワークゲートウェイの作成

サイト間接続(Site-to-Site)の仮想ネットワークゲートウェイの作成を参照して、「VPN-GW2」を作成します。

ピアリングの作成

仮想ネットワークピアリングのピアリングの作成を参照して、VNetピアリング「VNet-Peering_VNet1toVNet2」、「VNet-Peering_VNet2toVNet1」、「VNet-Peering_VNet2toVNet3」、「VNet-Peering_VNet3toVNet2」を作成します。パラメータは以下のように設定します。

設定(VNet1)
ピアリングの追加
この仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet1toVNet2
リモート仮想ネットワークへのトラフィック 許可(既定)
リモート仮想ネットワークから転送されたトラフィック 許可(既定)
仮想ネットワークゲートウェイまたはルートサーバー この仮想ネットワークのゲートウェイまたはルートサーバーを使用する
リモート仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet2toVNet1
仮想ネットワークのデプロイモデル Resource Manager
リソースIDを知っている (チェックを入れない)
サブスクリプション (任意のサブスクリプション)
仮想ネットワーク VNet2
リモート仮想ネットワークへのトラフィック 許可(既定)

リモート仮想ネットワークから転送されたトラフィック

許可(既定)

仮想ネットワークゲートウェイまたはルートサーバー リモート仮想ネットワークのゲートウェイまたはルートサーバーを使用する
設定(VNet2)
ピアリングの追加
この仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet2toVNet3
リモート仮想ネットワークへのトラフィック 許可(既定)
リモート仮想ネットワークから転送されたトラフィック 許可(既定)
仮想ネットワークゲートウェイまたはルートサーバー この仮想ネットワークのゲートウェイまたはルートサーバーを使用する
リモート仮想ネットワーク
ピアリングリンク名 VNet-Peering_VNet3toVNet2
仮想ネットワークのデプロイモデル Resource Manager
リソースIDを知っている (チェックを入れない)
サブスクリプション (任意のサブスクリプション)
仮想ネットワーク VNet3
リモート仮想ネットワークへのトラフィック 許可(既定)

リモート仮想ネットワークから転送されたトラフィック

許可(既定)

仮想ネットワークゲートウェイまたはルートサーバー リモート仮想ネットワークのゲートウェイまたはルートサーバーを使用する

ピアリングの確認

仮想ネットワークピアリングのピアリングの確認を参照してください。

ルートテーブルの作成・ルートの設定

はじめにルートテーブルの作成画面に移動し、ルートテーブル「RouteTable1」、「RouteTable3」を作成します。パラメータは以下のように設定します。

設定(RouteTable1)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG1
インスタンスの詳細
地域(リージョン) Japan East
名前 RouteTable1
ゲートウェイのルートを伝達する Yes
設定(RouteTable3)
基本
プロジェクトの詳細
サブスクリプション (任意のサブスクリプション)
リソースグループ TestRG3
インスタンスの詳細
地域(リージョン) Japan East
名前 RouteTable3
ゲートウェイのルートを伝達する Yes

次に作成したルートテーブル「RouteTable1」、「RouteTable3」に対して、それぞれルート「From-SNet11-To-VPN-GW2」、「From-SNet31-To-VPN-GW2」を追加します。

パラメータは以下のように設定します。アドレスプレフィックスにはそのルートの宛先となるサブネットのアドレス範囲を指定し、ネクストホップの種類にはパケットの転送先として仮想ネットワークゲートウェイを選択します。

設定(RouteTable1)
ルートの追加
ルート名 From-SNet11-To-VPN-GW2
アドレスプレフィックス 10.2.0.0/24
ネクストホップの種類 仮想ネットワークゲートウェイ
ネクストホップアドレス (入力不可)
設定(RouteTable3)
ルートの追加
ルート名 From-SNet31-To-VPN-GW2
アドレスプレフィックス 10.0.0.0/24
ネクストホップの種類 仮想ネットワークゲートウェイ
ネクストホップアドレス (入力不可)

最後に作成したルートをサブネットと関連付けします。

パラメータは以下のように設定します。

設定(RouteTable1)
サブネットの関連付け
仮想ネットワーク VNet1
サブネット SNet11
設定(RouteTable3)
サブネットの関連付け
仮想ネットワーク VNet3
サブネット SNet31

仮想ネットワーク間の通信性能を測定してみた

それぞれの接続方法によって通信性能がどれだけ変わるのか実機で確認してみました。今回は仮想ネットワーク上にLinux VMをデプロイし、ネットワーク性能測定ツールであるqperfをインストールしてスループットとレイテンシを測定しました。

qperfについては以下の記事を参考にしてください。

測定方法

測定のために各仮想ネットワーク上に作成したLinux VMの構成概要は以下の通りです。

項目パラメータ
地域(リージョン)(Asia Pacific)Japan East
イメージ(OS)CentOS-based 7.9 – Gen2
サイズStandard_B2s – 2 vcpu、4 GiB Memory
OSディスクの種類Premium SSD

Linux VMにqperfをインストール後、以下のコマンドを実行してスループットとレイテンシを測定しました。

  • Linux VM間のスループットを60秒間測定
  • Linux VM間のレイテンシを60秒間測定

測定結果

以下の表に接続方法ごとに測定してみた結果を記載します。

接続方法 スループット(tcp_bw) レイテンシ(tcp_lat)
サイト間接続

373 Mb/sec(VNet1=>VNet2)

415 Mb/sec(VNet2=>VNet1)

3.25 ms(VNet1=>VNet2)

3.23 ms(VNet2=>VNet1)

仮想ネットワーク間接続

370 Mb/sec(VNet1=>VNet2)

404 Mb/sec(VNet2=>VNet1)

3.25 ms(VNet1=>VNet2)

3.15 ms(VNet2=>VNet1)

仮想ネットワークピアリング

887 Mb/sec(VNet1=>VNet2)

886 Mb/sec(VNet2=>VNet1)

946 us(VNet1=>VNet2)

974 us(VNet2=>VNet1)

グローバル仮想ネットワークピアリング (リージョンに依存するため実施対象外) (リージョンに依存するため実施対象外)
仮想ネットワークピアリング+仮想ネットワークゲートウェイ

458 Mb/sec(VNet1=>VNet3)

458 Mb/sec(VNet3=>VNet1)

2.16 ms(VNet1=>VNet3)

2.16 ms(VNet3=>VNet1)

想定通り、仮想ネットワークゲートウェイを使用するサイト間接続、仮想ネットワーク間接続と比べて、仮想ネットワークピアリングの方が性能面で優れており、スループットは高く、レイテンシは低いことを確認できました。

また、仮想ネットワークピアリング+仮想ネットワークゲートウェイは、サイト間接続、仮想ネットワーク間接続よりも性能面で優れているものの、仮想ネットワークピアリングと比較するとスループットは約1/2、レイテンシは約2倍でした。これについては仮想ネットワークピアリングの通信経路が単純に2倍になったと考えれば大体納得のいく結果かなと思います。

おわりに

今回はAzureの仮想ネットワーク同士を接続する方法を紹介しました。接続方法ごとにそれぞれメリット・デメリットがありますので、目的に応じて接続方法を使い分けてください。

それでは、また。

この記事を書いた人

目次