Azure Firewall での SNAT/DNAT について
はじめに
Azure Firewall では SNAT/DNAT を構成することが可能となります。利用されるシナリオとしては Private IP <--> Public IP
の変換が多いイメージですが、ふと Private IP <--> Private IP
での SNAT/DNAT は可能なのか?と思い動作確認をおこないました。その際の内容を共有させていただきます
Azure Firewall の概要については以下URLをご参照ください
Azure Firewall とは
検証内容
今回は Private IP <--> Public IP
と Private IP <--> Private IP
の両方のパターンでどのような動きになるか検証を実施しています。具体的には以下の4パターンとなります
- Private IP --> Public IP (SNAT)
- Public IP --> Private IP (DNAT)
- Private IP --> Private IP (SNAT)
- private IP --> Private IP (DNAT)
1. Private IP --> Public IP (SNAT)
Azure Firewall では公式 Docs に記載されている通り、パブリック IP アドレスへの全ての送信トラフィックに対して SNAT 機能が提供されます
Azure Firewall は、パブリック IP アドレスへのすべての送信トラフィックに対して SNAT 機能を提供します。
よって、1 の構成を取るために必要となる設定は以下の2つとなります
- UDR を作成し、デフォルトルートを Azure Firewall に向ける
- Azure Firewall にてインターネット向けの通信を許可する
構成図
通信のイメージ
手順
手順の詳細は以下の公式 Docs をご参照ください
1-1. UDR を作成し、デフォルトルートを Azure Firewall に向ける
1-1-1. UDRの作成
1-1-2. ルートテーブルの作成
1-1-3. サブネットへルートテーブルを関連付ける
1-1-4. 仮想マシンにて「有効なルート」を確認する
1-2. Azure Firewall にてインターネット向けの通信を許可する
1-2-1. ネットワーク規則の作成
Spoke1 --> Internet に対するHTTP/HTTPS(80,443)通信を許可するルールを作成する
1-2-2. 疎通確認
Spoke1VMにログインし、以下コマンドを実行する
( Azure Firewall のパブリック IP が表示されることを確認)
[cloudadmin@spoke1-centos-01 ~]$ curl inet-ip.info
4.216.27.102
※本環境の Azure Firewall のパブリック IP は以下の通り
2. Public IP --> Private IP (DNAT)
公式 Docs に記載されている通り、サブネットへのインバウンド インターネット トラフィックを変換し、フィルター処理するように Azure Firewall 宛先ネットワーク アドレス変換 (DNAT) ポリシーを構成することが可能です。なお、変換されたトラフィックを許可するルールは暗黙的に追加されるため、個別のネットワークルールを作成する必要はありません
よって、2 の構成を取るために必要となる設定は以下の1つとなります
UDR を作成し、デフォルトルートを Azure Firewall に向ける- Azure Firewall にて DNAT ルールを構成する
構成図
通信のイメージ
手順
手順の詳細は以下の公式 Docs をご参照ください
- ルート テーブルの作成、変更、削除
- チュートリアル: Azure portal で Azure Firewall DNAT ポリシーを使用してインバウンド インターネット トラフィックをフィルター処理する
また、ルール処理ロジック(どのルールから適用されるのか?)などについては以下の公式 Docs をご参照ください
2-1. UDR を作成し、デフォルトルートを Azure Firewall に向ける
パターン1 の手順を参照してください
→ DNAT の場合は UDR の作成は不要となります
2-2. Azure Firewall にて DNAT ルールを構成する
作成するルールは以下の通り
(項目についてはPortalでの作成時に表示される通りに記載。日本語翻訳が変な気がする・・・)
名前 | ソースの種類 | ソース | プロトコル | 宛先ポート | 宛先(ファイアウォールIPアドレス) | 翻訳されたタイプ | 翻訳されたアドレスまたはFQDN | 変換されたポート |
---|---|---|---|---|---|---|---|---|
SSH-SpokeVM1 | IPアドレス | * | TCP | 10022 | 4.216.27.102 | IPアドレス | 10.1.0.4 | 22 |
SSH-SpokeVM2 | IPアドレス | * | TCP | 20022 | 4.216.27.102 | IPアドレス | 10.2.0.4 | 22 |
2-2-1. DNAT 規則の作成
2-2-2. 接続確認
Spoke1VMへのSSHアクセス
Spoke2VMへのSSHアクセス
3. Private IP --> Private IP (SNAT)
パターン1 の構成方法とほぼ同一ですが、SNAT の動作ポリシーを変更し、プライベート IP アドレスへの通信に対しても SNAT を実施するよう Azure Firewall で設定を行う必要があります
詳細は Azure Firewall の SNAT プライベート IP アドレス範囲 をご参照ください
よって、3の構成を取るために必要となる設定は以下の3つとなります
- UDR を作成し、デフォルトルートを Azure Firewall に向ける
- Azure Firewall にてプライベートIP範囲 (SNAT) を設定する
- Azure Firewall にてオンプレミス向けの通信を許可する
構成図
通信のイメージ
手順
3-1. UDR を作成し、デフォルトルートを Azure Firewall に向ける
3-1-1. UDRの作成
3-1-2. ルートテーブルの作成
3-1-3. サブネットへルートテーブルを関連付ける
3-1-4. 仮想マシンにて「有効なルート」を確認する
3-2. Azure Firewall にてプライベートIP範囲 (SNAT) を設定する
3-3. Azure Firewall にてオンプレミス向けの通信を許可する
3-3-1. ネットワーク規則の作成
Spoke1/Spoke2 --> オンプレミス に対する ICMP 通信を許可するルールを作成する
3-3-2. 疎通確認
- Spoke1VM から OnpreVM に ping を実施する
- OnpreVM にて tcpdump を実施する (送信元 IP が Azure Firewall であることを確認)
4. private IP --> Private IP (DNAT)
実施内容は 2. Public IP --> Private IP (DNAT)
と同一となるため、4 の構成を取るために必要となる設定は以下の1つとなります
UDR を作成し、デフォルトルートを Azure Firewall に向ける- Azure Firewall にて DNAT ルールを構成する
※違いは、作成する DNAT ルールの宛先を Azure Firewall のプライベートIP にする点のみ
構成図
通信のイメージ
手順
4-1. UDR を作成し、デフォルトルートを Azure Firewall に向ける
パターン2 の手順(2-1)を参照してください
→ DNAT の場合は UDR の作成は不要となります
4-2. Azure Firewall にて DNAT ルールを構成する
4-2-1. DNAT 規則の作成
パターン2 の手順(2-2)を参照してください
作成するルールは以下の通り
名前 | ソースの種類 | ソース | プロトコル | 宛先ポート | 宛先(ファイアウォールIPアドレス) | 翻訳されたタイプ | 翻訳されたアドレスまたはFQDN | 変換されたポート |
---|---|---|---|---|---|---|---|---|
SSH-SpokeVM1 | IPアドレス | * | TCP | 10022 | 10.0.110.4 | IPアドレス | 10.1.0.4 | 22 |
SSH-SpokeVM2 | IPアドレス | * | TCP | 20022 | 10.0.110.4 | IPアドレス | 10.2.0.4 | 22 |
4-2-2. 接続確認
OnpreVM から Spoke1VM への SSH アクセス
OnpreVM から Spoke2VM への SSH アクセス
まとめ
今回は Azure Firewall にて SNAT と DNAT の動作確認を実施しました。あまり利用する機会は無いかもしれませんが Private IP <--> Private IP
での SNAT/DNAT についても構成可能であることを確認することができました。
本記事が Azure ネットワーク構成を検討している方に少しでも参考になれば幸いです
Appendix
公式Docs (Azure Firewall)
公式Docs (ルートテーブル)
Discussion
参考になりましたありがとうございます!