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 mithilfe des Cmdlets Add-GcdManagedZone Ihrem GCP Console-Projekt hinzufügen:

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

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

Wenn Sie aber Ihre neuen Einträge in der Zone im Internet veröffentlichen möchten, müssen Sie außerdem die Nameserver Ihrer Domain so aktualisieren, dass Cloud DNS verwendet wird. Die Aktualisierung dieser Nameserver ist auch erforderlich, wenn Ihre Domain bei Google Domains registriert ist.

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. Erstellen Sie stattdessen unabhängige Ressourceneinträge oder rufen Sie bestehende Ressourceneinträge mit den Cmdlets New-GcdResourceRecordSet und Get-GcdResourceRecordSet ab. Senden Sie anschließend mithilfe des Cmdlets Add-GcdChange Änderungsanforderungen mit diesen Einträgen an eine spezifische Zone.

Ressourceneinträge erstellen

Sie können das Hilfs-Cmdlet New-GcdResourceRecordSet verwenden, um einen Ressourceneintrag zu erstellen, den Sie einer Änderung hinzufügen und dann in 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 #.#.#.# verweist, können Sie den folgenden Befehl verwenden. Wenn Sie eine IPv6-Adresse haben, verwenden Sie einen AAAA-Eintrag:

$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 bei Zonenänderungen verwenden 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 diese erstellen, finden Sie im Abschnitt über 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. Dafür müssen Sie das Add-GcdChange-Cmdlet verwenden:

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

Jeder Aufruf für das Cmdlet Add-GcdChange gibt das neu ausgeführte Änderungsanfrageobjekt zurück. Sie können auch ein Änderungsanfrageobjekt an das Cmdlet Add-GcdChange übergeben, das direkt ausgeführt werden soll, anstatt Ressourceneinträge aufzulisten:

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"

Wenn der Vorgang erfolgreich war, gibt der Befehl nichts zurück.

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