Condividi tramite


Come gestire le zone DNS utilizzando PowerShell

Questo articolo spiega come gestire una zona DNS mediante Azure PowerShell. È anche possibile gestire le zone DNS usando l'interfaccia della riga di comando di Azure multipiattaforma o il portale di Azure.

Questa guida è incentrata in particolare sulle zone DNS pubbliche. Per informazioni sull'uso di Azure PowerShell per gestire Zone private di DNS di Azure, vedere Introduzione alle zone private di Azure DNS con PowerShell.

Una zona DNS viene usata per ospitare i record DNS per un dominio specifico. Per iniziare a ospitare il dominio in DNS di Azure, è necessario creare una zona DNS per il nome di dominio. Ogni record DNS per il dominio viene quindi creato all'interno di questa zona DNS.

Il dominio "contoso.com", ad esempio, può contenere diversi record DNS, come "mail.contoso.com" (per un server di posta) e "www.contoso.com" (per un sito Web).

Creazione di una zona DNS in DNS di Azure:

  • Il nome della zona deve essere univoco all'interno del gruppo di risorse e la zona non deve esistere già, altrimenti l'operazione non riesce.
  • Lo stesso nome di zona può essere usato di nuovo in un gruppo di risorse diverso o in un'altra sottoscrizione di Azure.
  • Se più zone condividono lo stesso nome, a ogni istanza vengono assegnati indirizzi di server dei nomi diversi. È possibile configurare solo un set di indirizzi con il registrar.

Nota

Non è necessario essere proprietari di un dominio per creare una zona DNS con questo nome di dominio in DNS di Azure, ma è necessario essere proprietari del dominio per configurare i server dei nomi DNS di Azure come server dei nomi corretti per il nome di dominio con il registrar.

Per altre informazioni, vedere Delegare un dominio a DNS di Azure.

Configurare Azure PowerShell per DNS di Azure

Operazioni preliminari

Importante

Se si usa questa funzionalità di Azure da PowerShell, è necessario che sia installato il modulo AzureRM. Si tratta di un modulo meno recente, disponibile solo per Windows PowerShell 5.1.x, che non riceve più le nuove funzionalità. I moduli Az e AzureRMnon sono compatibili con quando vengono installati per le stesse versioni di PowerShell. Se sono necessarie entrambe le versioni:

  1. Disinstallare il modulo Az da una sessione di PowerShell 5.1.
  2. Installare il modulo AzureRM da una sessione di PowerShell 5.1.
  3. Scaricare e installare PowerShell Core 6.x o versioni successive.
  4. Installare il modulo Az in una sessione di PowerShell Core.

Prima di iniziare la configurazione, verificare di essere in possesso degli elementi seguenti.

Accedere con l'account Azure

Aprire la console di PowerShell e connettersi al proprio account. Per altre informazioni, vedere Accedere con Azure PowerShell.

Connect-AzAccount

Selezionare la sottoscrizione

Controllare le sottoscrizioni per l'account.

Get-AzSubscription

Scegliere quali sottoscrizioni Azure usare.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Creare un gruppo di risorse

Gestione risorse di Azure richiede che tutti i gruppi di risorse specifichino un percorso che viene usato come percorso predefinito per le risorse presenti in tale gruppo di risorse. Tuttavia, dato che tutte le risorse DNS sono globali, non regionali, la scelta del percorso del gruppo di risorse non ha alcun impatto sul servizio DNS di Azure.

Se si usa un gruppo di risorse esistente, è possibile ignorare questo passaggio.

New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"

Creare una zona DNS

Viene creata una zona DNS con il cmdlet New-AzDnsZone .

L'esempio seguente crea una zona DNS denominata contoso.com nel gruppo di risorse denominato MyDNSResourceGroup:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

L'esempio seguente illustra come creare una zona DNS con due tag di Azure Resource Manager, project = demo e env = test:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Ottenere una zona DNS

Per recuperare una zona DNS, usare il cmdlet Get-AzDnsZone . Questa operazione restituisce un oggetto di zona DNS corrispondente a una zona esistente nel servizio DNS di Azure. L'oggetto contiene i dati sulla zona (ad esempio il numero di set di record), ma non contiene i set di record stessi (vedere Get-AzDnsRecordSet).

Get-AzDnsZone -Name contoso.com –ResourceGroupName MyDNSResourceGroup

Name                  : contoso.com
ResourceGroupName     : myresourcegroup
Etag                  : 00000003-0000-0000-8ec2-f4879750d201
Tags                  : {project, env}
NameServers           : {ns1-01.azure-dns.com., ns2-01.azure-dns.net., ns3-01.azure-dns.org.,
                        ns4-01.azure-dns.info.}
