Mit Cloud DNS arbeiten

Auf dieser Seite wird erläutert, wie Sie die DNS-Einstellungen für eine Domain mithilfe von Cloud DNS und Cloud Tools for PowerShell konfigurieren. Sie werden Schritt für Schritt durch ein einfaches Beispiel geführt, in dem für die Verwaltung einer Domain und deren Subdomains eine verwaltete Zone erstellt wird. Anschließend werden der Zone Ressourceneinträge hinzugefügt. Darin ist angegeben, wie sich der DNS-Server bei der Verwaltung von Anfragen in der Domain verhalten soll.

In diesem Dokument wird vorausgesetzt, dass Sie einen Domainnamen und eine IP-Adresse haben, auf die Sie den Domainnamen verweisen können. Andernfalls können Sie einen Domainnamen über Google Domains oder einen anderen Domain-Registrator Ihrer Wahl anmelden.

Lesen Sie die Cmdlet-Referenz für Cloud Tools for PowerShell, um mehr über Cloud DNS-Cmdlets zu erfahren. Allgemeine Informationen zu Cloud DNS finden Sie in der Übersicht über Cloud DNS.

Eine verwaltete Zone für Ihre Domain erstellen

Der gesamte DNS-Namespace ist aus mehreren Domains zusammengesetzt, zu der Ihre eigene Domain auch bald gehören wird. Verwaltete Zonen in Cloud DNS modellieren DNS-Zonen und dienen als Container, um DNS-Einträge (wie A-, CNAME- oder TXT-Einträge) mit dem gleichen DNS-Namenssuffix zu organisieren. Zum Beispiel könnten sich die Einträge für "example.com." und Subdomains wie "first.example.com." in der gleichen Zone befinden, da sie dasselbe Suffix "example.com." haben. Beachten Sie den abschließenden Punkt, der notwendig ist und das Ende eines DNS-Namens anzeigt.

Richten Sie zuerst eine verwaltete Zone ein, um die DNS-Einträge zu verwalten, die Sie für Ihren Domainnamen erstellen. Sie können eine neue verwaltete Zone erstellen und mit dem Cmdlet Add-GcdManagedZone dem Konsolenprojekt hinzufügen:

Add-GcdManagedZone `
    -Name "my-new-zone" `
    -DnsName "example.com." `
    -Description "This is my first zone."

Dadurch wird eine neue Zone mit den angegebenen Details erstellt und dem aktuellen Projekt der aktiven gcloud-Befehlszeile hinzugefügt. Sie können jedoch auch eine andere Projekt-ID angeben. In diesem Fall werden zusätzlich NS- und SOA-Standardeinträge für Sie in der Zone erstellt.

Damit Ihre neuen Einträge in der Zone jedoch im Internet veröffentlicht werden können, müssen Sie auch die Nameserver Ihrer Domain so aktualisieren, dass Cloud DNS verwendet wird. Auch wenn Ihre Domain bei Google Domains registriert ist, müssen Sie die Nameserver aktualisieren.

Welche Cloud DNS-Nameserver Ihrer Domain zugewiesen sind, können Sie mit dem Cmdlet Get-GcdManagedZone ermitteln. Führen Sie es in der verwalteten Zone aus, die für die Domain zuständig ist, um Informationen zur Zone abzurufen:

Get-GcdManagedZone -Zone "my-new-zone"

Ressourceneinträge hinzufügen und entfernen

DNS-Ressourceneinträge bieten Informationen, die das Verhalten des DNS-Servers bei der Verwaltung von Anfragen an eine Domain bestimmen. DNS-Einträge können zum Beispiel genutzt werden, um dem Server die IP-Adresse mitzuteilen, auf die eine Domain auflöst. Außerdem können Sie damit die nutzbaren Mail-Exchange-Server für eine Domain aufrufen und vieles mehr.

In Cloud DNS können Sie DNS-Einträge einer Zone hinzufügen oder daraus entfernen, um dieses Verhalten zu konfigurieren. Wenn Sie unveränderliche Ressourceneinträge hinzufügen oder entfernen möchten, ändern Sie die Einträge in einer Zone nicht direkt. Stattdessen erstellen Sie mit den Cmdlets New-GcdResourceRecordSet und Get-GcdResourceRecordSet unabhängige Ressourcendatensätze oder rufen diese ab und senden dann mithilfe des Add-GcdChange-Cmdlets Änderungsanforderungen mit diesen Datensätzen an eine bestimmte Zone.

Ressourceneinträge erstellen

Sie können das Hilfs-Cmdlet New-GcdResourceRecordSet verwenden, um einen Ressourcendatensatz zu erstellen, den Sie zu einer Änderung hinzufügen und dann zu einer verwalteten Zone hinzufügen oder löschen können.

Wenn Sie beispielsweise einen A-Eintrag erstellen möchten, durch den Ihre Domain auf eine externe IPv4-Adresse im Format #.#.#.# zu verweisen (wenn Sie eine IPv6-Adresse haben, verwenden Sie einen AAAA-Eintrag), können Sie den folgenden Befehl verwenden:

$ARecord = New-GcdResourceRecordSet `
    -Name "example.com." -Rrdata "107.1.23.134" -Type "A"

Sie können auch einen CNAME-Eintrag für die Subdomain www erstellen, damit "www.example.com." auf die gleiche IP-Adresse auflöst und sich genauso wie "example.com." verhält. Verwenden Sie hierfür folgenden Befehl:

