Freigeben über


Fallback zum Internet für private Azure-DNS-Zonen

In diesem Artikel wird erläutert, wie Sie die ResolutionPolicy-Eigenschaft in privatem Azure-DNS festlegen, um das Fallback zur Internetrekursion zu aktivieren, wenn eine autoritative NXDOMAIN-Antwort für eine Private Link-Zone empfangen wird. NXDOMAIN ist auch als negative Antwort bekannt. Wenn ein DNS-Resolver eine negative Antwort empfängt (oder zwischengespeichert hat), sendet er keine DNS-Antwort an den DNS-Client, und die Abfrage schlägt fehl.

Problem

Private DNS-Abfragen für Azure Private Link- und Netzwerkisolationsszenarien mit verschiedenen Mandanten und Ressourcengruppen weisen eindeutige Namensauflösungspfade auf. Dies kann sich auf die Fähigkeit auswirken, Private Link-fähige Ressourcen außerhalb des Kontrolle eines Mandanten zu erreichen. VM-basierte Problemumgehungen sind vorhanden, um dieses Problem zu beheben, aber diese Lösungen erhöhen die Komplexität und sind mit Sicherheitsrisiken und höheren Kosten verbunden.

Lösung

Die Eigenschaft ResolutionPolicy in privatem Azure-DNS ist eine vollständig verwaltete native Lösung. Diese Eigenschaft ermöglicht die öffentliche Rekursion über die Flotte von rekursiven Resolvern von Azure, wenn eine autoritative NXDOMAIN-Antwort für eine Private Link-Zone empfangen wird und die private Adresse nicht aufgelöst werden kann. Die Auflösungsrichtlinie wird auf Ebene der virtuellen Netzwerkverknüpfung mit der Einstellung NxDomainRedirect aktiviert. Im Azure-Portal wird NxDomainRedirect- aktiviert, indem Fallback zum Internet aktivieren in der Konfiguration für virtuelle Netzwerkverknüpfungen ausgewählt wird.

Richtliniendefinition

Die ResolutionPolicy-Eigenschaft ist in API Version 2024-06-01 oder höher verfügbar. Im folgenden Beispiel wird resolutionPolicy auf virtualNetworkLinks-Ressourcenebene auf NxDomainRedirect festgelegt:

{
  "id": "'string'",
  "name": '"string'",
  "type": "Microsoft.Network/privateDnsZones/virtualNetworkLinks",
  "location": "global",
  "properties": {
    "provisioningState": "Succeeded",
    "registrationEnabled": bool,
    "resolutionPolicy": "NxDomainRedirect",
    "virtualNetwork": {
      "id": "'string'"
    }
  }
}

Diese Einstellung ist im Azure-Portal unter Private DNS-Zonen>VNet-Verknüpfungen>Fallback zum Internet aktivieren verfügbar.

Funktionsweise

Eine NXDOMAIN (RCODE3)-Antwort bedeutet, dass der abgefragte Domänenname (Private Link) nicht vorhanden ist. Diese negative Antwort verhindert in der Regel, dass Resolver die Abfrage wiederholen, bis die zwischengespeicherte negative Antwort abläuft.

Wenn die NxDomainRedirect-Auflösungsrichtlinie für eine virtuelle Netzwerkverknüpfung aktiviert ist, wiederholt der rekursive Azure-Resolver die Abfrage. Der Resolver verwendet den öffentlichen Endpunkt QNAME als Abfragebezeichnung jedes Mal, wenn eine NXDOMAIN-Antwort von PrivateEdge für diesen privaten Zonenbereich empfangen wird.

Diese Änderung ist in der CNAME-Kettenauflösung sichtbar.

C:\>nslookup remoteprivateendpoint.blob.core.windows.net
Server:  UnKnown
Address:  168.63.129.16

Non-authoritative answer:
Name:    blob.mwh20prdstr02e.store.core.windows.net
Address:  203.0.113.33
Aliases:  remoteprivateendpoint.blob.core.windows.net
          remoteprivateendpoint.privatelink.blob.core.windows.net

Begrenzungen

  • Diese Richtlinie ist nur für private DNS-Zonen verfügbar, die Private Link-Ressourcen zugeordnet sind.
  • Der ResolutionPolicy-Parameter akzeptiert nur Default oder NxDomainRedirect als mögliche Werte.

Veranschaulichen der Auflösung für das Fallback zum Internet

Das folgende Beispiel zeigt, wie das Fallback zur Internetauflösung für eine Private Link-Zone (z. B. privatelink.blob.core.windows.net) aktiviert wird.

Voraussetzungen

  • Mindestens zwei Ressourcengruppen: jeweils mit einem virtuellen Netzwerk und einem privaten Endpunkt.
    • Die Ressourcengruppen können sich in verschiedenen Regionen oder in derselben Region befinden.
    • Speicherkonten werden in diesem Beispiel mit privaten Endpunkten verwendet, andere PaaS-Dienste können jedoch verknüpft werden.
  • Zum Ausführen von DNS-Abfragen ist mindestens ein virtueller Computer in einem der virtuellen Netzwerke erforderlich.
    • Das virtuelle Netzwerk, in dem sich der virtuelle Computer befindet, sollte mit einer der Private Link-Zonen verknüpft sein.

In diesem Leitfaden wird davon ausgegangen, dass Sie die erforderlichen Ressourcen bereitgestellt haben, bevor Sie fortfahren. Weitere Informationen finden Sie unter Verwenden von privaten Azure-Endpunkten.

