Gerenciar registros e conjuntos de registros DNS no DNS do Azure usando o Azure PowerShell

Este artigo mostra como gerenciar os registros de DNS para sua zona de DNS usando o Azure PowerShell. Os registros DNS também podem ser gerenciados usando a CLI do Azure da plataforma cruzada ou o portal do Azure.

Os exemplos neste artigo pressupõem que você já instalou o Azure PowerShell, conectou e criou uma zona DNS.

Observação

Recomendamos que você use o módulo Az PowerShell do Azure para interagir com o Azure. Para começar, consulte Instalar o Azure PowerShell. Para saber como migrar para o módulo Az PowerShell, confira Migrar o Azure PowerShell do AzureRM para o Az.

Introdução

Antes de criar registros DNS no DNS do Azure, primeiro você precisa entender como o DNS do Azure organiza registros DNS em conjuntos de registros DNS.

Nomes de registros

No DNS do Azure, os registros são especificados usando nomes relativos. Um FQDN (nome de domínio totalmente qualificado) inclui o nome da zona, enquanto um nome relativo não o inclui. Por exemplo, o nome relativo do registro www na zona contoso.com fornece o nome totalmente qualificado do registro www.contoso.com.

Um registro apex é um registro DNS na raiz (ou apex) de uma zona DNS. Por exemplo, na zona DNScontoso.com, um registro apex também tem o nome totalmente qualificadocontoso.com (ele às vezes é chamado de domíniodescoberto). Por convenção, o nome relativo \'\@\' é usado para representar os registros de vértices.

Tipos de registro

Cada registro DNS tem um nome e um tipo. Os registros são organizados em vários tipos de acordo com os dados que eles contêm. O tipo mais comum é um registro 'A', que mapeia um nome para um endereço IPv4. Outro tipo comum é um registro 'MX', que mapeia um nome para um servidor de email.

O DNS do Azure dá suporte a todos os tipos de registro DNS comuns: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV e TXT. Observe que registros SPF são representados usando registros TXT.

Conjuntos de registros

Às vezes, você precisa criar mais de um registro DNS com determinado nome e tipo. Por exemplo, vamos supor que o site 'www.contoso.com' seja hospedado em dois endereços IP diferentes. O site exige dois registros A diferentes, um para cada endereço IP. Aqui está um exemplo de um conjunto de registros:

www.contoso.com.        3600    IN    A    134.170.185.46
www.contoso.com.        3600    IN    A    134.170.188.221

O DNS do Azure gerencia todos os registros DNS usando conjuntos de registros. Um conjunto de registros (também conhecido como conjunto de registros de recurso) é uma coleção de registros DNS em uma zona que tem o mesmo nome e o mesmo tipo. A maioria dos conjuntos de registros contém um único registro. No entanto, exemplos como o que é mostrado acima, em que um conjunto de registros contém mais de um registro, não são incomuns.

Por exemplo, digamos que você já criou um registro 'www' A na zona 'contoso.com' apontando para o endereço IP '134.170.185.46' (o primeiro registro acima). Para criar o segundo registro, você deve adicioná-lo ao conjunto de registros existente em vez de criar um conjunto de registros adicional.

Os conjuntos de registros SOA e CNAME são exceções. Os padrões DNS não permitem vários registros com o mesmo nome para esses tipos e, assim, esses conjuntos de registros podem conter apenas um único registro.

Para obter mais informações sobre os registros DNS no DNS do Azure, confira Zonas e registros DNS.

Criar um novo registro DNS

Para criar um conjunto de registros, ele precisa ter um nome e tipo diferentes dos registros existentes. Se o novo registro tiver o mesmo nome e tipo de um registro existente, você precisará adicioná-lo ao conjunto de registros existente.

Criar registros 'A' em um novo conjunto de registros

Você cria conjuntos de registros usando o cmdlet New-AzDnsRecordSet. Ao criar um conjunto de registros, você precisa especificar o nome do conjunto de registros, a zona, o TTL (vida útil), o tipo de registro e os registros a serem criados.

Os parâmetros para adicionar registros a um conjunto de registros variam dependendo do tipo de conjunto de registros. Por exemplo, ao usar um conjunto de registros do tipo "A", você precisa especificar o endereço IP usando o parâmetro -IPv4Address. Tipos de registro diferentes terão parâmetros extras.

O exemplo a seguir cria um conjunto de registros com o nome relativo www na Zona DNS contoso.com. O nome totalmente qualificado do conjunto de registros é www.contoso.com. O tipo de registro é 'A' e o TTL é 3600 segundos. O conjunto de registros contém um único registro, com o endereço IP "1.2.3.4".

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") 

Para criar um conjunto de registros no "ápice" de uma zona (neste caso, "contoso.com"), use o nome do conjunto de registros \'\@\' (excluindo as aspas):

