仮想アプライアンスを使用するシナリオ

大規模な Azure のお客様の一般的なシナリオとして、オンプレミス データセンターからバック層へのアクセスを許可する一方で、インターネットに公開された 2 層アプリケーションを提供する必要性が挙げられます。 このドキュメントでは、ルート テーブル、VPN Gateway、およびネットワーク仮想アプライアンスを使用して、次の要件を満たす 2 層環境をデプロイするシナリオについて説明します。

  • Web アプリケーションは、パブリック インターネットのみからアクセスできる必要がある。

  • アプリケーションをホストする Web サーバーは、バックエンド アプリケーション サーバーにアクセスできる必要がある。

  • インターネットから Web アプリケーションへのすべてのトラフィックは、ファイアウォール仮想アプライアンスを経由する必要がある。 この仮想アプライアンスは、インターネット トラフィックでのみ使用されます。

  • アプリケーション サーバーへのすべてのトラフィックは、ファイアウォール仮想アプライアンスを経由する必要がある。 この仮想アプライアンスは、バックエンド サーバーへのアクセスと、VPN Gateway 経由でのオンプレミス ネットワークからのアクセスで使用されます。

  • 管理者が、管理目的でのみ使用される第 3 のファイアウォール仮想アプライアンスを使用して、オンプレミス コンピューターからファイアウォール仮想アプライアンスを管理できる必要がある。

この例は、DMZ と保護されたネットワークを使用する標準的な境界ネットワーク (DMZ とも呼ばれます) のシナリオです。 このようなシナリオを、NSG、ファイアウォール仮想アプライアンス、または両方の組み合わせを使用して Azure で構築できます。

次の表は、NSG とファイアウォール仮想アプライアンスの長所と短所の一部を示しています。

Item 長所 短所
NSG コストがかかりません。
Azure ロール ベースのアクセスに統合されています。
Azure Resource Manager テンプレートでルールを作成できます。
大規模な環境では複雑さが変化する可能性があります。
ファイアウォール データ プレーンを完全に制御します。
ファイアウォール コンソールから一元管理します。
ファイアウォール アプライアンスのコストがかかります。
Azure ロールベースのアクセスと統合されていません。

次のソリューションでは、ファイアウォール仮想アプライアンスを使用して、境界ネットワーク (DMZ) で保護されたネットワークのシナリオを実装します。

考慮事項

前に説明した環境を、次に示す現在使用できるさまざまな機能を使用して Azure にデプロイできます。

  • Virtual network。 Azure 仮想ネットワークは、オンプレミス ネットワークと同じように機能し、トラフィックと問題を分離するために 1 つまたは複数のサブネットにセグメント化できます。

  • 仮想アプライアンス。 複数のパートナーが、前述の 3 種類のファイアウォールのために使用できる仮想アプライアンスを Azure Marketplace で提供しています。

  • ルート テーブル。 ルート テーブルは、仮想ネットワーク内のパケットのフローを制御するため Azure ネットワークによって使用されます。 これらのルート テーブルをサブネットに適用できます。 ルート テーブルを GatewaySubnet に適用すると、Azure 仮想ネットワークに入るすべてのトラフィックがハイブリッド接続から仮想アプライアンスに転送されます。

  • IP 転送。 既定では、Azure ネットワーク エンジンは、パケットの宛先 IP アドレスが仮想ネットワーク インターフェイス カード (NIC) の IP アドレスと一致する場合のみ、パケットを NIC に転送します。 したがって、特定の仮想アプライアンスにパケットを送信する必要があることをルート テーブルで定義している場合、Azure ネットワーク エンジンは、そのパケットを削除します。 パケットの実際の宛先ではない VM (ここでは仮想アプライアンス) にパケットが送信されるようにするには、仮想アプライアンスに対する IP 転送を有効にします。

  • ネットワーク セキュリティ グループ (NSG) 。 次の例では NSG を使用していませんが、このソリューションのサブネットまたは NIC に適用される NSG を使用することができます。 NSG は、それらのサブネットと NIC で入出力されるトラフィックをさらにフィルター処理します。

IPv6 接続の図。

