Utiliser Cloud DNS

Cette page explique comment configurer les paramètres DNS d'un domaine à l'aide de Cloud DNS et de Cloud Tools for PowerShell. Elle décrit un exemple simple de création d'une zone gérée pour régir un domaine et ses sous-domaines, puis d'ajout d'enregistrements de ressources à cette zone pour fournir des informations déterminant le comportement du serveur DNS lors du traitement des requêtes adressées aux domaines de la zone.

Dans ce document, nous partons du principe que vous disposez d'un nom de domaine et d'une adresse IP à laquelle vous pouvez associer ce nom de domaine. Si ce n'est pas le cas, vous pouvez enregistrer un nom de domaine via Google Domains ou un autre bureau d'enregistrement de votre choix.

Lisez la référence relative aux cmdlets Cloud Tools for PowerShell pour en savoir plus sur les cmdlets Cloud DNS. Pour plus d'informations sur Cloud DNS en général, consultez la Présentation de Cloud DNS.

Créer une zone gérée pour votre domaine

L'intégralité de l'espace de noms DNS est composée de nombreux domaines, qui incluront bientôt votre propre nom de domaine. Dans Cloud DNS, les zones gérées modélisent les zones DNS et servent de conteneurs permettant d'organiser les enregistrements DNS (tels que les entrées A, CNAME ou TXT) pour un même suffixe de nom DNS. Par exemple, les enregistrements de "example.com." et de sous-domaines tels que "first.example.com." pourraient être dans la même zone car ils partagent le suffixe "example.com.". Notez le point final, qui est nécessaire et indique un nom DNS absolu.

Pour commencer, configurez une zone gérée pour organiser les enregistrements DNS que vous allez créer pour votre nom de domaine. Vous pouvez créer une zone gérée et l'ajouter à votre projet de la console Google Cloud à l'aide du cmdlet Add-GcdManagedZone:

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

Cette opération crée une zone avec les détails spécifiés et l'ajoute au projet actuel de la configuration de gcloud CLI active. Vous avez également la possibilité de spécifier un ID de projet différent si vous le souhaitez. De plus, cette opération crée les enregistrements NS et SOA par défaut dans cette zone.

Toutefois, pour publier vos nouveaux enregistrements de la zone sur Internet, vous devez également mettre à jour les serveurs de noms de votre domaine pour qu'ils utilisent Cloud DNS. Même si votre domaine est enregistré auprès de Google Domains, vous devez toujours mettre à jour ses serveurs de noms.

Vous pouvez trouver les serveurs de noms Cloud DNS affectés à votre domaine à l'aide du cmdlet Get-GcdManagedZone de la zone gérée régissant le domaine pour afficher des informations sur cette zone :

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

Ajouter et supprimer des jeux d'enregistrements de ressources

Les enregistrements de ressources DNS fournissent des informations qui dictent le comportement du serveur DNS lorsqu'il traite les requêtes envoyées à un domaine. Par exemple, les enregistrements DNS permettent d'indiquer au serveur l'adresse IP associée à un domaine, d'indiquer les serveurs d'échange de courrier utilisables pour un domaine, etc.

Dans Cloud DNS, vous pouvez ajouter ou supprimer des enregistrements DNS dans une zone pour configurer de tels comportements. Pour ajouter ou supprimer des jeux d'enregistrements de ressources immuables, vous n'agissez pas directement sur les enregistrements d'une zone. Vous créez plutôt des enregistrements de ressources indépendants ou récupérez ceux existants à l'aide des cmdlets New-GcdResourceRecordSet et Get-GcdResourceRecordSet, puis vous envoyez des demandes de modification portant sur ces enregistrements à une zone spécifique à l'aide du cmdlet Add-GcdChange.

Créer des jeux d'enregistrements de ressources

Vous pouvez utiliser le cmdlet auxiliaire New-GcdResourceRecordSet pour créer un jeu d'enregistrements de ressources que vous pouvez placer dans une modification, puis l'ajouter à une zone gérée ou l'en supprimer.

Par exemple, si vous souhaitez créer un enregistrement A pour faire pointer votre domaine vers une adresse IPv4 externe au format #.#.#.# (si vous disposez d'une adresse IPv6, utilisez un enregistrement AAAA), vous pouvez utiliser la commande suivante :

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