NumberOfRecordSets    : 2
MaxNumberOfRecordSets : 5000

Elencare le zone DNS

Omettendo il nome della zona da Get-AzDnsZone, è possibile enumerare tutte le zone in un gruppo di risorse. Questa operazione restituisce una matrice di oggetti di zona.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Omettendo il nome della zona e il nome del gruppo di risorse da Get-AzDnsZone, è possibile enumerare tutte le zone nella sottoscrizione di Azure.

$zoneList = Get-AzDnsZone
$zoneList

Aggiornare una zona DNS

È possibile apportare modifiche a una risorsa di zona DNS usando Set-AzDnsZone. Questo cmdlet non consente di aggiornare i set di record DNS compresi nella zona (vedere Come gestire i record DNS). Questa operazione permette solo di aggiornare le proprietà della risorsa di zona stessa. Le proprietà della zona scrivibile sono attualmente limitate ai "tag" di Azure Resource Manager relativi alla risorsa di zona.

Usare una delle due opzioni seguenti per aggiornare una zona DNS:

Specificare la zona usando il nome della zona e del gruppo di risorse.

Questo approccio sostituisce i tag di zona esistenti con i valori specificati.

Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Specificare la zona usando un oggetto $zone

Questo approccio recupera l'oggetto zona esistente, modifica i tag e quindi esegue il commit delle modifiche. Ciò consente di conservare i tag esistenti.

# Get the zone object
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

# Remove an existing tag
$zone.Tags.Remove("project")

# Add a new tag
$zone.Tags.Add("status","approved")

# Commit changes
Set-AzDnsZone -Zone $zone

Quando si usa Set-AzDnsZone con un oggetto $zone, i controlli ETag vengono usati per verificare che le modifiche simultanee non vengano sovrascritte. È possibile usare l'opzione facoltativa -Overwrite per disattivare tali controlli.

Eliminare una zona DNS

Le zone DNS possono essere eliminate usando il cmdlet Remove-AzDnsZone.

Nota

L'eliminazione di una zona DNS comporta anche l'eliminazione di tutti i record DNS all'interno della zona. Questa operazione non può essere annullata. Se la zona DNS è in uso, i servizi che la usano rileveranno un errore quando la zona viene eliminata.

Per evitare l'eliminazione accidentale di una zona, vedere How to protect DNS zones and records (Come proteggere le zone e i record DNS).

Usare una delle due opzioni seguenti per eliminare la zona DNS:

Specificare la zona usando il nome della zona e del gruppo di risorse:

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Specificare la zona usando un oggetto $zone

È possibile specificare la zona da eliminare usando un oggetto $zone restituito da Get-AzDnsZone.

$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone

L'oggetto di zona può essere anche reindirizzato invece che passato come parametro:

Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone

Come con Set-AzDnsZone, specificando la zona usando un oggetto $zone è possibile abilitare i controlli ETag per garantire che le modifiche simultanee non vengano eliminate. Usare l'opzione -Overwrite per disattivare tali controlli.

Richieste di conferma

I cmdlet New-AzDnsZone, Set-AzDnsZone e Remove-AzDnsZone supportano le richieste di conferma.

New-AzDnsZone e Set-AzDnsZone richiedono la conferma se la variabile di preferenza $ConfirmPreference di PowerShell ha un valore uguale o inferiore a Medium. A causa dell'impatto potenzialmente significativo dell'eliminazione di una zona DNS, il cmdlet Remove-AzDnsZone richiede la conferma se la variabile $ConfirmPreference di PowerShell ha un valore diverso da None.

Poiché il valore predefinito per $ConfirmPreference è High, solo Remove-AzDnsZone richiede la conferma per impostazione predefinita.

Per eseguire l'override dell'impostazione $ConfirmPreference corrente è possibile usare il parametro -Confirm. Se si specifica -Confirm o -Confirm:$True, il cmdlet chiede conferma prima dell'esecuzione. Se si specifica -Confirm:$False, il cmdlet non chiede alcuna conferma.

Per altre informazioni su -Confirm e $ConfirmPreference, vedere About Preference Variables (Informazioni sulle variabili di preferenza).

Passaggi successivi

Informazioni su come gestire record e set di record nella zona DNS.
Informazioni su come delegare il dominio al servizio DNS di Azure.
Vedere la documentazione di riferimento di PowerShell nel servizio DNS di Azure.