この例のサブスクリプションには、以下のものが含まれています。

  • 2 つのリソース グループ (図には示されていません)。

    • ONPREMRG。 オンプレミス ネットワークをシミュレートするために必要なすべてのリソースを含みます。

    • AZURERG。 Azure 仮想ネットワーク環境に必要なすべてのリソースを含みます。

  • オンプレミスのデータセンターを模倣するために使用される、次のようにセグメント化された onpremvnet という名前の仮想ネットワーク。

    • onpremsn1。 オンプレミス サーバーを模倣するための、Linux ディストリビューション を実行中の仮想マシン (VM) を含むサブネット。

    • onpremsn2。 管理者によって使用されるオンプレミス コンピューターを模倣するための、Linux ディストリビューション を実行中の VM を含むサブネット。

  • onpremvnet には、azurevnet へのトンネルを維持するために使用される OPFW という名前のファイアウォール仮想アプライアンスが 1 つあります。

  • 次のようにセグメント化された azurevnet という名前の仮想ネットワーク。

    • azsn1。 外部ファイアウォールに対してのみ使用される外部ファイアウォール サブネット。 すべてのインターネット トラフィックは、このサブネットを通して受信されます。 このサブネットには、外部ファイアウォールにリンクされた NIC だけが含まれます。

    • azsn2。 インターネットからアクセスされる Web サーバーとして実行される VM をホストするフロントエンド サブネット。

    • azsn3。 フロントエンド Web サーバーによってアクセスされるバックエンド アプリケーション サーバーを実行する VM をホストするバックエンド サブネット。

    • azsn4。 すべてのファイアウォール仮想アプライアンスへのアクセスを管理するためにのみ使用される管理サブネット。 このサブネットには、このソリューションで使用される各ファイアウォール仮想アプライアンス用の NIC のみが含まれます。

    • GatewaySubnet。 Azure VNet とその他のネットワークを接続するために ExpressRoute と VPN Gateway が必要とする Azure ハイブリッド接続サブネット。

  • azurevnet ネットワークには、次の 3 つのファイアウォール仮想アプライアンスがあります。

    • AZF1。 Azure の パブリック IP アドレス リソースを使用してパブリック インターネットに公開される外部ファイアウォール。 3-NIC 仮想アプライアンスをデプロイするテンプレート (Marketplace から、またはアプライアンス ベンダーから直接取得します) があることを確認する必要があります。

    • AZF2azsn2azsn3 間のトラフィックを制御するために使用される内部ファイアウォール。 このファイアウォールも 3-NIC 仮想アプライアンスです。

    • AZF3。 管理者がオンプレミス データセンターからアクセスでき、すべてのファイアウォール アプライアンスを管理するために使用される管理サブネットに接続されている管理ファイアウォール。 2-NIC 仮想アプライアンスのテンプレートを Marketplace で探すか、アプライアンス ベンダーに直接要求できます。

ルート テーブル

Azure の各サブネットは、そのサブネットで開始されたトラフィックをどのようにルーティングするかを定義するために使用されるルート テーブルにリンクすることができます。 UDR が定義されていない場合、Azure では、既定のルートを使用してあるサブネットから別のサブネットにトラフィックが送信されることを許可します。 ルート テーブルとトラフィック ルーティングの詳細については、「Azure 仮想ネットワーク トラフィックのルーティング」を参照してください。

上記の最後の要件に基づいて、適切なファイアウォール アプライアンスを経由して通信が行われるようにするために、azurevnet に次のルート テーブルを作成する必要があります。

azgwudr

このシナリオでは、オンプレミスから Azure に送信される唯一のトラフィックは AZF3 に接続してファイアウォールを管理するために使用され、そのトラフィックは内部ファイアウォール AZF2 を通過する必要があります。 したがって、GatewaySubnet には、次に示す 1 つのルートのみが必要です。

宛先 次のホップ 説明
10.0.4.0/24 10.0.3.11 オンプレミスのトラフィックが管理ファイアウォール AZF3

azsn2udr

宛先 次のホップ 説明
10.0.3.0/24 10.0.2.11 アプリケーション サーバーをホストするバックエンド サブネットへのトラフィックが AZF2
0.0.0.0/0 10.0.2.10 他のすべてのトラフィックが AZF1

azsn3udr

宛先 次のホップ 説明
10.0.2.0/24 10.0.3.10 azsn2 へのトラフィックが、アプリケーション サーバーから AZF2 経由で Web サーバーに送信されることを許可します。

オンプレミス データセンターを模倣するために、 onpremvnet 内のサブネット用のルート テーブルも作成する必要があります。

onpremsn1udr

宛先 次のホップ 説明
192.168.2.0/24 192.168.1.4 onpremsn2 へのトラフィックが OPFW 経由で送信されることを許可します。

onpremsn2udr

宛先 次のホップ 説明
10.0.3.0/24 192.168.2.4 Azure 内のバックエンド サブネットへのトラフィックが OPFW
192.168.1.0/24 192.168.2.4 onpremsn1 へのトラフィックが OPFW で送信されることを許可します。

IP 転送