De même, pour créer un enregistrement CNAME pour le sous-domaine www afin que "www.exemple.com." soit associé à la même adresse IP et se comporte de la même façon que "exemple.com". vous pouvez utiliser la commande suivante :

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

Les types d'enregistrements de ressources compatibles que vous pouvez créer et inclure dans les modifications apportées à une zone sont les suivants : A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SPF, SRV et TXT. Pour déterminer les enregistrements dont vous avez besoin et savoir comment les créer, consultez la section Formats d'enregistrements de ressources compatibles avec Cloud DNS.

Récupérer des jeux d'enregistrements de ressources

Si vous souhaitez récupérer un jeu d'enregistrements de ressources existant dans une zone, vous pouvez utiliser le cmdlet Get-GcdResourceRecordSet, qui renvoie tous les enregistrements d'une zone, puis indexer les résultats :

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

Si vous souhaitez afficher uniquement les enregistrements d'un type spécifique, vous pouvez filtrer les résultats en conséquence :

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

Appliquer des modifications à une zone gérée

Les cmdlets New-GcdResourceRecordSet et Get-GcdResourceRecordSet renvoient tous deux des jeux d'enregistrements de ressources, mais ces enregistrements ne sont ajoutés à rien, ni ne sont supprimés de rien. Pour effectuer ces opérations, utilisez le cmdlet Add-GcdChange :

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

Par exemple, pour ajouter les enregistrements A et CNAME que vous avez créés ci-dessus à notre zone, procédez comme suit :

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

Si vous souhaitez modifier ultérieurement l'adresse IPv4 associée à votre domaine, vous pouvez créer un enregistrement de type A, puis l'ajouter à la zone gérée tout en supprimant l'ancien enregistrement A :

$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

Chaque appel au cmdlet Add-GcdChange renvoie le nouvel objet de requête de modification exécuté. Plutôt que de transmettre des listes de jeux d'enregistrements de ressources au cmdlet Add-GcdChange, vous pouvez lui transmettre directement un objet de requête de modification :

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

La création manuelle d'objets de requête de modification n'est pas recommandée, mais ceux-ci sont utiles si vous souhaitez réappliquer une modification apportée précédemment ou une modification effectuée dans une zone différente. Vous pouvez récupérer tous les objets de requête de modification précédemment appliqués à une zone à l'aide du cmdlet Get-GcdChange :

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

Vous pouvez choisir une modification spécifique en indexant le résultat précédent, ou indiquer la modification à récupérer avec un ChangeId. Les requêtes de modification sont généralement numérotées à partir de 0 en fonction de l'ordre dans lequel elles ont été envoyées à la zone :

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

Supprimer des zones gérées

Dans certains cas, vous souhaiterez peut-être supprimer une zone gérée complètement, et ce pour diverses raisons. Vous avez peut-être la zone gérée "user1-zone" pour le sous-domaine "user1.example.com.", mais user1 supprime son compte, auquel cas vous souhaitez supprimer ce sous-domaine et tous les enregistrements DNS associés.

Pour supprimer une zone gérée de votre projet, utilisez le cmdlet Remove-GcdManagedZone :

Remove-GcdManagedZone -Zone "user1-zone"

Si l'opération réussit, la commande n'affiche rien.

Cependant, ce cmdlet ne fonctionne pas immédiatement sur ce que Cloud DNS considère comme des zones gérées "non vides", ou des zones contenant des enregistrements de type autres que NS ou SOA (enregistrements autres que ceux par défaut). Par exemple, si vous voulez supprimer la zone "my-new-zone" contenant des enregistrements de type A et CNAME, vous devez soit accorder une autorisation au cmdlet lors du traitement, soit spécifier le paramètre -Force dans la commande :

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

La ou les zones à supprimer peuvent également être transmises au cmdlet Remove-GcdManagedZone par le pipeline. Par exemple, la commande suivante supprime de force toutes les zones gérées du projet en cours. Cela peut être utile si vous ne gérez plus aucun des domaines configurés dans un projet :

Get-GcdManagedZone | Remove-GcdManagedZone -Force