次の方法で共有


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

大規模な Azure のお客様に共通するシナリオとして、インターネットに公開される 2 層アプリケーションを提供すると同時に、オンプレミス データセンターからバック層へのアクセスも許可する必要があるということがあります。 この記事では、ルート テーブル、VPN Gateway、ネットワーク仮想アプライアンスを使用して、次の要件を満たす 2 層環境をデプロイするシナリオについて説明します。

  • Web アプリケーションは、パブリック インターネットのみからアクセスできる必要がある。
  • アプリケーションをホストする Web サーバーは、バックエンド アプリケーション サーバーにアクセスできる必要がある。
  • インターネットから Web アプリケーションへのすべてのトラフィックは、ファイアウォール仮想アプライアンスを経由する必要がある。 この仮想アプライアンスは、インターネット トラフィックでのみ使用されます。
  • アプリケーション サーバーへのすべてのトラフィックは、ファイアウォール仮想アプライアンスを経由する必要がある。 この仮想アプライアンスは、バックエンド サーバーへのアクセスと、VPN ゲートウェイ経由でのオンプレミス ネットワークからのアクセスで使用されます。
  • 管理者が、管理目的でのみ使用される第 3 のファイアウォール仮想アプライアンスを使用して、オンプレミス コンピューターからファイアウォール仮想アプライアンスを管理できる必要がある。

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

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

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

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

考慮事項

現在使用できる機能を使用して、上記の環境を Azure にデプロイできます。

  • 仮想ネットワーク: Azure 仮想ネットワークは、オンプレミス ネットワークと同様の方法で動作します。 1 つ以上のサブネットにセグメント化して、トラフィックの分離と懸念事項の分離を実現できます。
  • 仮想アプライアンス: 複数のパートナーが、前述の 3 種類のファイアウォールに使用できる仮想アプライアンスを Azure Marketplace で提供しています。
  • ルート テーブル: ルート テーブルは、仮想ネットワーク内のパケットのフローを制御するため Azure ネットワークによって使用されます。 これらのルート テーブルをサブネットに適用できます。 ルート テーブルを GatewaySubnet に適用すると、Azure 仮想ネットワークに入るすべてのトラフィックがハイブリッド接続から仮想アプライアンスに転送されます。
  • IP 転送: 既定では、Azure ネットワーク エンジンは、パケットの宛先 IP アドレスが仮想ネットワーク インターフェイス カード (NIC) の IP アドレスと一致する場合のみ、パケットを NIC に転送します。 特定の仮想アプライアンスにパケットを送信する必要があることをルート テーブルで定義している場合、そのパケットは Azure ネットワーク エンジンによってドロップされます。 パケットの実際の宛先ではない VM (ここでは仮想アプライアンス) にパケットが送信されるようにするには、仮想アプライアンスに対する IP 転送を有効にします。
  • ネットワーク セキュリティ グループ: 次の例では NSG を使用していませんが、このソリューションのサブネットまたは NIC に適用される NSG を使用することができます。 NSG は、それらのサブネットと NIC で入出力されるトラフィックをさらにフィルター処理します。

IPv6 接続を示すダイアグラム。

この例で使用するサブスクリプションには、以下の項目が含まれています。

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

    • ONPREMRG: オンプレミス ネットワークをシミュレートするために必要なすべてのリソースを含みます。
    • AZURERG: Azure 仮想ネットワーク環境に必要なすべてのリソースを含みます。
  • オンプレミス データセンターを模倣するために、onpremvnet という仮想ネットワークがセグメント化され、使用されます。

    • onpremsn1: オンプレミス サーバーを模倣するための、Linux ディストリビューションを実行中の仮想マシン (VM) を含むサブネット。
    • onpremsn2: 管理者が使用するオンプレミス コンピューターを模倣するための、Linux ディストリビューション を実行中の VM を含むサブネット。
  • onpremvnet 上の 1 つのファイアウォール仮想アプライアンスは OPFW という名前です。 これは、azurevnet へのトンネルを維持するために使用されます。

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

    • azsn1: 外部ファイアウォールに対してのみ使用される外部ファイアウォール サブネット。 すべてのインターネット トラフィックは、このサブネット経由で受信されます。 このサブネットには、外部ファイアウォールにリンクされた NIC だけが含まれます。
    • azsn2: インターネットからアクセスされる Web サーバーとして実行される VM をホストするフロントエンド サブネット。
    • azsn3: フロントエンド Web サーバーによってアクセスされるバックエンド アプリケーション サーバーを実行する VM をホストするバックエンド サブネット。
    • azsn4: すべてのファイアウォール仮想アプライアンスへのアクセスを管理するためにのみ使用される管理サブネット。 このサブネットには、このソリューションで使用される各ファイアウォール仮想アプライアンス用の NIC のみが含まれます。
    • GatewaySubnet: Azure 仮想ネットワークと他のネットワーク間に接続を提供するために、Azure ExpressRoute と Azure VPN Gateway に必要な Azure ハイブリッド接続サブネット。
  • azurevnet ネットワーク内には 3 つのファイアウォール仮想アプライアンスがあります。

    • AZF1: Azure のパブリック IP アドレス リソースを使用してパブリック インターネットに公開される外部ファイアウォール。 3-NIC 仮想アプライアンスをデプロイするテンプレート (Azure Marketplace から、またはアプライアンス ベンダーから直接取得します) があることを確認する必要があります。
    • AZF2: azsn2azsn3 間のトラフィックを制御するために使用される内部ファイアウォール。 このファイアウォールも 3-NIC 仮想アプライアンスです。
    • AZF3: 管理者がオンプレミス データセンターからアクセスでき、すべてのファイアウォール アプライアンスを管理するために使用される管理サブネットに接続されている管理ファイアウォール。 Azure Marketplace には、2-NIC 仮想アプライアンス テンプレートがあります。 アプライアンス ベンダーに直接リクエストすることもできます。

ルート テーブル

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 アプリ サーバーから Web サーバーへと AZF2 経由で流れる azsn2 へのトラフィックを許可します。

オンプレミス データセンターを模倣するために、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 にすぎません。ファイアウォールやネットワーク アドレス変換デバイスなど、ネットワーク トラフィックを何らかの方法で処理するために使用されるアプリケーションが仮想アプライアンスで実行されます。

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

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

たとえば、Azure 仮想ネットワークが次のように設定されているとします。

  • サブネット onpremsn1 には、onpremvm1 という VM が含まれています。
  • サブネット onpremsn2 には、onpremvm2 という VM が含まれています。
  • OPFW という仮想アプライアンスは、onpremsn1onpremsn2 に接続されています。
  • onpremsn1 にリンクされている UDR で、onpremsn2 へのすべてのトラフィックを OPFW に送信する必要があることを指定します。

この時点で、onpremvm1onpremvm2 との接続を確立しようとすると、UDR が使用され、トラフィックはネクスト ホップとして OPFW に送信されます。 実際のパケットの宛先は変更されません。 まだ onpremvm2 が宛先であると表示されます。

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

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

前述のシナリオを機能させるには、ルーティングするために使用される OPFWAZF1AZF2AZF3 用の 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 規則を外部ファイアウォール サブネットに適用できます。

受信

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

送信

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

手順の概要

このシナリオをデプロイするには、次の手順に従います。

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

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

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

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

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