Prüfen von privaten DNS-Zonen

  1. Suchen Sie auf der Startseite des Azure-Portals nach Private DNS-Zonen, und wählen Sie die Option aus.

  2. Überprüfen Sie die Liste der Namen, und stellen Sie sicher, dass mindestens zwei private DNS-Zonen denselben Namen haben (privatelink.blob.core.windows.net). Siehe folgendes Beispiel:

    Screenshot der Liste von privaten DNS-Zonen.

  3. Wählen Sie die Private Link-Zonen und dann Recordsets aus.

  4. Stellen Sie sicher, dass Datensätze für Speicherkonten in jeder privaten Zone vorhanden sind.

    Hinweis

    Speicherkonten, die sich in derselben Ressourcengruppe befinden, weisen Ressourceneinträge in derselben privaten DNS-Zone auf.
    Speicherkonten, die sich in verschiedenen Ressourcengruppen befinden, weisen Ressourceneinträge in unterschiedlichen (identisch benannten) privaten DNS-Zonen auf.

Demonstrieren von Fehlern bei der DNS-Auflösung

  1. Notieren Sie den vollqualifizierten Domänennamen (FQDN) und die IP-Adresse für ein Speicherkonto in der ersten angezeigten Private Link-Zone (z. B. myeaststorageacct1.privatelink.blob.core.windows.net, 10.40.40.5).

  2. Notieren Sie außerdem den FQDN und die IP-Adresse für eine andere private DNS-Zone mit demselben Namen (z. B. myeaststorageacct2.privatelink.blob.core.windows.net, 10.10.10.5).

    • Mindestens eine dieser privaten DNS-Zonen muss über eine virtuelle Netzwerkverknüpfung mit dem VNet verfügen, in dem Sie Abfragen von einem virtuellen Computer ausführen können.
  3. Öffnen Sie eine Eingabeaufforderung auf Ihrem virtuellen Azure-Computer, und versuchen Sie, den FQDN beider Speicherkonten aufzulösen. Siehe folgendes Beispiel:

    C:\>dig myeaststorageacct1.privatelink.blob.core.windows.net +short
    10.40.40.5
    
    C:\>dig myeaststorageacct2.privatelink.blob.core.windows.net +short
    
    
  4. Beachten Sie, dass ein Speicherkonto aufgelöst wird und das andere Speicherkonto nicht aufgelöst wird.

Konfigurieren des Fallbacks zur Internetauflösung

  1. Wählen Sie die privaten DNS-Zonen erneut aus, wählen Sie VNet-Verknüpfungen aus, und wählen Sie dann das Stiftsymbol zum Bearbeiten aus. Siehe folgendes Beispiel:

    Screenshot zum Bearbeiten der virtuellen Netzwerkverknüpfung.

  2. Wählen Sie unten auf der Seite Fallback zum Internet aktivieren und dann Speichern aus.

    Screenshot zum Aktivieren des Fallbacks.

  3. Wiederholen Sie diese Schritte für jede Private Link-Zone. Das Aktualisieren der virtuellen Netzwerkverknüpfungen kann einige Zeit dauern.

  4. Versuchen Sie erneut, den FQDN der Speicherkonten aufzulösen. Siehe folgendes Beispiel:

    C:\>dig myeaststorageacct1.privatelink.blob.core.windows.net +short
    10.40.40.5
    
    C:\>dig myeaststorageacct2.privatelink.blob.core.windows.net +short
    blob.bl5prdstr19c.store.core.windows.net.
    203.0.113.161
    

    Das Speicherkonto, das nicht aufgelöst wurde, wird jetzt erfolgreich über das Internet aufgelöst, sodass Sie diese Private Link-fähige Ressource erreichen können.

Sie können Azure Resource Graph Explorer oder die Azure CLI verwenden, um Fallback-fähige virtuelle Netzwerkverknüpfungen abzufragen. Hierzu folgende Beispiele:

resources
| where tostring(properties.resolutionPolicy) contains 'NxDomainRedirect'
| extend privateDnsZone = extract("/privateDnsZones/([^/]+)/", 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy

Screenshot einer Resource Graph-Abfrage.

Eingabe:

az graph query -q "resources
| where tostring(properties.resolutionPolicy) contains 'NxDomainRedirect'
| extend privateDnsZone = extract('/privateDnsZones/([^/]+)/', 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy"

Ausgabe:

{
  "count": 4,
  "data": [
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "myresourcegroup"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "mywestrg2"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "mywestrg"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "myeastrg"
    }
  ],
  "skip_token": null,
  "total_records": 4
}

Um die Auflösungsrichtlinienwerte für alle Private Link-aktivierten Zonen anzuzeigen, können Sie die folgenden Azure Resource Graph-Explorer- und Azure CLI-Abfragen verwenden:

resources
| where tostring(properties) contains 'resolutionPolicy'
| extend privateDnsZone = extract("/privateDnsZones/([^/]+)/", 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy

Eingabe:

az graph query -q "resources
| where tostring(properties) contains 'resolutionPolicy'
| extend privateDnsZone = extract('/privateDnsZones/([^/]+)/', 1, id)
| project privateDnsZone, resourceGroup, properties.resolutionPolicy"

In der folgenden Azure CLI-Beispielausgabe ist eine der Private Link-fähigen Zonen auf Standard (Fallback deaktiviert) festgelegt, um zu veranschaulichen, wie dies angezeigt wird.

Ausgabe:

{
  "count": 4,
  "data": [
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "Default",
      "resourceGroup": "mywestrg"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "myresourcegroup"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "mywestrg2"
    },
    {
      "privateDnsZone": "privatelink.blob.core.windows.net",
      "properties_resolutionPolicy": "NxDomainRedirect",
      "resourceGroup": "myeastrg"
    }
  ],
  "skip_token": null,
  "total_records": 4
}

Nächste Schritte