New-AzDnsRecordSet -Name "@" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") 

Se você precisar criar um conjunto de registros contendo mais de um registro, primeiro deve criar uma matriz local e adicionar os registros e, então, passar a matriz para New-AzDnsRecordSet como a seguir:

$aRecords = @()
$aRecords += New-AzDnsRecordConfig -IPv4Address "1.2.3.4"
$aRecords += New-AzDnsRecordConfig -IPv4Address "2.3.4.5"
New-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName MyResourceGroup -Ttl 3600 -RecordType A -DnsRecords $aRecords

Os metadados do conjunto de registros podem ser usados para associar os dados específicos do aplicativo com cada conjunto de registros, como pares de chave-valor. O exemplo a seguir mostra como criar um conjunto de registros com duas entradas de metadados, "dept=finance" e "environment=production".

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -IPv4Address "1.2.3.4") -Metadata @{ dept="finance"; environment="production" } 

O DNS do Azure também oferece suporte a conjuntos de registros 'vazios', que podem agir como um espaço reservado para reservar um nome DNS antes de criar os registros DNS. Os conjuntos de registros vazios são visíveis no painel de controle do DNS do Azure, mas aparecem nos servidores de nome DNS do Azure. O exemplo a seguir cria um conjunto de registros vazio:

New-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords @()

Criar outros tipos de registro

Depois de ter visto detalhadamente como criar os registros 'A', os exemplos a seguir mostram como criar outros tipos de registro suportados pelo DNS do Azure.

Em cada caso, mostraremos como criar um conjunto de registro que contém um único registro. Os exemplos anteriores dos registros 'A' podem ser adaptados para criar outros tipos de conjuntos de registros que contêm vários registros, com metadados ou criar conjuntos de registros vazios.

Não existe exemplo para criar um conjunto de registros SOA, pois SOAs são criados e excluídos com cada zona DNS. O registro SOA não pode ser criado ou excluído separadamente. No entanto, o SOA pode ser modificado, como mostrado no exemplo mais adiante.

Criar um conjunto de registros AAAA com um registro único

New-AzDnsRecordSet -Name "test-aaaa" -RecordType AAAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ipv6Address "2607:f8b0:4009:1803::1005") 

Criar um conjunto de registros CAA com um único registro

New-AzDnsRecordSet -Name "test-caa" -RecordType CAA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Caaflags 0 -CaaTag "issue" -CaaValue "ca1.contoso.com") 

Criar um conjunto de registros CNAME com um registro único

Observação

Os padrões do DNS não permitem registros CNAME no ápice de uma zona (-Name '@'), nem permitem conjuntos de registros que contêm mais de um registro.

Para obter mais informações, consulte Registros CNAME.

New-AzDnsRecordSet -Name "test-cname" -RecordType CNAME -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Cname "www.contoso.com") 

Criar um conjunto de registros MX com um registro único

Neste exemplo, usamos o nome do conjunto de registros \'\@\' para criar um registro MX no ápice da zona (nesse caso, "contoso.com").

New-AzDnsRecordSet -Name "@" -RecordType MX -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Exchange "mail.contoso.com" -Preference 5) 

Criar um conjunto de registros NS com um registro único

New-AzDnsRecordSet -Name "test-ns" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Nsdname "ns1.contoso.com") 

Criar um conjunto de registros PTR com um único registro

Neste caso, 'my-arpa-zone.com' representa a zona de pesquisa inversa ARPA que apresenta o intervalo de IPs. Cada registro PTR definido nesta zona corresponde a um endereço IP nesse intervalo de IP. O nome do registro '10' é o último octeto do endereço IP dentro desse intervalo IP representado por esse registro.

New-AzDnsRecordSet -Name 10 -RecordType PTR -ZoneName "my-arpa-zone.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Ptrdname "myservice.contoso.com") 

Criar um conjunto de registros SRV com um registro único

Ao criar um conjunto de registros SRV, especifique o _serviço e o _protocolo no nome do conjunto de registros. Não é necessário incluir '@' no nome do conjunto de registros ao criar um conjunto de registros SRV definido no ápice da zona.

New-AzDnsRecordSet -Name "_sip._tls" -RecordType SRV -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Priority 0 -Weight 5 -Port 8080 -Target "sip.contoso.com") 

Criar um conjunto de registros TXT com um registro único

O exemplo a seguir mostra como criar um registro TXT. Para obter mais informações sobre o tamanho máximo suportado pelos registros TXT, consulte Registros TXT.

New-AzDnsRecordSet -Name "test-txt" -RecordType TXT -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -Ttl 3600 -DnsRecords (New-AzDnsRecordConfig -Value "This is a TXT record") 

Obter um conjunto de registros

Para recuperar um conjunto de registros existente, use Get-AzDnsRecordSet. Esse cmdlet retorna um objeto local que representa o conjunto de registros no DNS do Azure.

