こんにちは、Aireです。
今回はAzure上の仮想ネットワーク同士を接続する方法と手順を紹介します。
接続方法の種類
サイト間接続(Site-to-Site)
接続先と接続元の仮想ネットワークに仮想ネットワークゲートウェイ(VPNゲートウェイ)とローカルネットワークゲートウェイを作成し、仮想ネットワーク同士を接続する方法です。仮想ネットワークゲートウェイによって仮想ネットワーク間にIPsec/IKEを使用したセキュアなVPNトンネルが確立されます。一般にオンプレ拠点と仮想ネットワークをVPN接続するための方法ですが、仮想ネットワーク同士を接続する際も使用可能です。
仮想ネットワーク間接続(VNet-to-VNet)
接続先と接続元の仮想ネットワークに仮想ネットワークゲートウェイを作成し、仮想ネットワーク同士を接続する方法です。サイト間接続と同様、仮想ネットワーク間にはVPNトンネルが確立されます。ただし、ローカルネットワークゲートウェイは内部的に自動で作成されます(画面上には表示されません)。サイト間接続と比較し、簡単に作成することが可能です。
仮想ネットワークピアリング
仮想ネットワークゲートウェイを使用せずに仮想ネットワーク同士を接続する方法です。仮想ネットワークゲートウェイを使用・経由しないため、機能的な制約はありますが高速通信が可能です。仮想ネットワークピアリングは通常、リモート仮想ネットワークからのトラフィックを転送しないため、通信したい仮想ネットワーク同士を個別にピアリング接続する必要がありますが、仮想ネットワークゲートウェイを作成し、リモートゲートウェイ転送を設定することでトラフィックの転送が可能です。
グローバル仮想ネットワークピアリング
異なるリージョンにある仮想ネットワーク同士をピアリング接続する方法です。異なるリージョンにある仮想ネットワーク間ではリモートゲートウェイ転送を設定することはできないため、ピアリング先とピアリング元の仮想ネットワーク間での通信のみ可能です。
仮想ネットワークピアリング+仮想ネットワークゲートウェイ
仮想ネットワークピアリングの場合、ピアリング先とピアリング元の仮想ネットワーク間でのみ通信が可能であり、仮想ネットワークを跨いでの通信はできません。ただし、ピアリング先の仮想ネットワークに仮想ネットワークゲートウェイを作成し、ゲートウェイ転送を有効にすると、仮想ネットワークゲートウェイによるトラフィックの転送が可能になり、仮想ネットワークを跨いだ通信が可能になります。
接続手順
サイト間接続(Site-to-Site)
サイト間接続の手順は以下の通りです。また、最終構成図を記載します。
- 仮想ネットワークの作成
- 仮想ネットワークゲートウェイの作成
- ローカルネットワークゲートウェイの作成
- VPN接続の作成
- 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)
仮想ネットワーク間接続の手順は以下の通りです。また、最終構成図を記載します。
- 仮想ネットワークの作成
- 仮想ネットワークゲートウェイの作成
- VPN接続の作成
- 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接続の確認を参照してください。
仮想ネットワークピアリング
仮想ネットワークピアリング接続の手順は以下の通りです。また、最終構成図を記載します。
- 仮想ネットワークの作成
- ピアリングの作成
- ピアリングの確認
仮想ネットワークの作成
サイト間接続(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つの仮想ネットワークの作成先リージョンは異なるリージョンを指定してください。
仮想ネットワークピアリング+仮想ネットワークゲートウェイ
仮想ネットワークピアリング+仮想ネットワークゲートウェイ接続の手順は以下の通りです。また、最終構成図を記載します。
- 仮想ネットワークの作成
- 仮想ネットワークゲートウェイの作成
- ピアリングの作成
- ピアリングの確認
- ルートテーブルの作成・ルートの設定
仮想ネットワークの作成
サイト間接続(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秒間測定
1 |
qperf -ip 19766 -t 60 --use_bits_per_sec <IPアドレス> tcp_bw |
- Linux VM間のレイテンシを60秒間測定
1 |
qperf -ip 19766 -t 60 <IPアドレス> tcp_lat |
測定結果
以下の表に接続方法ごとに測定してみた結果を記載します。
接続方法 | スループット(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の仮想ネットワーク同士を接続する方法を紹介しました。接続方法ごとにそれぞれメリット・デメリットがありますので、目的に応じて接続方法を使い分けてください。
それでは、また。