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 gestire 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 disponga di un nome di dominio e di un indirizzo IP a cui puoi puntare il nome di dominio. In caso contrario, puoi registrare un nome di dominio tramite Google Domains o un altro registrar di domini di tua scelta.

Per saperne di più sui cmdlet di Cloud DNS, consulta il riferimento sui Cmdlet di Cloud Tools for PowerShell. Per saperne di più su Cloud DNS in generale, consulta 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 presto includeranno il tuo nome di dominio. Le zone gestite nelle zone DNS del modello Cloud DNS e fungono da container per organizzare i record DNS (ad esempio le voci A, CNAME o TXT) per lo stesso suffisso del nome DNS. Ad esempio, i record per "example.com" e i sottodomini come "first.example.com." potrebbero trovarsi nella stessa zona perché condividono il suffisso "example.com". Nota il punto finale, obbligatorio che 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 tuo 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."

Questa operazione crea una nuova zona con i dettagli specificati e la aggiunge al progetto attuale della configurazione dell'interfaccia a riga di comando gcloud attiva. Tuttavia, se vuoi, puoi anche specificare un ID progetto diverso. In questo modo vengono creati automaticamente record NS e SOA predefiniti nella zona.

Tuttavia, per pubblicare su internet i nuovi record della zona, devi 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 aggiornare i relativi 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 quando gestisce le richieste inviate a un dominio. Ad esempio, i record DNS possono essere utilizzati per indicare al server a quale indirizzo IP viene risolto un dominio, indicare i server Mail Exchange utilizzabili per un dominio e molto altro ancora.

In Cloud DNS, puoi aggiungere o rimuovere i record DNS in una zona per configurare questo comportamento. Per aggiungere o rimuovere set di record di risorse immutabili, non operi direttamente sui record di una zona. Puoi invece creare record di risorse indipendenti o recuperare quelli esistenti utilizzando rispettivamente i cmdlet New-GcdResourceRecordSet e Get-GcdResourceRecordSet e poi inviare le 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 helper New-GcdResourceRecordSet per creare un set di record di risorse che puoi inserire in una modifica e poi aggiungerlo o rimuoverlo 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 disponi di un indirizzo IPv6, usa 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." venga risolto con lo stesso indirizzo IP e agisca allo stesso modo di "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 decidere quali record sono necessari e come crearli, vedi Formati di 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 i record di un tipo specifico, puoi filtrare i risultati di conseguenza:

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

Applicazione di modifiche a una zona gestita

I cmdlet New-GcdResourceRecordSet e Get-GcdResourceRecordSet restituiscono entrambi set di record di risorse, ma non li aggiungono né li rimuovono da alcun elemento. 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 creati in precedenza alla zona, procedi nel seguente modo:

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

Se in un secondo momento vuoi modificare l'indirizzo IPv4 in cui viene risolto il tuo dominio, puoi creare un nuovo record di tipo A e aggiungerlo alla zona gestita eliminando il record A precedente:

$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 di richiesta di modifica appena eseguito. Puoi anche passare direttamente il Cmdlet Add-GcdChange di un oggetto di richiesta di modifica al posto degli elenchi di set di record di risorse:

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

La creazione manuale di oggetti con richiesta di modifica non è consigliata, ma è utile se vuoi applicare nuovamente una modifica apportata in precedenza o una apportata in una zona diversa. Puoi recuperare tutti gli oggetti con richieste di modifica precedenti 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 quale modifica recuperare con un ChangeId. Le richieste di modifica sono in genere 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 potrebbe essere necessario rimuovere completamente una zona gestita. Ciò potrebbe essere per una serie di motivi. Supponiamo che tu abbia gestito la zona "user1-zone" per il sottodominio "user1.example.com", ma utente1 abbia eliminato il suo account. In questo caso, vuoi rimuovere questo sottodominio e tutti i record DNS associati.

Per rimuovere una zona gestita dal tuo 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 per le zone gestite "non vuote" che Cloud DNS considera o per le zone che contengono record di tipo non NS o non SOA (record non predefiniti). Ad esempio, non potrai eliminare "my-new-zone", a cui hai aggiunto record di tipo A e CNAME, senza concedere l'autorizzazione al cmdlet durante l'elaborazione o utilizzare l'opzione -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. Questo può essere utile se non stai più mantenendo nessuno dei domini configurati in un progetto:

Get-GcdManagedZone | Remove-GcdManagedZone -Force