Utilizzo di Cloud DNS

Questa pagina mostra come configurare le impostazioni DNS per un dominio utilizzando Cloud DNS e Cloud Tools for PowerShell. Illustra un semplice esempio di creazione di una zona gestita per governare un dominio e i relativi sottodomini, quindi l'aggiunta di record di risorse alla zona per fornire informazioni che determinano il comportamento del server DNS durante la gestione delle richieste ai domini della zona.

Questo documento presuppone che tu abbia un nome di dominio e un indirizzo IP a cui puoi indirizzarlo. In caso contrario, puoi registrare un nome di dominio tramite Google Domains o un altro registrar di domini a tua scelta.

Leggi la documentazione di riferimento dei cmdlet di Cloud Tools for PowerShell per scoprire di più sui cmdlet di Cloud DNS. Per scoprire di più su Cloud DNS in generale, leggi la Panoramica di Cloud DNS.

Creazione di una zona gestita per il tuo dominio

L'intero spazio dei nomi DNS è composto da molti domini, che a breve includeranno il tuo nome di dominio. Le zone gestite in Cloud DNS modellano le zone DNS e fungono da contenitori per organizzare i record DNS (ad esempio voci A, CNAME o TXT) per lo stesso suffisso di nomi DNS. Ad esempio, i record per "example.com" e sottodomini come "first.example.com" potrebbero trovarsi nella stessa zona poiché condividono il suffisso "example.com". Tieni presente il punto finale, che è necessario e indica un nome DNS assoluto.

Per iniziare, configura una zona gestita per organizzare i record DNS che creerai per il tuo nome di dominio. Puoi creare una nuova zona gestita e aggiungerla al progetto della console Google Cloud utilizzando il cmdlet Add-GcdManagedZone:

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

Viene creata una nuova zona con i dettagli specificati e aggiunta al progetto corrente della configurazione della CLI gcloud attiva, anche se puoi anche specificare un ID progetto diverso, se vuoi. Vengono inoltre creati automaticamente nella zona i record NS e SOA predefiniti.

Tuttavia, per pubblicare i nuovi record della zona su internet, devi anche aggiornare i server dei nomi del tuo dominio in modo che utilizzino Cloud DNS. Anche se il tuo dominio è registrato con Google Domains, devi comunque aggiornarne i server dei nomi.

Puoi trovare i server dei nomi Cloud DNS assegnati al tuo dominio utilizzando il cmdlet Get-GcdManagedZone nella zona gestita che regola il dominio per restituire informazioni sulla zona:

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

Aggiunta e rimozione di set di record di risorse

I record di risorse DNS forniscono informazioni che determinano il comportamento del server DNS durante la gestione delle richieste inviate a un dominio. Ad esempio, i record DNS possono essere utilizzati per indicare al server l'indirizzo IP a cui viene risolto un dominio, i server di posta utilizzabili per un dominio e molto altro ancora.

In Cloud DNS, puoi aggiungere o rimuovere record DNS in una zona per configurare questo comportamento. Per aggiungere o rimuovere insiemi di record di risorse immutabili, non devi eseguire operazioni direttamente sui record di una zona. Devi invece creare record di risorse indipendenti o recuperarne di esistenti utilizzando rispettivamente i cmdlet New-GcdResourceRecordSet e Get-GcdResourceRecordSet, quindi inviare richieste di modifica con questi record a una zona specifica utilizzando il cmdlet Add-GcdChange.

Creazione di set di record di risorse

Puoi utilizzare il cmdlet di assistenza New-GcdResourceRecordSet per creare un insieme di record di risorse da inserire in una modifica e poi aggiungere o rimuovere da una zona gestita.

Ad esempio, se vuoi creare un record A per indirizzare il tuo dominio a un indirizzo IPv4 esterno nel formato #.#.#.# (se hai un indirizzo IPv6, utilizza un record AAAA), puoi utilizzare il seguente comando:

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

Analogamente, per creare un record CNAME per il sottodominio www in modo che "www.example.com" si risolva nello stesso IP e si comporti come "example.com", puoi utilizzare il seguente comando:

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

I tipi di record di risorse supportati che puoi creare e includere nelle modifiche a una zona sono A, AAAA, CNAME, MX, NAPTR, NS, PTR, SOA, SPF, SRV e TXT. Per aiuto su come decidere quali record sono necessari e come crearli, consulta i formati dei record di risorse supportati per Cloud DNS.

Recupero dei set di record di risorse

Se vuoi recuperare un set di record di risorse esistente in una zona, puoi utilizzare il cmdlet Get-GcdResourceRecordSet per restituire tutti i record di una zona e poi indicizzare i risultati:

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

Se vuoi solo record di un tipo specifico, puoi filtrare i risultati di conseguenza:

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

Applicazione delle modifiche a una zona gestita

I cmdlet New-GcdResourceRecordSet e Get-GcdResourceRecordSet entrambi restituisce set di record di risorse, ma non aggiungono record o li rimuovono da nulla. A questo scopo, utilizza il cmdlet Add-GcdChange:

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

Ad esempio, per aggiungere i record A e CNAME che hai creato sopra alla nostra zona, segui questi passaggi:

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

Se in un secondo momento vuoi modificare l'indirizzo IPv4 a cui viene risolto il tuo dominio, puoi creare un nuovo record di tipo A e aggiungerlo alla zona gestita, eliminando al contempo il vecchio record 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

Ogni chiamata al cmdlet Add-GcdChange restituisce l'oggetto della richiesta di modifica appena eseguito. Puoi anche passare al cmdlet Add-GcdChange un oggetto di richiesta di modifica da eseguire direttamente anziché elenchi di set di record di risorse:

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

La creazione manuale di oggetti di richiesta di modifica non è consigliata, ma sono utili se vuoi applicare di nuovo una modifica apportata in precedenza o in un'altra zona. Puoi recuperare tutti gli oggetti di richiesta di modifica passati che sono stati applicati a una zona utilizzando il cmdlet Get-GcdChange:

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

Puoi scegliere una modifica specifica indicizzando il risultato precedente o specificare la modifica da recuperare con un ChangeId. Le richieste di modifica sono solitamente numerate da 0 in poi in base all'ordine in cui sono state inviate alla zona:

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

Eliminazione delle zone gestite

A volte, potresti voler rimuovere del tutto una zona gestita. Ciò può essere dovuto a diversi motivi. Ad esempio, potresti avere gestito la zona "user1-zone" per il sottodominio "user1.example.com", ma l'utente user1 ha eliminato il proprio account. In questo caso, devi rimuovere questo sottodominio e tutti i record DNS associati.

Per rimuovere una zona gestita dal progetto, utilizza il cmdlet Remove-GcdManagedZone:

Remove-GcdManagedZone -Zone "user1-zone"

In caso di esito positivo, il comando non restituisce nulla.

Tuttavia, questo cmdlet non funziona immediatamente su quelle che Cloud DNS considera zone gestite "non vuote" o zone che contengono record di tipo non NS o non SOA (record non predefiniti). Ad esempio, non potresti eliminare "la-mia-nuova-zona", a cui hai aggiunto record di tipo A e CNAME, senza concedere l'autorizzazione al cmdlet durante l'elaborazione o utilizzare lo switch -Force:

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

Il cmdlet Remove-GcdManagedZone accetta anche l'input della pipeline per le zone da eliminare. Ad esempio, il seguente comando elimina forzatamente tutte le zone gestite nel progetto corrente. Questa operazione può essere utile se non gestisci più nessuno dei domini configurati in un progetto:

Get-GcdManagedZone | Remove-GcdManagedZone -Force