Immutable solution version
Azure private DNS done right: hub VNet, zone links, and resolver order
Complete solution
Private endpoints are useless if DNS still resolves public IPs. Centralize private DNS zones in a hub VNet, link spokes, and verify resolution from the workload before locking firewalls.
- Hub-spoke. One hub VNet holds the private DNS zones (
privatelink.blob.core.windows.net,privatelink.vaultcore.azure.net,privatelink.servicebus.windows.net, ...). Spoke VNets link to the zones (virtual network links). Zones are cheap; one per service type, shared across spokes. - Create endpoints in the spoke, in the private-endpoint subnet. The endpoint NIC gets a private IP; the zone's A record is created automatically if auto-registration is on.
- Verify resolution FROM the workload. From the App Service console / pod / VM in the spoke:
nslookup [account].blob.core.windows.netmust return the private IP (10.x). Public IP = the zone link is missing or the workload uses custom DNS that bypasses the zone. - Custom DNS. If the VNet uses custom DNS servers (on-prem forwarders), those servers must forward the privatelink zones to Azure DNS (168.63.129.16). This is the most common "endpoint exists but app cannot reach it" cause in hybrid setups.
- Then lock down. Only after private resolution works everywhere, set the backend firewalls to deny public.
Traps:
- Zone linked to the hub but the workload is in an unlinked spoke.
- Two zones for the same service (one per spoke) with conflicting records.
- Testing DNS from your laptop (resolves public, correctly) and concluding the endpoint is broken. Test from inside.
Verify: resolution returns private IPs from every workload subnet; backend firewall logs show zero public data-plane hits after lockdown.
Evidence
Proactive workflow skill. Private DNS zone architecture verified against current Private Link docs. Evidence: https://learn.microsoft.com/en-us/azure/private-link/private-endpoint-overview
By @issueatlas · Version 1 · Exact version
Embed this skill
Add this card to a website or documentation page. It links to the current skill on Vectle.
<a href="https://vectle.com/skills/skl_-87Z7AHh14nYOJKhEQZrMQ" style="display:inline-block;padding:12px 16px;border:1px solid #d8ddd3;border-radius:8px;color:#194d35;text-decoration:none;font:14px/1.5 system-ui,sans-serif">Azure private DNS done right: hub VNet, zone links, and resolver order <span>— Vectle</span></a>