この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
はじめに
本記事ではAzureFirewallのDNAT規則を使用して、AzureFirewall経由でAzureVM上に構築したWebサーバー(IIS)に接続する方法について記載したいと思います。
前提条件
本記事においては以下を前提とします。
・以下Azureリソースが作成済みであること
・Webサーバとして使用するAzureVM
・Azure仮想ネットワーク
・AzureFirewallSubnet
・AzureFirewall
・Webサーバへの接続に使用する適当なドメインが存在すること。
※本記事ではお名前.comで調達したドメインを使用します。
構成概要
実現したい構成は概ね以下の通りです。上記記載の通り既にAzureVMやAzureFirewallといったリソースは存在する前提の説明を進めていきたいと思います。
手順概要
①DNSレコード登録
②DNAT規則の作成
③NSG規則の設定
詳細手順
①DNSレコードの登録
AzureFirewall経由でWebサーバに接続するので接続に使用するURLとAzureFirewallのパブリックIPアドレスを関連付ける必要が有ります。お名前.comなどのDNSレコード設定にて、AzureFirewallのパブリックIPアドレスの接続ドメイン名を対応させるAレコードを追加します。Webサーバを2台用意しそれぞれ別のドメインで接続させるのでAレコードも2つ追加します。
②DNAT規則の作成
AzureFirewallのFirewall Managerを開き、DNAT規則を作成します。今回はportの指定によって別々のWebサーバへ接続できることを確認したいので、それぞれ以下内容の規則を作成します。
③NSG規則の設定
AzureFirewall経由でWebサーバに接続するので、AzureFirewallのプライべートIPアドレスとWebサーバのプライベートIPアドレスが通信できるような規則がNSGに追加されていることが必要です。同じ仮想ネットワークに存在する場合は既定のNSG規則で充足されますが細かくNSGの規則を作成する場合には注意する必要が有ります。また、AzureFirewallのIPアドレス以外からWebサーバのプライベートIPアドレスへの通信は拒否するNSG規則も作成します。
動作確認
今回作成したDNAT規則を元にすると、2台のWebサーバについてそれぞれ以下のアドレスおよびポートで接続出来れば問題無く設定が完了していることになります。また、余計な経路から接続しないようにWebサーバのAzure仮想マシンにはパブリックIPアドレスリソースを関連付けないようにしておくと尚良いと思います。
1台目:http://<Webサーバ#1のドメイン名>:10000
2台目:http://<Webサーバ#2のドメイン名>:10001
※IISの既定のページではどちらのサーバに接続しているか区別がつかないので、動作確認においても何らかのサイトを用意してどちらのサーバに接続しているか区別できるようにしておくことをお勧めします。
まとめ
非常に簡易な構成ではありますがAzureFirewallのDNAT規則を用いた動作検証を実施することができました。Webサーバのフロントに置くAzureのリソースとしてはApplication GatewayやFrontDoorが一般的かもしれませんが、これらに比べて機能は制限されるもののAzureFirewallのDNATでも最低限のことは実現できることを確認することができました。すでにAzureFirewallが存在しかつコスト要件が厳しい場合の構成として採用の余地があるのではないでしょうか。