Azure FirewallのDNAT規則を使用した場合のNSG許可設定について

Azure FirewallでDNAT規則を利用した場合、NSGについても構成が必要になります。

その際、必要最低限の通信を透過するようなNSGの構成について、私が設定時に躓いたこともあり、備忘もかねて本記事を作成することにしました。

Azure FirewallのDNAT通信制御

Azure Firewallの機能の一つとしてDNATでの制御があります。

DNATとは、簡単に説明すると、インターネットからの通信を内部アドレスに変換する機能です

この機能を使用すると、Virtual MachineにはパブリックIPを持たせることなく、インターネットからの通信を可能にできます。

私が躓いたAzure FirewallのDNATのポイント

Azure FirewallにはパブリックIPとプライベートIPが付与されます。

私はAzure Firewallに割り振ったポータル上から見えるプライベートIPのみNSGで許可すればいいと思っていました。ですが、その状態でTest-NetConnectionコマンドを使って対象サーバーに疎通確認をしても、通信ができませんでした。

Microsoftのドキュメントを探しても該当する情報がなかなか見つからなず、苦労しました。

Azure Firewallのインスタンス

Azure Firewallではスケーリングするためにインスタンスを別途作成します。ポータル上から見えるプライベートIPのほかに複数のアドレスを持ちます。

インスタンスは内部的に作成されるため、Portal 上などからインスタンスの IP アドレスを確認することができません。

このことが原因となり、通信ができない状態となっていました。

では何をNSGで許可すればいいのか

前提として、Azure FirewallでDNATされた通信は以下に変わります。

--------------
送信元 IP アドレス : Azure Firewall のインスタンスの IP アドレス
宛先 IP アドレス : NAT 先の IP アドレス
--------------

Azure Firewall のインスタンスの IP アドレスはAzure Firewallサブネットのアドレス帯から割り当てられますので、NSGではAzure Firewallサブネットのアドレス帯を[xxx.xxx.xxx.xxx/26]のようなプレフィックス表記やVirtual Networkタグで許可します。

前述の通り、Azure Firewallで内部的に作成されたインスタンスはサブネットの範囲からIPを付与されます。そのため、もしインスタンスが変わっても通信が可能な状態となります。

最後に

Azure FirewallのDNATについての記事はよく見かけますが、今回のようにNSGを交えたような記事は見つからなかったため、自分なりにまとめてみました。

参考になれば幸いです。

執筆担当者プロフィール
山本 浩之

山本 浩之(日本ビジネスシステムズ株式会社)

ハイブリッドクラウド本部所属 Azure IaaS、PaaSを中心とした業務に従事しています。

担当記事一覧