Assim como acontece com New-AzDnsRecordSet, o nome do conjunto de registros fornecido deve ser um nome relativo, significando que ele deve excluir o nome da zona. Você também precisa especificar o tipo de registro e a zona que contém o conjunto de registros.

O exemplo a seguir mostra como recuperar um conjunto de registros. Neste exemplo, a zona é especificada usando os parâmetros -ZoneName e -ResourceGroupName.

$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Em vez disso, você também pode especificar a zona usando um objeto de zona, passado usando o parâmetro -Zone.

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs = Get-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone

Listar os conjuntos de registros

Você também pode usar Get-AzDnsZone para listar os conjuntos de registros em uma zona, omitindo os parâmetros -Name e/ou -RecordType.

O exemplo a seguir retorna todos os conjuntos de registro na zona:

$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

O exemplo a seguir mostra como você pode recuperar todos os conjuntos de registro de um determinado tipo especificando o tipo de registro ao omitir o nome do conjunto de registros:

$recordsets = Get-AzDnsRecordSet -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Para recuperar todos os conjuntos de registro com um determinado nome, em todos os tipos de registro, você precisa recuperar todos os conjuntos de registros, em seguida, filtrar os resultados:

$recordsets = Get-AzDnsRecordSet -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | where {$_.Name.Equals("www")}

Em todos os exemplos acima, a zona pode ser especificada usando os parâmetros -ZoneName e -ResourceGroupName (como mostrado) ou especificando um objeto da zona:

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
$recordsets = Get-AzDnsRecordSet -Zone $zone

Adicionar um registro a um conjunto de registros existente

Para adicionar um registro a um conjunto de registros existente, siga estas três etapas:

  1. Obter o conjunto de registros existente

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Adicione o novo registro ao conjunto de registros local.

    Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Atualize as alterações para que elas sejam refletidas no serviço de DNS do Azure.

    Set-AzDnsRecordSet -RecordSet $rs
    

Usar Set-AzDnsRecordSetsubstitui o conjunto de registros existente no DNS do Azure (e todos os registros que ele contém) pelo conjunto de registros especificado. As verificações de Etag sã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.

Esta sequência de operações também pode ser redirecionada, significando que você passa o objeto do conjunto de registros usando a barra vertical, em vez de passá-lo como um parâmetro:

Get-AzDnsRecordSet -Name "www" –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Add-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet

Os exemplos acima mostram como adicionar um registro 'A' a um conjunto de registros existente do tipo 'A'. Uma sequência de operações parecida é usada para adicionar registros a outros tipos de conjuntos de registro, substituindo o parâmetro -Ipv4Address de Add-AzDnsRecordConfig por outros parâmetros específicos para cada tipo de registro. Os parâmetros para cada tipo de registro são iguais para o cmdlet New-AzDnsRecordConfig, como mostrado em outros exemplos dos tipos de registro acima.

Os conjuntos de registro do tipo 'CNAME' ou 'SOA' não podem conter mais de um registro. Essa restrição resulta dos padrões do DNS. Não é uma limitação do DNS do Azure.

Remover um registro em um conjunto de registros existente

O processo para remover um registro de um conjunto de registros é semelhante ao processo para adicionar um registro a um conjunto de registros existente:

  1. Obter o conjunto de registros existente

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Remova o registro do objeto do conjunto de registros local. O registro que está sendo removido deve ser uma correspondência exata com um registro existente, em todos os parâmetros.

    Remove-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Confirme a mudança no serviço DNS do Azure. Use o argumento opcional -Overwrite para omitir as verificações de Etag das alterações simultâneas.

    Set-AzDnsRecordSet -RecordSet $Rs
    

Usar a sequência acima para remover o último registro de um conjunto de registros não exclui o conjunto de registros, ao contrário, deixa um conjunto de registros vazio. Para remover totalmente um conjunto de registros, consulte Excluir um conjunto de registros.

Da mesma forma para adicionar registros a um conjunto de registros, a sequência de operações para remover um conjunto de registros também pode ser redirecionada:

Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A | Remove-AzDnsRecordConfig -Ipv4Address "5.6.7.8" | Set-AzDnsRecordSet

Diferentes tipos de registro são suportados passando os parâmetros específicos do tipo apropriados para Remove-AzDnsRecordSet. Os parâmetros para cada tipo de registro são iguais para o cmdlet New-AzDnsRecordConfig, como mostrado em outros exemplos dos tipos de registro acima.

Modificar um conjunto de registros existente

As etapas para modificar um conjunto de registros existente são semelhantes às etapas realizadas ao adicionar ou remover os registros de um conjunto de registros:

  1. Recupere o conjunto de registros existente usando Get-AzDnsRecordSet.
  2. Modifique o objeto do conjunto de registros local:
    • adicionando ou removendo os registros
    • alterando os parâmetros dos registros existentes
    • alterando os metadados do conjunto de registros e a vida útil (TTL)
  3. Confirme as alterações usando o cmdlet Set-AzDnsRecordSet . Isso substitui o conjunto de registros existente no DNS do Azure pelo conjunto de registros especificado.

