Partilhar via


Como gerenciar zonas DNS usando o PowerShell

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

Este guia trata especificamente de 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 é utilizada para alojar os registos DNS para um domínio particular. Para começar a alojar o seu domínio no DNS do Azure, tem de criar uma zona DNS para esse nome de domínio. Cada registo DNS para o seu domínio é então criado no interior desta zona DNS.

Por exemplo, o domínio “contoso.com” pode conter vários registos DNS, como “mail.contoso.com” (para um servidor de e-mail) e “www.contoso.com” (para um Web site).

Ao criar uma zona DNS no Azure DNS:

  • O nome da zona deve ser exclusivo dentro do grupo de recursos e a zona não pode já existir. Caso contrário, a operação falha.
  • O mesmo nome de zona pode ser reutilizado num grupo de recursos diferente ou numa subscrição diferente do Azure.
  • Onde as várias zonas partilham o mesmo nome, cada instância é atribuída a diferentes endereços do servidor do nome. Apenas um conjunto de endereços pode ser configurado com a entidade de registo de nome de domínio.

Nota

Não é necessário possuir um nome de domínio para criar uma zona DNS com esse nome de domínio no DNS do Azure. No entanto, tem de ser o proprietário do domínio para configurar os servidores de nomes DNS do Azure como os servidores de nomes corretos para o nome de domínio com a entidade de registo do nome de domínio.

Para obter mais informações, veja Delegar um domínio ao DNS do Azure.

Configurar o Azure PowerShell para o DNS do Azure

Antes de começar

Importante

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

  1. Desinstale o módulo Az de uma sessão do PowerShell 5.1.
  2. Instale o módulo AzureRM a partir 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 iniciar a configuração, verifique se tem os seguintes itens.

Inicie sessão na sua conta do Azure

Abra a consola do PowerShell e ligue-se à sua conta. Para obter mais informações, consulte Entrar com o Azure PowerShell.

Connect-AzAccount

Selecionar a subscrição

Verifique as subscrições da conta.

Get-AzSubscription

Escolha qual das suas subscrições do Azure utilizar.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Criar um grupo de recursos

O Azure Resource Manager requer que todos os grupos de recursos especifiquem uma localização, que é utilizada como a localização predefinida para os recursos nesse grupo de recursos. No entanto, uma vez que todos os recursos DNS são globais, não regionais, a opção de localização do grupo de recursos não tem impacto no DNS do Azure.

Pode ignorar este passo se estiver a utilizar um grupo de recursos existente.

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

Criar uma zona DNS

Uma zona DNS é criada ao utilizar o cmdlet New-AzDnsZone.

O exemplo a seguir 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 tags 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 Get-AzDnsZone cmdlet. Esta operação retorna 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 próprios conjuntos de registros (consulte 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 zonas DNS

Ao omitir o nome da zona de Get-AzDnsZone, pode enumerar todas as zonas de um grupo de recursos. Esta operação devolve uma matriz de objetos de zona.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Ao omitir o nome da zona e o nome do grupo de recursos de Get-AzDnsZone, pode enumerar todas as zonas na subscrição do Azure.

$zoneList = Get-AzDnsZone
$zoneList

Atualizar uma zona DNS

É possível efetuar alterações a um recurso de zona DNS com Set-AzDnsZone. Este cmdlet não atualiza nenhum dos conjuntos de registros DNS dentro da zona (consulte Como gerenciar registros DNS). Só é utilizado para atualizar propriedades do recurso da própria zona. As propriedades da zona gravável estão atualmente limitadas às 'tags' do Azure Resource Manager para o recurso de zona.

Use uma das duas maneiras a seguir para atualizar uma zona DNS:

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

Essa abordagem substitui as marcas de zona existentes pelos valores especificados.

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

Especifique o horário com um objeto de $zone

Essa abordagem recupera o objeto de zona existente, modifica as tags e confirma as alterações. Desta forma, as tags 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

Quando você usa Set-AzDnsZone com um objeto $zone, as verificações de Etag são usadas para garantir que as alterações simultâneas não sejam substituídas. Você pode usar a opção opcional -Overwrite para suprimir essas verificações.

Excluir uma zona DNS

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

Nota

A eliminação de uma zona DNS também elimina todos os registos DNS na zona. Esta operação não pode ser anulada. Se a zona DNS estiver em utilização, os serviços que utilizam a zona irão falhar quando a zona for eliminada.

Para proteção contra a eliminação acidental de uma zona, veja Como proteger zonas e registos DNS.

Utilize uma das duas formas seguintes para eliminar uma zona DNS:

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

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Especifique o horário com um objeto de $zone

Pode especificar a zona a eliminar com um objeto $zone devolvido por Get-AzDnsZone.

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

O objeto de zona também pode ser direcionado, em vez de ser transmitido como um parâmetro:

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

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

Pedidos de confirmação

Todos os cmdlets New-AzDnsZone, Set-AzDnsZone e Remove-AzDnsZone suportam pedidos de confirmação.

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

Dado que o valor predefinido para $ConfirmPreference é High, apenas Remove-AzDnsZone solicita a confirmação por predefinição.

Pode substituir a definição $ConfirmPreference atual com o parâmetro -Confirm. Se especificar -Confirm ou -Confirm:$True , o cmdlet irá pedir-lhe a confirmação antes de ser executado. Se você especificar -Confirm:$False , o cmdlet não solicitará a confirmação.

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

Próximos passos

Saiba como gerir conjuntos de registos e registos na sua zona DNS.
Saiba como delegar seu domínio ao DNS do Azure.
Analise a documentação de referência do Azure DNS PowerShell.