Azure DNS Private Resolverを理解するための前提
DNS Private ResolverはVMベースDNS forwarderを置かず、Azure VNetとon-premises間のprivate DNS resolution/conditional forwardingを行うmanaged service。 inbound endpointはon-premises等からAzureへ入るDNS queryの宛先IP。linked Private DNS zoneを含むAzure DNS resolutionへ接続する。
outbound endpointはAzureからon-premises/other cloud/external DNSへqueryを出すため、DNS forwarding rulesetと関連付ける。outbound endpoint自体はinboundのようなquery先VIPではない。 rulesetをVNetへlinkすると、そのVNetがAzure-provided DNSを使ったままsuffix別forwarding ruleを利用できる。resolver VNetとのpeeringはruleset linkの必須条件ではない。
inbound/outbound endpointはそれぞれdedicated subnetが必要で、Microsoft.Network/dnsResolversへdelegationする。current guidanceは/28〜/24を許容し、各endpointでsubnetを共有しない。 2026-06-22更新の公式overviewでは1 endpointあたり10,000 QPS、resolverあたりinbound/outbound各5、rulesetあたり1,000 rules/500 VNet links等のcurrent limitsが記載される。
Control plane / DNS plane / Data plane
outside/other network → Azure DNS。conditional forwarderのtargetとしてprivate IPを持つ。
Azure resolver → external DNS。rulesetがmatchしたqueryをtarget DNS serversへegressさせる。
どのsuffixをどこへforwardするか、どのVNetがそのpolicyを利用するかを定義する。
Query / packet path
- VNet clientがDefault Azure-provided DNSへqueryする。
- linked Private DNS zoneにmatchすればzoneをresolveする。
- matchしなければlinked forwarding rulesetsを評価する。
- suffix matchが複数ならlongest suffixを使う。
- matching ruleがあればoutbound endpoint経由でtarget DNS serverへ送る。
- ruleがなければAzure DNSが通常resolutionを行う。
- on-prem→Azure private zoneはon-prem conditional forwarderからinbound endpoint IPへ送り、Azure DNS/linked zoneで解決する。
仕組みを分解する
Private Resolverで「inbound」と「outbound」をclient位置で覚えると混乱します。Azure serviceから見たqueryの方向で考えます。Azureへqueryを受け入れるprivate IPがinbound、Azureから外部resolverへqueryを出す出口がoutboundです。spoke VNetがruleset linkを使うdistributed modelではVM DNS settingを変更せず、Azure-provided DNSがrulesetを評価します。centralized modelではspokeのcustom DNSにhub inbound IPを指定し、全DNS queryをhubへ集約します。
設計判断
| 判断軸 | 設計方針 |
|---|---|
| Topology choice | distributed ruleset-linkかcentralized custom-DNSかを選び、同一suffixで二重経路を作らない。 |
| Subnet/IP plan | inbound/outboundを別dedicated subnetにし、/28以上を確保。将来endpoint増加とIPAMを考慮する。 |
| Scale | QPS、rules、links、endpoint数をcurrent limitsと照合し、region単位failure/traffic volumeを計測する。 |
| Unsupported combinations | VNet encryption、IPv6-enabled endpoint subnet、ExpressRoute FastPath等のcurrent restrictionsをdeployment前に確認する。 |
確認手順
Read-only verification
- resolver/VNet region、endpoint subnet delegation、inbound IP、outbound/ruleset associationを取得する。
- Azure→on-premとon-prem→Azureの両方向で別FQDNをqueryし、片方向成功を「hybrid DNS正常」としない。
- rulesetはdomainName/target IP:port/state/VNet linkを確認し、longest-suffix matchを想定したtest nameを使う。
- UDP/TCP 53のnetwork reachability、QPS/latency、upstream resolver responseを障害時のevidenceとして残す。
Evidence to keep
- resource ID / subscription / region / VNet / subnetを固定し、同名resource取り違えを防ぐ。
- DNS queryはresolver IP、query name、answer/CNAME、TTL、timestampを一緒に保存する。
- network testはsource、resolved destination IP、protocol/port、winning route/security decisionを保存する。
- 変更前後で同じquery/application journeyを再実行し、cache/既存sessionでの見かけ上成功を避ける。
az dns-resolver list -g <rg> -o table
az dns-resolver inbound-endpoint list -g <rg> --dns-resolver-name <resolver> -o jsonc
az dns-resolver outbound-endpoint list -g <rg> --dns-resolver-name <resolver> -o jsonc
az dns-resolver forwarding-ruleset list -g <rg> -o table
az dns-resolver forwarding-rule list -g <rg> --ruleset-name <ruleset> -o tableGet-AzDnsResolver -ResourceGroupName <rg>
Get-AzDnsResolverInboundEndpoint -ResourceGroupName <rg> -DnsResolverName <resolver>
Get-AzDnsResolverOutboundEndpoint -ResourceGroupName <rg> -DnsResolverName <resolver>
Get-AzDnsForwardingRuleset -ResourceGroupName <rg>
障害切り分け
| 症状 | 第一候補 | 証拠 | 次の確認 |
|---|---|---|---|
| on-prem→Azure timeout | inbound IP route/53 blocked | conditional forwarder target + route/NSG/firewall | inbound reachability修正 |
| Azure→on-prem public/NXDOMAIN | ruleset link/rule mismatch | VNet link + suffix + target | rule/link修正 |
| 一部domainだけ別resolverへ行く | longest suffix rule | ruleset全rule比較 | よりspecificなruleを確認 |
| query loop/SERVFAIL | inbound宛forward ruleをsame hubへlink | query path/ruleset | loopを作るlink/rule除去 |
| 高負荷でsporadic failure | endpoint QPS/target DNS capacity | metrics + query rate | scale/failover design見直し |
変更時の確認と rollback
- endpoint/ruleset変更前にresource JSON、inbound IP、VNet links、rulesをexportする。
- inbound endpointを再作成するとforwarder targetへの影響があるため、IP lifecycleとon-prem config更新順序を設計する。
- outbound endpoint削除にはruleset/link依存があるため、dependencyを確認して逆順に戻す。
- rollback後はAzure→on-prem/on-prem→Azureの両方向queryを再実行する。
Current notes — 2026-09-11
Microsoft Learnの2026-06-22更新overviewではPrivate Resolverのcurrent limitsとrestrictionsが明確化されています。特にendpoint dedicated subnet、same-region VNet、VNet encryption非対応、ExpressRoute FastPath非対応を古い設計資料から更新します。