はじめに
本記事ではAzure Firewall DNSプロキシを試します。
登場する単語 | 意味 |
---|---|
名前解決 | FQDN(例example.com)をIPアドレスに変換すること |
Azure Private Link | プライベートにAzureリソースへ接続できるサービス |
Azure プライベートDNS | プライベートIPアドレスで名前解決するためのDNSサービス |
なぜAzure Firewall DNSプロキシが必要なのか
例えば何かのサービスでPrivate Linkを使用することがあるかと思います。
Private Linkを使用する場合、同時にプライベートDNSを使用することになります。
プライベートDNSは通常、Azure内でのみ利用できます。
Learnの図のように通常はVNet内から名前解決をしています。
しかし、オンプレミス環境から接続する際にもこのプライベートDNSを使用したいケースがあります。オンプレミス環境からプライベートDNSへ名前解決をしたくとも応答してくれません。
そんな時に登場する解決策の一つがAzure Firewall DNSプロキシです。
今回はAzure Firewall DNSプロキシを使用して、オンプレミス環境から名前解決してみます。
構成図
クライアントPCのDNS設定をAzure Firewallにした状態で、プライベートDNSへ名前解決します。
以下の順に作成します。
- 閉域接続設定
- プライベートDNS作成
- Azure Firewall DNSプロキシの設定
閉域接続設定
クライアントPCからVNetへ通信できる環境であれば何でも大丈夫です。
ExpressRoute、VPNGateway(S2S、P2S)など
私はOpenVPNを使用してP2Sで接続しています↓
雑な記事で申し訳ないですが、VPNGatewayでP2Sする場合はこちら
- OpenVPNは少々複雑ですが、VMで起動停止が可能です
- VPNGatewayはMicrosoft純正品なのでお手軽です
プライベートDNS作成
1. プライベートDNS作成
2. Aレコード作成

3.VNetとリンク
Azure Firewall DNSプロキシの設定
こちらを参考に進めます。
VNetのDNSサーバーをカスタムにしてAzure FirewallのプライベートIPアドレスを指定しておきます。
Azure FirewallのDNS設定画面で以下のように設定します
DNS設定はAzure Firewallインスタンスの[設定] 画面に[DNS 設定] がない場合はAzure Firewallポリシーの設定画面を確認してみてください
閉域接続せずにnslookupしてみる
自宅PCからインターネット経由で名前解決してみます。
パブリックIPアドレスになってます。
プライベートDNSを使用できていません。
閉域接続
OpenVPN接続(P2S)をします。

接続したインターフェースの設定を見てみると、
既にDNSが以下のように設定されていました。

VNetのDNSサーバー設定を入れていると自動で反映されるようです。
nslookupしてみる
無事プライベートIPアドレスに名前解決されました
余談
Azure FirewallのDNS設定を以下のようにしてみます。
168.63.129.16の機能
168.63.129.16はAzure が提供しているDNS機能というイメージです。
Defaultでも168.63.129.16に向いているはずなので、Customでこういう風に指定してもうまくいくはず。
期待通りプライベートIPに名前解決されました!
補足(Private Linkを使用した場合)
Private Linkで作成したプライベートDNSを試した際の話です。
以下構成図でも試してみました。
通常はPrivate Endpointが作成されたVNet-Spoke-1とプライベートDNSがリンクされます。
しかし、VNet-HUBにはプライベートDNSがリンクされていません。
DNSプロキシを使用する場合はVNet(B)にもリンクしてあげる必要があります。
最後に
通常、プライベートDNSの名前解決をオンプレミスから実施できませんが、
Azure Firewall DNSプロキシを用いることで解決することができました。
あくまでAzure Firewallは解決策の一つの例です。他の方法が気になるかたは参考文献をご参照ください。
参考文献
◆Learn
DNS プロキシの構成
◆ブログ
今回以外の方法など、網羅的かつ丁寧に解説されておりおすすめです。
Azure Private Endpoint のための DNS 構成パターン