DNS-ontwerp¶
Naamresolutie bepaalt of verkeer naar een PaaS-service op het private netwerk blijft of over het internet gaat. Deze pagina legt het DNS-ontwerp van het platform uit en de valkuilen bij het koppelen aan een on-premises DNS. Voor de instellingen, zie feature flags (private DNS-zones, private DNS resolver).
Componenten¶
| Component | Rol |
|---|---|
| Spoke virtual network | Gebruikt een custom DNS-server: de hub-DNS-server van de eigen regio (de spoke-instelling dnsServerOverwrite is standaard leeg, zie Spoke JSON-referentie) |
| Hub DNS-ingang | Meestal de Azure Firewall die als DNS proxy optreedt. Die stuurt queries door naar de resolver. |
| Azure Private DNS Resolver | Inbound endpoint: ontvangt queries van de firewall en van on-premises. Outbound endpoint: stuurt queries voor geselecteerde domeinen (bijvoorbeeld een intern Active Directory-domein) door naar DNS-servers elders. |
| Centrale private DNS-zones | Eén zone per Private Link-service (bijvoorbeeld privatelink.blob.core.windows.net). Een Azure Policy initiative registreert de records van private endpoints daarin. |
| On-premises DNS | Domain controllers of andere DNS-servers. Ze beantwoorden de interne namespace en sturen Azure-namen met conditional forwarders door naar het inbound endpoint van de resolver. |
| Publieke DNS | Beheerd buiten het platform, door de registrar of DNS-provider |
Resolutiepaden¶
flowchart LR
vm["VM in a spoke"] --> fw["Hub firewall (DNS proxy)"]
fw --> in["Private DNS Resolver (inbound)"]
in --> pz["Central private DNS zones"]
out["Private DNS Resolver (outbound)"] -- "forwarding rule" --> ad["Internal DNS / AD servers"]
in --> out
onprem["On-premises client"] --> opdns["On-premises DNS"]
opdns -- "conditional forwarder" --> in
| Van | Naar | Pad |
|---|---|---|
| Spoke | Een naam in een private DNS-zone (private endpoint) | DNS-instelling van de spoke, firewall DNS proxy, inbound endpoint van de resolver, private DNS-zone |
| Spoke | Een intern domein dat on-premises of op domain controllers in Azure wordt gehost | Hetzelfde pad, waarna een forwarding rule op de resolver de query via het outbound endpoint naar buiten stuurt |
| On-premises | Het interne domein | Beantwoord door de on-premises DNS |
| On-premises | Een naam in een private DNS-zone van Azure | Een conditional forwarder op de on-premises DNS stuurt de query via de VPN- of ExpressRoute-verbinding naar het inbound endpoint van de resolver |
Hoe een naam van een private endpoint wordt opgelost¶
- Een resource in het virtual network zoekt
example.azurewebsites.netop. - De door Azure geleverde DNS (168.63.129.16) ziet dat Private Link is ingeschakeld voor de service en geeft een CNAME terug naar
example.privatelink.azurewebsites.net. - De private DNS-zone
privatelink.azurewebsites.netis gekoppeld aan het netwerk en bevat een A-record met het IP-adres van de private endpoint. - De resource maakt verbinding met dat private IP. Het verkeer blijft op de Azure-backbone.
Om on-premises clients het private IP te laten krijgen, moet hun DNS de query naar de resolver doorsturen. Zonder dat krijgen ze het publieke IP en gaat het verkeer over het internet.
Conditional forwarding inschakelen: doe het in de juiste volgorde¶
Het inschakelen van conditional forwarding verandert waar on-premises verkeer naartoe gaat. Bestaande workloads die een PaaS-service vandaag via het publieke adres bereiken, gaan het private IP-adres gebruiken. Als de firewalls dat niet toestaan, werken ze niet meer.
- Maak een lijst van de private DNS-zones die je gaat doorsturen. Maak per zone een conditional forwarder op de on-premises DNS-servers, die naar het inbound endpoint van de resolver wijst.
- Sta eerst het verkeer van on-premises naar de adressen van de private endpoints toe, in de on-premises firewall en in de Azure Firewall.
- Zorg dat elke locatie die de DNS-servers gebruikt private connectiviteit met Azure heeft. Een externe locatie of dochteronderneming zonder private link zou een privaat IP krijgen dat ze niet kan bereiken. Schakel forwarding voor die locaties in nadat de verbinding live is.
- Schakel de forwarders in, één zone tegelijk, en test.
Runbook voor het toevoegen van een forwardingregel: DNS conditional forwarder.
Valkuilen¶
| Valkuil | Wat er gebeurt | Wat te doen |
|---|---|---|
| Split DNS: dezelfde zone bestaat in de interne DNS en in de publieke DNS | Een record dat alleen in de publieke zone bestaat kan binnen het netwerk niet worden opgelost, omdat de interne DNS authoritative is voor de hele zone en name not found teruggeeft | Maak elk record op beide plekken aan, of host dezelfde zone niet op beide plekken |
| Handmatig recordbeheer | Traag, foutgevoelig en slechts enkele mensen kunnen het | Beheer records als code in een repository, of delegeer een subdomein aan de teams (DNS-subdomeindelegatie) |
| Onduidelijk eigenaarschap | Niemand weet wie eigenaar van een zone is | Noem zones naar de workload en omgeving |
Controleer tegen je configuratie
Deze pagina beschrijft het gebruikelijke ontwerp. Controleer welk adres de spokes als DNS-server gebruiken en of de DNS proxy van de firewall
is ingeschakeld in je platformconfiguratie (virtual_network_dns_servers, firewall_policy_dns.proxy_enabled).