💨

[Azure] Azure Firewall の Dnatポリシーを使ってFlexible Serverに接続をしてみた

2023/07/16に公開

きっかけ

業務の中で掲題の要件があった。
VMに接続するときは、Azure FirewallのIPを指定して接続した経験があったが、DBの時には何か差分があるかのかを実機を通して確認してみた。

手順

ベースは以下の手順で実施した。
https://learn.microsoft.com/ja-jp/azure/firewall/tutorial-firewall-dnat-policy

Flexible Serverの作成は手順外で実施。
パブリックIPを持たずに、Vnet統合を行うことだけ注意して後はデフォルトの設定。

接続検証

Poral上からCloudShellを起動して実行してみた。

  • IPでの接続
    Azure FirewallのパブリックIPアドレスを指定して、接続が可能であった。
psql -h <FirewallのパブリックIP> -p 5432 -U <管理者ユーザ> postgres(接続DB)

  • FQDNでの接続方法
    dnatのTranslate Typeを対象DBサーバのFQDNに変更する。

サーバ接続エラーが発生してしまった。

Azure FirewallがあるHubVnetに、プライベートDNSゾーンのリンクを張ることで名前解決が可能になり接続ができた。

なぜプライベートDNSゾーンのリンクを張る必要があったのか?

プライベートDNSゾーンは、リンク付けされたVnetからしか名前解決ができない。
名前解決の流れは以下の通りだが、AzureデフォルトのDNSに問合せをした際に名前解決ができない。そのため、リンクされたVnetからの問合せにて名前解決が可能になる。

https://www.cloudou.net/azure-dns/dns002/

https://learn.microsoft.com/ja-jp/azure/dns/private-dns-overview

結論

IPベースでの接続は可能である。
FQDNベースの接続も可能ではあるが、DNATルールを書き換えるだけでは名前解決ができないので注意が必要である。

Discussion