Verwalten von DNS-Zonen mithilfe der PowerShell

In diesem Artikel wird gezeigt, wie DNS-Zonen mithilfe von Azure PowerShell verwaltet werden. Sie können Ihre DNS-Zonen auch mithilfe der plattformübergreifenden Azure CLI oder über das Azure-Portal verwalten.

Dieses Handbuch befasst sich insbesondere mit öffentlichen DNS-Zonen. Informationen zur Verwendung von Azure PowerShell zum Verwalten von privaten Zonen in Azure DNS finden Sie unter Erste Schritte mit Azure DNS Private Zones mithilfe von Azure PowerShell.

Eine DNS-Zone wird zum Hosten der DNS-Einträge für eine bestimmte Domäne verwendet. Wenn Sie eine Domäne in Azure DNS hosten möchten, müssen Sie eine DNS-Zone für diesen Domänennamen erstellen. Jeder DNS-Eintrag für Ihre Domäne wird dann in dieser DNS-Zone erstellt.

Beispiel: Die Domäne „contoso.com“ kann eine Reihe von DNS-Einträgen wie „mail.contoso.com“ (für einen E-Mail-Server) und „www.contoso.com“ (für eine Website) enthalten.

Beim Erstellen einer DNS-Zone in Azure DNS gilt Folgendes:

  • Der Name der Zone muss innerhalb der Ressourcengruppe eindeutig sein. Außerdem darf die Zone noch nicht vorhanden sein. Andernfalls ist der Vorgang nicht erfolgreich.
  • Der gleiche Zonennamen kann in einer anderen Ressourcengruppe oder einem anderen Azure-Abonnement erneut verwendet werden.
  • Wenn mehrere Zonen den gleichen Namen haben, erhält jede Instanz eine andere Adresse für den Namenserver. Mit der Domänennamen-Registrierungsstelle kann nur ein Satz von Adressen konfiguriert werden.

Hinweis

Sie müssen keinen Domänennamen besitzen, um eine DNS-Zone mit diesem Domänennamen in Azure DNS zu erstellen. Sie müssen jedoch die Domäne besitzen, um die Azure DNS-Namenserver als korrekte Namenserver für den Domänennamen mit der Domänennamen-Registrierungsstelle zu konfigurieren.

Weitere Informationen finden Sie unter Delegieren einer Domäne an Azure DNS.

Einrichten des Azure PowerShell für Azure DNS

Vorbereitung

Wichtig

Die Verwendung dieser Azure-Funktion mit PowerShell erfordert, dass Sie das AzureRM-Modul installiert haben. Dies ist ein älteres Modul, das nur für Windows PowerShell 5.1 verfügbar ist und keine neuen Funktionen mehr erhält. Die Az- und AzureRM-Module sind nicht kompatibel, wenn sie für dieselben PowerShell-Versionen installiert werden. Wenn Sie beide Versionen benötigen:

  1. Deinstallieren Sie das Az-Modul über eine PowerShell 5.1-Sitzung.
  2. Deinstallieren Sie das AzureRM-Modul über eine PowerShell 5.1-Sitzung.
  3. Laden Sie mindestens PowerShell Core 6.x herunter, und installieren Sie die Anwendung.
  4. Installieren Sie das Az-Modul in einer PowerShell Core-Sitzung.

Vergewissern Sie sich vor Beginn der Konfiguration, dass Sie über Folgendes verfügen:

Anmelden bei Ihrem Azure-Konto

Öffnen Sie die PowerShell-Konsole, und stellen Sie eine Verbindung mit Ihrem Konto her. Weitere Informationen finden Sie unter Anmelden mit Azure PowerShell.

Connect-AzAccount

Auswählen des Abonnements

Überprüfen Sie die Abonnements für das Konto.

Get-AzSubscription

Wählen Sie aus, welches Azure-Abonnement Sie verwenden möchten.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Erstellen einer Ressourcengruppe

Azure Resource Manager erfordert, dass alle Ressourcengruppen einen Speicherort angeben. Dieser wird als Standardspeicherort für Ressourcen in dieser Ressourcengruppe verwendet. Da alle DNS-Ressourcen global und nicht regional sind, hat die Auswahl des Speicherorts für die Ressourcengruppe jedoch keine Auswirkungen auf Azure DNS.

Dieser Schritt kann übersprungen werden, wenn Sie eine vorhandene Ressourcengruppe verwenden.

New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"

Erstellen einer DNS-Zone

Eine DNS-Zone wird mit dem New-AzDnsZone -Cmdlet erstellt.

Im folgenden Beispiel wird in der Ressourcengruppe namens MyDNSResourceGroup eine DNS-Zone namens contoso.com erstellt:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Das folgende Beispiel zeigt, wie Sie eine DNS-Zone mit zwei Azure Resource Manager-Tags erstellen: project = demo und env = test:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Abrufen einer DNS-Zone

Verwenden Sie zum Abrufen einer DNS-Zone das Cmdlet Get-AzDnsZone. Dieser Vorgang gibt ein DNS-Zonenobjekt zurück, das einer vorhandenen Zone in Azure DNS entspricht. Das Objekt enthält Daten über die Zone (z.B. die Anzahl der Ressourceneintragssätze), jedoch nicht die Ressourceneintragssätze selbst (siehe Get-AzDnsRecordSet).

Get-AzDnsZone -Name contoso.com –ResourceGroupName MyDNSResourceGroup