ルート テーブルと IP 転送は、組み合わせて使用することで、Azure 仮想ネットワーク内のトラフィック フローを仮想アプライアンスで制御できるようにする機能です。 仮想アプライアンスは、アプリケーションを実行する VM にすぎません。ファイアウォールや NAT デバイスなど、ネットワーク トラフィックを何らかの方法で処理するために使用されるアプリケーションが仮想アプライアンスで実行されます。

この仮想アプライアンス VM は、自分宛てではない着信トラフィックを受信できることが必要です。 VM が自分以外の宛先に向かうトラフィックを受信するためには、VM の IP 転送を有効にする必要があります。 この設定は Azure の設定であり、ゲスト オペレーティング システムでの設定ではありません。 仮想アプライアンスは、受信トラフィックを処理し、適切にルーティングするアプリケーションを実行する必要があります。

IP 転送の詳細については、「Azure 仮想ネットワーク トラフィックのルーティング」を参照してください。

たとえば、Azure VNet が次のように設定されているとします。

  • サブネット onpremsn1onpremvm1 という名前の VM がある。

  • サブネット onpremsn2onpremvm2 という名前の VM がある。

  • OPFW という名前の仮想アプライアンスが onpremsn1onpremsn2 に接続されている。

  • onpremsn1 にリンクされたユーザー定義ルートで、onpremsn2 に対するすべてのトラフィックを OPFW に送信する必要があると指定している。

この時点で、onpremvm1onpremvm2 との接続を確立しようとした場合は、UDR が使用され、トラフィックは次のホップで OPFW に送信されます。 パケットの実際の宛先は変更されず、宛先は onpremvm2 のままであることに注意してください。

OPFW に対する IP 転送が有効になっていない場合、パケットは Azure 仮想ネットワークのロジックによって削除されます。これは、パケットの VM への送信は、パケットの送信先が VM の IP アドレスである場合にのみ許可されるためです。

IP 転送が有効になっている場合、パケットは Azure 仮想ネットワークのロジックによって、元の宛先アドレスの変更なしで OPFW に転送されます。 OPFW は、パケットを処理し、パケットに対して何を実行するかを決定する必要があります。

前のシナリオを機能させるには、ルーティングのために使用される OPFWAZF1AZF2、および AZF3 用の NIC (管理サブネットにリンクされている NIC 以外のすべての NIC) で IP 転送を有効にする必要があります。

ファイアウォール ルール

前述したように、IP 転送は、パケットが仮想アプライアンスに送信されることを保証するだけです。 これらのパケットの処理方法はアプライアンスが決定する必要があります。 前のシナリオでは、次のルールをアプライアンスに作成する必要があります。

OPFW

OPFW は、次のルールを含むオンプレミス デバイスを表します。

  • ルート: 10.0.0.0/16 (azurevnet) へのすべてのトラフィックを、トンネル ONPREMAZURE 経由で送信する必要があります。

  • ポリシー:port2ONPREMAZURE 間のすべての双方向トラフィックを許可します。

AZF1

AZF1 は、次のルールを含む Azure の仮想アプライアンスを表します。

  • ポリシー:port1port2 間のすべての双方向トラフィックを許可します。

AZF2

AZF2 は、次のルールを含む Azure の仮想アプライアンスを表します。

  • ポリシー:port1port2 間のすべての双方向トラフィックを許可します。

AZF3

AZF3 は、次のルールを含む Azure の仮想アプライアンスを表します。

  • ルート: 192.168.0.0/16 (onpremvnet) へのすべてのトラフィックを、port1 経由で Azure ゲートウェイ IP アドレス (つまり、10.0.0.1) に送信する必要があります。

ネットワーク セキュリティ グループ (NSG)

このシナリオでは、NSG は使用されていません。 ただし、各サブネットに NSG を適用して、受信トラフィックと送信トラフィックを制限できます。 たとえば、次の NSG ルールを外部 FW サブネットに適用できます。

受信

  • サブネット内のすべての VM で、インターネットから ポート 80 へのすべての TCP トラフィックを許可します。

  • それ以外のインターネットからのすべてのトラフィックを拒否します。

送信

  • インターネットへのすべてのトラフィックを拒否します。

手順の概要

このシナリオをデプロイするには、次の大まかな手順を使用します。

  1. Azure サブスクリプションにサインインします。

  2. オンプレミス ネットワークを模倣するために仮想ネットワークをデプロイする場合は、ONPREMRG の一部であるリソースをデプロイします。

  3. AZURERG の一部であるリソースをデプロイします。

  4. onpremvnet から azurevnet へのトンネルをデプロイします。

  5. すべてのリソースがプロビジョニングされた後、onpremvm2 にサインインし、10.0.3.101 への ping を実行して、onpremsn2azsn3 間の接続をテストします。