以前の記事で Azure の仮想ネットワーク間の接続で、VPN と VNET ピアリングについての紹介及び比較をさせていただきました。
ただ、VPN はどっちかというと、Azure と外部ネットワーク(オンプレミスや他のクラウド)と接続するのによく使うサービスです。
今回は、外部ネットワーク接続をメインに、Azure VPN について、説明させていただきたいと思います。
VPN とは
仮想プライベート ネットワーク (VPN) は、プライベート相互接続ネットワークの一種です。 VPN では、別のネットワーク内で暗号化されたトンネルが使用されます。Document
簡単にいうと、分離したネットワーク間にトンネリングを作って、プライベートで繋いでいるようにするための技術のことです。(通信はインターネット越しですが、通信が暗号化されたトンネルを使っているので、安全です)
Azure では、マネジッドサービスとして、VPN 接続のサービスを提供しています:Azure VPN Gateway
Azure VPN の機能
Azure VPN を用いて、以下のことができるようになる
- "サイト対サイト"(S2S) 接続:Azure 仮想ネットワークとオンプレミス データセンターと接続する。
- "ポイント対サイト"(P2S) 接続:Azure 仮想ネットワークに個々のデバイス(PCなど)を接続する。
- "VNET対VNET" 接続:Azure 仮想ネットワークを他の Azure 仮想ネットワークに接続する。
"VNET対VNET" はVPNとvNetピアリングの記事で紹介しました。また、"ポイント対サイト"(P2S) は今後紹介する予定なので、今回は"サイト対サイト"(S2S)を中心に紹介していきます。
サイト間(S2S) VPN の仕組み
S2S VPN の仕組みをご紹介する前に、まずは必要なコンポーネントについて、説明したいと思います。
S2S VPN 構成するには、以下のパーツ(コンポーネント)が必要です。
- 仮想ネットワーク
GatewaySubnet
という名前のサブネット
- VPN Gateway:トラフィックをルーティングするための仮想アプライアンス群(2台以上のVM)
- 仮想ネットワークごとに 1つしか作れない
- VPN Gateway は 1つで複数のサイトと接続可能
- Local Network Gateway:オンプレミス ネットワークの構成 (VPN ゲートウェイの接続場所と対象) を定義するためのリソース (実はルーティングテーブルです)
- オンプレミス(又は他クラウド)のルーターの外部 IP (または FQDN)情報を登録
- オンプレミス(又は他クラウド)のネットワーク情報を登録
- 複数サイト接続の場合、複数作成が必要
- 接続(Connect):VPN Gateway と Local Network Gateway を紐づくためのリソース
- Local Network Gateway が複数ある場合、複数作成が必要
- パブリック IP (Azure):外部ネットワークから Azure VPN Gateway へ接続するときに使用する
- VPN Gateway が再作成しない限り、IP は変わらない
公式ドキュメントからイメージ図をお借りします。
VPN Gateway と VNET Gateway
VPN Gateway と VNET Gateway について、名前が似ているので、見分けがつかない方がいるかもしれませんので(自分はそうだった)、ここではっきりにしようと思います。
答えは:VPN Gateway は VNET Gateway の一種です。
VNET Gateway は以下の2種類があります。
- VPN Gateway
- Expressroute Gateway
VNET Gateway は裏では、2台以上の VM で構成されています。また、仮想ネットワークに「GatewaySubnet」という名前のサブネットを作成し、そこにデプロイする必要があります。
※ マネジッドサービスのため、構成した裏のもの(VM)は一切ユーザー側で操作することができません。
また、仮想ネットワークごとに、VPN Gateway は 1 つしか作成できないです。複数サイト間接続するときに、この 1 つのVPN Gateway で複数のサイトと接続することになります。
※ Expressroute Gateway は一緒に作成できます。
VPN Gateway はトラフィックのルーティングをする役割を持っています。Azure VPN のメインパーツです。
サイト間(S2S) VPN の特徴
特徴
- インターネット経由でサイト間通信する
- 通信は、IPsec/IKE(暗号化方式)を使った、セキュアなトンネルで通信する(通信は暗号化される)
- 一部のリージョンでは、ゾーン冗長(SKU)の VNET Gateway も構築可能
- Expressroute の冗長構成として VPN を使用することも可能
- ルートベースの VPN Gateway が必要
前提条件と制限事項
前提条件
- 仮想ネットワークが作成されていること
/27
(以上IP空間)のGatewaySubnet
という名前のサブネットを作成する必要がある(仮想ネットワークゲートウェイの作成時、自動作成も可能)GatewaySubnet
にネットワーク セキュリティ グループ (NSG) を関連付けないようにする (動作しない可能性がある)
ゲートウェイ サブネットを使用する場合は、ゲートウェイ サブネットにネットワーク セキュリティ グループ (NSG) を関連付けないようにしてください。 このサブネットにネットワーク セキュリティ グループを関連付けると、Virtual Network ゲートウェイ (VPN、Express Route ゲートウェイ) が正常に動作しなくなることがあります。Document
制限:
- 仮想ネットワークごとに、VPN Gateway を 1 つしか構成できない
GatewaySubnet
にNSGを紐づく- 課金量 = 下り通信費用
+
Gatewayの利用料金- 同リージョンのvNet間VPNは双方向の通信無料
- VPN Gateway Sku の変更
- Basic SKU から他のSKUへの変更は不可、逆も不可
- Basic SKU から他のSKUへ変更したい場合、再作成になる(パブリック IP は変わる)
- 最大トンネル数
- Basic SKU :10
- その他:30
- 30 個を超える S2S VPN トンネルが必要な場合は、Virtual WAN を使用してください
- Expreroute との共存
- Basic SKU:不可
- その他の SKU:可能
- Basic SKU は BGP サポートしない
冗長構成について
VPN Gateway は裏では冗長構成されています。
アクティブ/スタンバイ(デフォルト)
既定では、VPN ゲートウェイは、Azure で 1 つの VPN ゲートウェイ リソースしか表示されない場合でも、"アクティブ/スタンバイ" 構成で 2 つのインスタンスとしてデプロイされます。
アクティブのインスタンスが落ちたら、自動的にフェールオーバーする仕様になっています。
- 計画メンテナンスでは数秒以内に復元
- 計画外の中断では 90 秒以内に復元
公式資料からのイメージ図
アクティブ/アクティブ
BGP ルーティング プロトコルのサポート開始により、VPN ゲートウェイを アクティブ/アクティブ 構成でもデプロイできるようになりました。
この仕様にすれば、片方落ちても、ダウンタイムは発生しません。
ただし、この機能を使用する際に、幾つの条件が必要です。
- VPN Gateway のインスタンスごとに パブリック IP が必要
- オンプレミス(又は他クラウド)に複数のVPN デバイスが必要
- オンプレミス(又は他クラウド)に複数の外部 IP が必要(VPN デバイスごとに)
- 同じオンプレミス ネットワークへの接続を 2 つ確立するために、BGP が必要
- BGP の有効:Configure BGP (BGP の構成)を「有効」に選択する
- オンプレミスなどのVPN デバイスは BGP サポートが必要
- VNet 間 VPN のアクティブ/アクティブ接続の場合、BGP は必要ない
- VPN トンネル(接続 + Local Network Gateway)は複数必要
- VPN Gateway 作成時、「アクティブ/アクティブ モードの有効化」のチェックをオンにする
公式資料からのイメージ図
※ アクティブ/アクティブ は後でも アクティブ/スタンバイ 相互変更可能
構築方法のドキュメントを載せておきますので、ご参考までに。
複数サイト間の接続について
VPN Gateway で複数サイト間接続する場合、幾つのパターンがあります。
BGP の有効と無効で、ネットワーク構成が異なりますので、BGP をベースでご紹介します。
BGP は、2 つ以上のネットワーク間でルーティングと到達可能性の情報を交換するためにインターネット上で広く使用されている標準のルーティング プロトコルです。Document
BGP 無効の構成
BGP を使用せずに Azure VPN Gateway とオンプレミスの VPN デバイスを使用すること可能ですが、これは静的ルートを使用するのと同じです。そのため、相手側からルーティング情報を学習できず、VPN ネットワークの更に先にある VPN ネットワークへの通信はできません。
※ ポリシーベース は 静的ルーティング です。参考 Document
VPN 通信例(公式ドキュメント):
BGP 無効の通信不可例(公式ドキュメント):
詳細な構築手順については、ここをご参考していただければと思います。
BGP 有効の構成
BGP では、接続が直接か間接的かにかかわらず、複数のゲートウェイが異なるネットワークからプレフィックス()を学習して伝達することができます。 これにより、オンプレミス サイト間または複数の Azure Virtual Networks 間で Azure VPN ゲートウェイを使用したトランジット ルーティングを実行できます。
簡単に言うと、BGP が接続先の VPN ネットワークからルーティング情報を学習し、VPN ネットワークの更に先の VPN ネットワークへの通信が可能にする仕組みです。
BGP を有効にすることで、例えば上記「BGP 無効の通信不可例」の通信が可能になるとか、前文でご紹介した「アクティブ/アクティブ」の冗長構成が可能になります。
更に、以下のような複雑なマルチホップ トポロジ構成も可能です。
この構成は、Azure VPN ゲートウェイを通じて 2 つのオンプレミス ネットワーク間でトラフィックをやり取りできる複数のパスを使用したマルチホップ トポロジ(構成)となります。
強制トンネリング
Azure のリソースはデフォルト Azure のインフラストラクチャーからインターネットに出るようになっています。
ただし、要件によっては、セキュリティを担保するのに(通信の監視など)、インターネットへのアクセスはプロキシサーバー(オンプレミス)を経由させるケースもあります。
この要件で、強制トンネリング機能を使用することで達成できます。
強制トンネリングを使用すると、検査および監査のために、サイト間の VPN トンネルを介して、インターネットへのすべてのトラフィックをオンプレミスの場所に戻すようにリダイレクトする (つまり、"強制する") ことができます。
機能の詳細はここでは詳しく紹介しませんが、もしこの機能が必要な方がいらっしゃるであれば、こちらをご参考していただければと思います。
強制トンネリングは仮想ネットワークのカスタム ユーザー定義ルートを使用して構成されます。
※ この設定は現在 Azure PowerShell を使用して構成できます。
その他の概念
VPN Gateway を理解する際に、以下のキーワードもありますが、詳しい説明はここで割愛しますが、説明のサイトを載せておきます。
ポリシーベースとルートベース]
共有キー (PSK)
暗号化通信において、暗号化するための暗号鍵を生成するのに、事前に共有する文字列のことです。
VPN Gateway と (オンプレミスなどの)VPN デバイスは同じ共有キーを使用するようにする必要があります。
※ PSK:Pre-Shared Key
BGP について
最後に
今回は Azure の S2S VPN についてご紹介しました。
自分も VPN についてぼんやりしていたので、今回で結構勉強になりました。
自分が学習したものを公開し、読んでいる方々の役に立てるとうれしい限りです。
ここまで読んでいただいて、お疲れ様でした。
コメント