Share via


Como gerenciar as zonas DNS usando o PowerShell

Este artigo mostra como gerenciar suas zonas DNS usando o Azure PowerShell. Você também pode gerenciar as zonas DNS usando a plataforma cruzada CLI do Azure ou o portal do Azure.

Este guia trata especificamente das zonas DNS públicas. Para obter informações sobre como usar o Azure PowerShell para gerenciar Zonas Privadas no DNS do Azure, consulte Introdução às Zonas Privadas do DNS do Azure usando o Azure PowerShell.

Uma zona DNS é usada para hospedar os registros DNS para um domínio específico. Para iniciar a hospedagem do seu domínio no DNS do Azure, você precisará criar uma zona DNS para esse nome de domínio. Cada registro DNS para seu domínio é criado dentro dessa zona DNS.

Por exemplo, o domínio 'contoso.com' pode conter vários registros DNS, como 'mail.contoso.com' (para um servidor de email) e 'www.contoso.com' (para um site da Web).

Ao criar uma zona DNS no DNS do Azure:

  • O nome da zona deve ser exclusivo dentro do grupo de recursos e a zona não deve existir ainda. Caso contrário, a operação falhará.
  • O mesmo nome de zona pode ser reutilizado em outro grupo de recursos ou uma assinatura do Azure diferente.
  • Quando várias zonas têm o mesmo nome, cada instância recebe endereços de servidor de nomes diferentes. Apenas um conjunto de endereços pode ser configurado com o registrador de nome de domínio.

Observação

Você não precisa ter um nome de domínio para criar uma zona DNS com esse nome de domínio no DNS do Azure. No entanto, você precisa ser o proprietário do domínio para configurar os servidores de nomes do DNS do Azure como os servidores de nome corretos para o nome de domínio no registrador de nome de domínio.

Confira Delegar um domínio ao DNS do Azurepara saber mais.

Configurar o Azure PowerShell para DNS do Azure

Antes de começar

Importante

Usar esse recurso do Azure do PowerShell exige que você tenha o módulo AzureRM instalado. Esse é um módulo mais antigo disponível apenas para o Windows PowerShell 5.1. que não recebe mais novos recursos. Os módulos Az e AzureRMnão são compatíveis quando instalados para as mesmas versões do PowerShell. Se você precisar das duas versões:

  1. Desinstale o módulo Az de uma sessão do PowerShell 5.1.
  2. Instale o módulo AzureRM de uma sessão do PowerShell 5.1.
  3. Baixe e instale o PowerShell Core 6.x ou posterior.
  4. Instale o módulo Az em uma sessão do PowerShell Core.

Antes de começar a configurar, verifique se você tem os itens a seguir.

Entre na sua conta do Azure

Abra o console do PowerShell e conecte-se à sua conta. Para obter mais informações, veja Entrar com o Azure PowerShell.

Connect-AzAccount

Selecionar a assinatura

Verificar as assinaturas da conta.

Get-AzSubscription

Escolha quais das suas assinaturas do Azure deseja usar.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Criar um grupo de recursos

O Azure Resource Manager requer que todos os grupos de recursos especifiquem um local. Esse local é usado como o local padrão para os recursos do grupo de recursos em questão. No entanto, como todos os recursos de DNS são globais, não regionais, a escolha do local do grupo de recursos não afeta o DNS do Azure.

Você pode ignorar esta etapa se está usando um grupo de recursos existente.

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

Criar uma zona DNS

Uma zona DNS é criada usando o cmdlet New-AzDnsZone .

O seguinte exemplo cria uma zona DNS chamada contoso.com no grupo de recursos chamado MyDNSResourceGroup:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

O exemplo a seguir mostra como criar uma zona DNS com duas marcas do Azure Resource Manager, project = demo e env = test:

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

Obter uma zona DNS