Name                  : contoso.com
ResourceGroupName     : myresourcegroup
Etag                  : 00000003-0000-0000-8ec2-f4879750d201
Tags                  : {project, env}
NameServers           : {ns1-01.azure-dns.com., ns2-01.azure-dns.net., ns3-01.azure-dns.org.,
                        ns4-01.azure-dns.info.}
NumberOfRecordSets    : 2
MaxNumberOfRecordSets : 5000

Auflisten von DNS-Zonen

Durch Auslassen des Zonennamens in Get-AzDnsZone können Sie alle Zonen in einer Ressourcengruppe auflisten: Dieser Vorgang gibt ein Array von Zonenobjekten zurück.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Durch das Weglassen des Zonennamens und des Ressourcengruppennamens aus Get-AzDnsZone können Sie alle Zonen im Azure-Abonnement auflisten.

$zoneList = Get-AzDnsZone
$zoneList

Aktualisieren einer DNS-Zone

Änderungen an einer DNS-Zonenressource können mithilfe von Set-AzDnsZonevorgenommen werden. Durch dieses Cmdlet wird keine der DNS-Datensatzgruppen in der Zone aktualisiert (siehe Verwalten von DNS-Einträgen). Es wird nur verwendet, um Eigenschaften der Zonenressource selbst zu aktualisieren. Die schreibbaren Zoneneigenschaften sind derzeit auf die Azure Resource Manager-„Tags“ für die Zonenressource beschränkt.

Verwenden Sie eine der folgenden zwei Möglichkeiten, um eine DNS-Zone zu aktualisieren:

Angeben der Zone mithilfe des Zonennamens und der Ressourcengruppe

Mit diesem Ansatz werden die vorhandenen Zonen-Tags durch die angegebenen Werte ersetzt.

Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Angeben der Zone mithilfe eines $zone-Objekts

Mit diesem Ansatz werden das vorhandene Zonenobjekt abgerufen, die Tags geändert und dann ein Commit für die Änderungen ausgeführt. Auf diese Weise können vorhandene Tags beibehalten werden.

# Get the zone object
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

# Remove an existing tag
$zone.Tags.Remove("project")

# Add a new tag
$zone.Tags.Add("status","approved")

# Commit changes
Set-AzDnsZone -Zone $zone

Wenn Sie Set-AzDnsZone mit einem $zone-Objekt verwenden, werden ETag-Überprüfungen verwendet, um sicherzustellen, dass gleichzeitige Änderungen nicht überschrieben werden. Diese Überprüfungen können mithilfe des optionalen Switchs -Overwrite unterdrückt werden.

Löschen einer DNS-Zone

DNS-Zonen können mithilfe des Remove-AzDnsZone-Cmdlets gelöscht werden.

Hinweis

Durch das Löschen einer DNS-Zone werden auch alle DNS-Einträge in der Zone gelöscht. Dieser Vorgang kann nicht rückgängig gemacht werden. Wenn die DNS-Zone verwendet wird, tritt in Diensten, die die Zone verwenden, ein Fehler auf.

Informationen dazu, wie Sie Zonen vor versehentlichem Löschen schützen, finden Sie unter How to protect DNS zones and records (Schützen von DNS-Zonen und -Einträgen).

Verwenden Sie eine der beiden folgenden Möglichkeiten, um eine DNS-Zone zu entfernen:

Geben Sie die Zone mithilfe des Zonennamens und des Ressourcengruppennamens an.

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Angeben der Zone mithilfe eines $zone-Objekts

Sie können festlegen, dass die Zone mithilfe eines von Get-AzDnsZone zurückgegebenen $zone-Objekts gelöscht werden soll.

$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone

Das Zonenobjekt kann auch weitergeleitet werden, anstatt als Parameter übergeben zu werden:

Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone

Wie bei Set-AzDnsZone ermöglicht die Angabe der Zone mithilfe eines $zone-Objekts die ETag-Überprüfung, um sicherzustellen, dass gleichzeitige Änderungen nicht gelöscht werden. Verwenden Sie den -Overwrite-Switch, um diese Überprüfungen zu unterdrücken.

Bestätigungsaufforderungen

Die Cmdlets New-AzDnsZone, Set-AzDnsZone und Remove-AzDnsZone unterstützen jeweils Bestätigungsaufforderungen.

Sowohl New-AzDnsZone als auch Set-AzDnsZone fordern eine Bestätigung an, wenn die PowerShell-Einstellungsvariable $ConfirmPreference einen Wert von Medium oder weniger hat. Da das Löschen einer DNS-Zone potentiell ungewollte Bedingungen verursachen kann, fordert dasRemove-AzDnsZone Cmdlet zur Bestätigung auf, wenn die $ConfirmPreference PowerShell-Variable einen anderen Wert als None aufweist.

Da High der Standardwert für $ConfirmPreference ist, fordert nur Remove-AzDnsZone standardmäßig zur Bestätigung auf.

Die aktuelle Einstellung für $ConfirmPreference kann mithilfe des -Confirm-Parameters überschrieben werden. Bei Angabe von -Confirm oder -Confirm:$True fordert das Cmdlet vor der Ausführung eine Bestätigung an. Bei Angabe von -Confirm:$False fordert das Cmdlet keine Bestätigung an.

Weitere Informationen zu -Confirm und $ConfirmPreference finden Sie unter About Preference Variables (Informationen zu Einstellungsvariablen).

Nächste Schritte

Erfahren Sie, wie Sie Ressourceneintragssätze und Einträge in Ihrer DNS-Zone verwalten.
Erfahren Sie, wie Sie Ihre Domäne an Azure DNS delegieren.
Machen Sie sich mit der Azure DNS PowerShell-Referenzdokumentation vertraut.