仮想アプライアンスを使用するシナリオ
大規模な 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 で入出力されるトラフィックをさらにフィルター処理します。
この例で使用するサブスクリプションには、以下の項目が含まれています。
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
:azsn2
とazsn3
間のトラフィックを制御するために使用される内部ファイアウォール。 このファイアウォールも 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
という仮想アプライアンスは、onpremsn1
とonpremsn2
に接続されています。onpremsn1
にリンクされている UDR で、onpremsn2
へのすべてのトラフィックをOPFW
に送信する必要があることを指定します。
この時点で、onpremvm1
が onpremvm2
との接続を確立しようとすると、UDR が使用され、トラフィックはネクスト ホップとして OPFW
に送信されます。 実際のパケットの宛先は変更されません。 まだ onpremvm2
が宛先であると表示されます。
OPFW
に対する IP 転送が有効になっていない場合、パケットは Azure 仮想ネットワークのロジックによってドロップされます。これは、パケットの VM への送信は、パケットの送信先が VM の IP アドレスである場合にのみ許可されるためです。
IP 転送が有効になっている場合、パケットは Azure 仮想ネットワークのロジックによって、元の宛先アドレスの変更なしで OPFW
に転送されます。 OPFW
でパケットを処理し、パケットに対して何を実行するかを決定する必要があります。
前述のシナリオを機能させるには、ルーティングするために使用される OPFW
、AZF1
、AZF2
、AZF3
用の NIC (管理サブネットにリンクされている NIC 以外のすべての NIC) に対する IP 転送を有効にする必要があります。
ファイアウォール規則
前述したように、IP 転送は、パケットが仮想アプライアンスに送信されることを保証するだけです。 これらのパケットの処理方法はアプライアンスが決定する必要があります。 前のシナリオでは、次のルールをアプライアンスに作成する必要があります。
OPFW
OPFW は、次のルールを含むオンプレミス デバイスを表します。
- ルート: 10.0.0.0/16 (
azurevnet
) へのすべてのトラフィックは、トンネルONPREMAZURE
経由で送信される必要があります。 - ポリシー:
port2
とONPREMAZURE
間のすべての双方向トラフィックを許可します。
AZF1
AZF1
は、次のルールを含む Azure 仮想アプライアンスを表します。
ポリシー: port1
と port2
間のすべての双方向トラフィックを許可します。
AZF2
AZF2
は、次のルールを含む Azure 仮想アプライアンスを表します。
ポリシー: port1
と port2
間のすべての双方向トラフィックを許可します。
AZF3
AZF3
は、次のルールを含む Azure 仮想アプライアンスを表します。
ルート: 192.168.0.0/16 (onpremvnet
) へのすべてのトラフィックは、port1
経由で Azure ゲートウェイの IP アドレス (つまり、10.0.0.1) に送信される必要があります。
ネットワーク セキュリティ グループ
このシナリオでは、NSG は使用されていません。 ただし、NSG を各サブネットに適用して、受信トラフィックと送信トラフィックを制限できます。 たとえば、次の NSG 規則を外部ファイアウォール サブネットに適用できます。
受信
- サブネット内のすべての VM で、インターネットからポート 80 へのすべての TCP トラフィックを許可します。
- それ以外のインターネットからのすべてのトラフィックを拒否します。
送信
インターネットへのすべてのトラフィックを拒否します。
手順の概要
このシナリオをデプロイするには、次の手順に従います。
Azure サブスクリプションにサインインします。
オンプレミス ネットワークを模倣するために仮想ネットワークをデプロイする場合は、
ONPREMRG
の一部であるリソースをデプロイします。AZURERG
の一部であるリソースをデプロイします。onpremvnet
からazurevnet
へのトンネルをデプロイします。すべてのリソースがプロビジョニングされたら、
onpremvm2
にサインインし、10.0.3.101 に ping を送信して、onpremsn2
とazsn3
間の接続をテストします。