Ao usar o comando Set-AzDnsRecordSet, as verificações de Etag sã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.

Para atualizar um registro em um conjunto de registros existente

Neste exemplo, alteramos o endereço IP de um registro "A" existente:

$rs = Get-AzDnsRecordSet -name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Ipv4Address = "9.8.7.6"
Set-AzDnsRecordSet -RecordSet $rs

Para modificar um registro SOA

Não é possível adicionar nem remover registros do conjunto de registros SOA criado automaticamente no ápice da zona (-Name "@", incluindo as aspas). No entanto, é possível modificar qualquer um dos parâmetros no registro SOA (exceto o “Host”) e o TTL do conjunto de registros.

O exemplo a seguir mostra como alterar a propriedade Email do registro SOA:

$rs = Get-AzDnsRecordSet -Name "@" -RecordType SOA -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
$rs.Records[0].Email = "admin.contoso.com"
Set-AzDnsRecordSet -RecordSet $rs

Para modificar registros NS no apex da zona

O registro NS definido no apex da zona é criado automaticamente com cada zona DNS. Ele contém os nomes dos servidores de nome DNS do Azure atribuídos à zona.

Você pode adicionar mais servidores de nome a esse conjunto de registros NS para dar suporte à co-hospedagem de domínios com mais de um provedor DNS. Também é possível modificar o TTL e os metadados para esse conjunto de registros. No entanto, você não pode remover nem modificar os servidores de nome DNS do Azure previamente populados.

Essa restrição se aplica somente ao conjunto de registros NS no ápice da zona. Outros conjuntos de registros NS na sua zona (conforme utilizados para delegar zonas filho) podem ser modificados sem restrição.

O exemplo a seguir mostra como adicionar outro servidor de nome ao conjunto de registros NS no ápice da zona:

$rs = Get-AzDnsRecordSet -Name "@" -RecordType NS -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Add-AzDnsRecordConfig -RecordSet $rs -Nsdname ns1.myotherdnsprovider.com
Set-AzDnsRecordSet -RecordSet $rs

Para modificar os metadados do conjunto de registros

Os metadados do conjunto de registros podem ser usados para associar os dados específicos do aplicativo com cada conjunto de registros, como pares de chave-valor.

O exemplo a seguir mostra como modificar os metadados de um conjunto de registros existente:

# Get the record set
$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

# Add 'dept=finance' name-value pair
$rs.Metadata.Add('dept', 'finance') 

# Remove metadata item named 'environment'
$rs.Metadata.Remove('environment')  

# Commit changes
Set-AzDnsRecordSet -RecordSet $rs

Excluir um conjunto de registros

Os conjuntos de registros podem ser excluídos usando o cmdlet Remove-AzDnsRecordSet . Excluir um conjunto de registros também exclui todos os registros no conjunto de registros.

Observação

Não é possível excluir os conjuntos de registro SOA e NS no ápice da zona (-Name '@'). O DNS do Azure foi criado automaticamente quando a zona foi criada e é excluído automaticamente quando a zona é excluída.

O exemplo a seguir mostra como excluir um conjunto de registros. Neste exemplo, o nome do conjunto de registros, tipo, nome da zona e grupo de recursos são especificados explicitamente.

Remove-AzDnsRecordSet -Name "www" -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"

Em vez disso, o conjunto de registros pode ser especificado pelo nome e tipo, e a zona é especificada usando um objeto:

$zone = Get-AzDnsZone -Name "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -Name "www" -RecordType A -Zone $zone

Como uma terceira opção, o próprio conjunto de registros pode ser especificado usando um objeto do conjunto de registros:

$rs = Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup"
Remove-AzDnsRecordSet -RecordSet $rs

Quando você especifica o conjunto de registros a ser excluído usando um objeto do conjunto de registros, as verificações de Etag são usadas para garantir que as alterações simultâneas não sejam excluídas. Você pode usar o argumento -Overwrite opcional para omitir essas verificações.

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

Get-AzDnsRecordSet -Name www -RecordType A -ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" | Remove-AzDnsRecordSet

Prompts de confirmação

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

Cada cmdlet solicita confirmação caso a variável de preferência do PowerShell $ConfirmPreference tenha um valor Medium ou inferior. Como o valor padrão para $ConfirmPreference é High, esses prompts não são fornecidos ao usar as configurações padrão do PowerShell.

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 mais sobre as zonas e os registros no DNS do Azure.
Saiba como proteger seus registros e zonas ao usar o DNS do Azure.
Examine a documentação de referência do PowerShell do DNS do Azure.