$CNAMERecord = New-GcdResourceRecordSet `
    -Name "www.example.com." -Rrdata "example.com." -Type "CNAME"

Die unterstützten Ressourceneintragstypen, die Sie erstellen und in Änderungen an einer Zone einfügen können, sind A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SPF, SRV und TXT. Informationen dazu, welche Einträge Sie benötigen und wie Sie sie erstellen, finden Sie unter Unterstützte Ressourceneintragsformate für Cloud DNS.

Ressourceneinträge abrufen

Sie können mit dem Cmdlet Get-GcdResourceRecordSet einen in einer Zone vorhandenen Ressourceneintrag abrufen. Es gibt alle Einträge in der jeweiligen Zone zurück und indexiert dann die Ergebnisse:

$allRecords = Get-GcdResourceRecordSet -Zone "my-new-zone"
$record0 = $allRecords[0]

Wenn Sie nur Einträge eines bestimmten Typs abrufen möchten, können Sie die Ergebnisse entsprechend filtern:

$ARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A"

Änderungen in einer verwalteten Zone vornehmen

Die Cmdlets New-GcdResourceRecordSet und Get-GcdResourceRecordSet geben beide Ressourceneinträge zurück, fügen aber keine Einträge hinzu und löschen sie nicht. Verwenden Sie dazu das Cmdlet Add-GcdChange:

Add-GcdChange `
    -Zone "my-new-zone" -Add $record1,$record2 -Remove $record0

Wenn Sie beispielsweise die oben erstellten A- und CNAME-Einträge unserer Zone hinzufügen möchten, geben Sie Folgendes ein:

Add-GcdChange -Zone "my-new-zone" -Add $ARecord,$CNAMERecord

Wenn Sie später die IPv4-Adresse ändern möchten, zu der Ihre Domain auflöst, können Sie einen neuen Eintrag vom Typ A erstellen und zur verwalteten Zone hinzufügen, während Sie den alten A-Eintrag löschen:

$oldARecord = Get-GcdResourceRecordSet -Zone "my-new-zone" -Filter "A"
$newARecord = New-GcdResourceRecordSet `
    -Name "example.com." -Rrdata "104.1.34.167" -Type "A"
Add-GcdChange -Zone "my-new-zone" -Remove $oldARecord -Add $newARecord

Bei jedem Aufruf des Add-GcdChange-Cmdlets wird das neu ausgeführte Change Request-Objekt zurückgegeben. Sie können auch das Cmdlet Add-GcdChange an ein Änderungsanfrageobjekt übergeben, das direkt ausgeführt werden soll, anstatt Listen von Ressourceneinträgen zu erstellen:

Add-GcdChange -Zone "my-new-zone" -ChangeRequest $change0

Generell wird davon abgeraten, Änderungsanfrageobjekte manuell zu erstellen. Es kann aber nützlich sein, wenn Sie eine früher oder in einer anderen Zone vorgenommene Änderung wieder anwenden möchten. Sie können mit dem Cmdlet Get-GcdChange alle bisher auf eine Zone angewendeten Änderungsanfrageobjekte abrufen:

$allChanges = Get-GcdChange -Zone "my-new-zone"

Sie können eine bestimmte Änderung auswählen, indem Sie das vorherige Ergebnis indexieren oder mit einer ChangeID angeben, welche Änderung abgerufen werden soll. Änderungsanfragen werden normalerweise von 0 an in der Reihenfolge nummeriert, in der sie an die Zone gesendet wurden:

$firstChange = Get-GcdChange -Zone "my-new-zone" -ChangeId 0
Add-GcdChange -Zone "my-new-zone" -ChangeRequest $firstChange

Verwaltete Zonen löschen

Manchmal möchten Sie eine verwaltete Zone vielleicht komplett löschen. Dies kann verschiedene Gründe haben. Vielleicht haben Sie die Zone "user1-zone" für die Subdomain "user1.example.com." verwaltet, aber user1 hat sein Konto gelöscht. In dem Fall sollten Sie die Subdomain und alle damit verknüpften DNS-Einträge löschen.

Verwenden Sie zum Entfernen einer verwalteten Zone aus Ihrem Projekt das Cmdlet Remove-GcdManagedZone:

Remove-GcdManagedZone -Zone "user1-zone"

Falls erfolgreich, wird der Befehl nichts zurückgeben.

Allerdings funktioniert dieses Cmdlet nicht sofort bei "nicht leeren" verwalteten Zonen in Cloud DNS oder bei Zonen, deren Einträge nicht vom Typ NS oder SOA und somit keine Standardeinträge sind. Sie können zum Beispiel "my-new-zone", der Sie A- und CNAME-Einträge hinzugefügt haben, nicht löschen, ohne dass Sie dem Cmdlet während der Bearbeitung die Berechtigung dazu geben oder den Switch -Force verwenden:

Remove-GcdManagedZone -Zone "my-new-zone" -Force

Das Cmdlet Remove-GcdManagedZone akzeptiert auch Pipeline-Eingaben für die zu löschenden Zonen. Mit dem folgenden Befehl wird beispielsweise das Löschen aller verwalteten Zonen im aktuellen Projekt erzwungen. Dies kann hilfreich sein, wenn Sie keine der in einem Projekt eingerichteten Domains mehr nutzen:

Get-GcdManagedZone | Remove-GcdManagedZone -Force