Para recuperar uma zona DNS, use o cmdlet Get-AzDnsZone . Esta operação retornará um objeto de zona DNS correspondente a uma zona existente no DNS do Azure. O objeto contém dados sobre a zona (como o número de conjuntos de registros), mas não contém os conjuntos de registro em si (confira 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

Listar as zonas DNS

Omitindo o nome da zona de Get-AzDnsZone, você pode enumerar todas as zonas em um grupo de recursos. Essa operação retorna uma matriz de objetos de zona.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Omitindo o nome da zona e o nome do grupo de recursos do Get-AzDnsZone, você pode enumerar todas as regiões na assinatura do Azure.

$zoneList = Get-AzDnsZone
$zoneList

Atualizar uma zona DNS

As alterações a um recurso da zona DNS podem ser feitas usando o Set-AzDnsZone. Este cmdlet não atualiza nenhum dos conjuntos de registros DNS dentro da zona (confira Como gerenciar registros DNS). Ele só é usado para atualizar as propriedades do recurso da zona em si. As propriedades de zona graváveis são limitadas às ‘marcas’ do Azure Resource Manager para o recurso de zona.

Use um dos dois métodos a seguir para atualizar uma zona DNS:

Especifique a zona usando o nome da zona e o grupo de recursos

Essa abordagem substitui as marcas de zona existente com os valores especificados.

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

Especifique a zona usando um objeto de $zone

Essa abordagem recupera o objeto de zona existente, modifica as marcas e, em seguida, confirma as alterações. Dessa forma, as marcas existentes podem ser preservadas.

# 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

Ao usar Set-AzDnsZone com um objeto $zone, verificações de Etag serão usadas para garantir que as alterações simultâneas não sejam substituídas. Você pode usar o argumento -Overwrite opcional para omitir essas verificações.

Excluir uma zona DNS

As zonas DNS podem ser excluídas usando o cmdlet Remove-AzDnsZone.

Observação

Excluir uma zona DNS também excluirá todos os registros DNS na zona. Essa operação não pode ser desfeita. Se a zona DNS estiver em uso, serviços que usam a zona falharão quando a zona for excluída.

Para se proteger contra a exclusão acidental da zona, consulte Proteger registros e zonas DNS.

Use um dos dois métodos a seguir para excluir uma zona DNS:

Especifique a zona usando o nome da zona e o nome do grupo de recursos

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Especifique a zona usando um objeto de $zone

Você pode especificar a zona a ser excluído usando um $zone objeto retornado por Get-AzDnsZone.

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

O objeto de zona também pode ser redirecionado em vez de ser passado como um parâmetro:

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

Assim como com Set-AzDnsZone, especificar a zona usando um objeto $zone habilita as verificações de Etag para garantir que as alterações simultâneas não sejam excluídas. Use o -Overwrite para suprimir essas verificações.

Prompts de confirmação

Os cmdlets New-AzDnsZone, Set-AzDnsZone e Remove-AzDnsZone oferecem suporte aos prompts de confirmação.

New-AzDnsZone e Set-AzDnsZone solicitam confirmação caso a variável de preferência do PowerShell $ConfirmPreference tenha um valor Medium ou inferior. Como a exclusão de uma zona DNS pode causar condições indesejadas, o cmdlet Remove-AzDnsZone solicitará a confirmação se a variável $ConfirmPreference do PowerShell tiver um valor diferente de None.

Desde o valor padrão para $ConfirmPreference é High, apenas Remove-AzDnsZone solicitará uma confirmação por padrão.

Você pode substituir a configuração $ConfirmPreference atual usando o parâmetro -Confirm. Se você especificar -Confirm ou -Confirm:$True, o cmdlet solicitará uma confirmação antes de executar. Se você especificar -Confirm:$False, o cmdlet não solicitará uma confirmação.

Para obter mais informações sobre -Confirm e $ConfirmPreference, consulte Sobre as Variáveis de Preferência.

Próximas etapas

Saiba como gerenciar conjuntos de registros e registros em sua zona DNS.
Saiba como delegar seu domínio ao DNS do Azure.
Examine a documentação de referência do PowerShell do DNS do Azure.