Partilhar via


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

Este artigo mostra como gerenciar registros DNS para sua zona DNS usando o Azure PowerShell. Os registros DNS também podem ser gerenciados usando a CLI do Azure entre plataformas ou o portal do Azure.

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

Nota

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

Introdução

Antes de criar registos DNS no DNS do Azure, terá primeiro de compreender como o DNS do Azure organiza os registos DNS em conjuntos de registos DNS.

Nomes de registo

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

Um registo apex é um registo DNS na raiz (ou apex) de uma zona DNS. Por exemplo, na zona contoso.comDNS, um registro do apex também tem o nome contoso.com totalmente qualificado (às vezes é chamado de domínio nu ). Por convenção, o nome relativo '@' é utilizado para representar registos apex.

Tipos de registo

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

O DNS do Azure suporta todos os tipos de registo DNS comuns: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV e TXT. Tenha em atenção que os registos SPF são representados utilizando registos TXT.

Conjuntos de registos

Por vezes, precisa de criar mais do que um registo DNS com um determinado nome e tipo. Por exemplo, suponha que o site “www.contoso.com” está alojado em dois endereços IP diferentes. O site necessita de dois registos A diferentes, um para cada endereço IP. Aqui está um exemplo de um conjunto de registos:

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

O DNS do Azure gere todos os registos DNS com conjuntos de registos. Um conjunto de registos (também conhecido como conjunto de registos de recurso) é uma coleção de registos DNS numa zona com o mesmo nome e do mesmo tipo. A maioria dos conjuntos de registos contêm um único registo. No entanto, os exemplos como o apresentado acima, no qual um conjunto um registos contém mais de um registo, não são invulgares.

Por exemplo, imagine que já criou um registo "www" A na zona "contoso.com", a apontar para o endereço IP "134.170.185.46" (o primeiro registo acima). Para criar o segundo registo, deverá adicionar esse registo para o conjunto de registos existente, em vez de criar um conjunto de registos adicional.

Os tipos de registos SOA e CNAME são exceções. As normas DNS não permitirem vários registos com o mesmo nome para estes tipos, por conseguinte, estes conjuntos de registos só podem conter um único registo.

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

Criar um novo registo DNS

Para criar um novo conjunto de registros, ele precisa ter um nome e um tipo diferentes de quaisquer registros existentes. Se o novo registo tiver o mesmo nome e tipo que um registo existente, terá de adicioná-lo ao conjunto de registos existente.

Criar registos 'A' num novo conjunto de registos

Pode criar conjuntos de registos com o cmdlet New-AzDnsRecordSet. Ao criar um conjunto de registros, você precisa especificar o nome do conjunto de registros, a zona, o tempo de vida (TTL), o tipo de registro e os registros a serem criados.

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

O exemplo a seguir cria um conjunto de registros com o nome www relativo na zona contoso.comDNS . O nome totalmente qualificado do conjunto de registros é www.contoso.com. O tipo de registo é 'A' e o TTL é de 3600 segundos. O conjunto de registos contém um único registo, 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 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 crie uma matriz local e adicione os registros e, em seguida, passe a matriz para New-AzDnsRecordSet a seguinte maneira:

$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 dados específicos do aplicativo a cada conjunto de registros, como pares 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 dá suporte a conjuntos de registros 'vazios', que podem atuar como um espaço reservado para reservar um nome DNS antes de criar registros DNS. Os conjuntos de registros vazios são visíveis no plano de controle DNS do Azure, mas aparecem nos servidores de nomes 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 registos de outros tipos

Tendo visto em detalhes como criar registros 'A', os exemplos a seguir mostram como criar registros de outros tipos de registro suportados pelo DNS do Azure.

Em cada caso, mostramos como criar um conjunto de registros contendo um único registro. Os exemplos anteriores de registos «A» podem ser adaptados para criar conjuntos de registos de outros tipos que contenham vários registos, com metadados, ou para criar conjuntos de registos vazios.

Não há nenhum exemplo para criar um conjunto de registros SOA, já que 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, a SOA pode ser modificada, como mostrado em um exemplo posterior.

Criar um conjunto de registos AAAA com um único registo

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 registos CNAME com um único registo

Nota

Os padrões DNS não permitem registros CNAME no ápice de uma zona (-Name '@'), nem permitem conjuntos de registros contendo 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 registos MX com um único registo

Neste exemplo, usamos o nome do conjunto de registros '@' para criar um registro MX no ápice da zona (neste 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 registos NS com um único registo

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 registos PTR com um único registo

Neste caso, 'my-arpa-zone.com' representa a zona de pesquisa inversa ARPA que representa o seu intervalo de IP. Cada conjunto de registos PTR nesta zona corresponde a um endereço IP neste intervalo de IPs. O nome de registo «10» é o último octeto do endereço IP dentro deste intervalo de IP representado por este registo.

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 registos SRV com um único registo

Ao criar um conjunto de registros SRV, especifique a _service e a _protocol no nome do conjunto de registros. Não há necessidade de incluir '@' no nome do conjunto de registros ao criar um conjunto de registros SRV 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 único registro

O exemplo a seguir mostra como criar um registro TXT. Para obter mais informações sobre o comprimento máximo de cadeia de caracteres suportado em 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 registos

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

Assim como no New-AzDnsRecordSet, o nome do conjunto de registros fornecido deve ser um nome relativo , o que significa 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 -ZoneName parâmetros 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 -Zone parâmetro.

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

Listar conjuntos de registros

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

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

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

O exemplo a seguir mostra como você pode recuperar todos os conjuntos de registros 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 registros com um determinado nome, entre tipos de registro, você precisa recuperar todos os conjuntos de registros e, 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 -ZoneName parâmetros e -ResourceGroupName(conforme mostrado) ou especificando um objeto zone:

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

Adicionar um registo a um conjunto de registos existente

Para adicionar um registo a um conjunto de registos existente, siga os seguintes três passos:

  1. Obter o conjunto de registos 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 reflitam no serviço DNS do Azure.

    Set-AzDnsRecordSet -RecordSet $rs
    

Usar Set-AzDnsRecordSet substitui 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 a opção opcional -Overwrite para suprimir essas verificações.

Essa sequência de operações também pode ser canalizada, o que significa que você passa o objeto do conjunto de registros usando o pipe em vez de passá-lo como 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 registo «A» a um conjunto de registos existente do tipo «A». Uma sequência semelhante de operações é usada para adicionar registros a conjuntos de registros de outros tipos, substituindo o -Ipv4Address parâmetro de por outros parâmetros específicos para cada tipo de Add-AzDnsRecordConfig registro. Os parâmetros para cada tipo de registro são os mesmos do New-AzDnsRecordConfig cmdlet, conforme mostrado em outros exemplos de tipo de registro acima.

Os conjuntos de registos do tipo «CNAME» ou «SOA» não podem conter mais do que um registo. Esta restrição decorre dos padrões DNS. Não é uma limitação do DNS do Azure.

Remover um registo de um conjunto de registos 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 registos 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 alteração de volta para o serviço DNS do Azure. Use a opção opcional -Overwrite para suprimir as verificações Etag para 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, mas deixa um conjunto de registros vazio. Para remover totalmente um conjunto de registros, consulte Excluir um conjunto de registros.

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

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 os mesmos do New-AzDnsRecordConfig cmdlet, conforme mostrado em outros exemplos de tipo de registro acima.

Modificar um conjunto de registros existente

As etapas para modificar um conjunto de registros existente são semelhantes às etapas que você executa ao adicionar ou remover 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 da seguinte forma:
    • Adicionar ou remover registos
    • Alterar os parâmetros dos registos existentes
    • Alterando os metadados do conjunto de registros e o tempo de vida (TTL)
  3. Confirme suas alterações usando o Set-AzDnsRecordSet cmdlet. Isso substitui o conjunto de registros existente no DNS do Azure pelo conjunto de registros especificado.

Quando você usa o comando, as Set-AzDnsRecordSet 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.

Para atualizar um registro em um conjunto de registros existente

Neste exemplo, alteramos o endereço IP de um registo '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 ou remover registros do conjunto de registros SOA criados automaticamente no ápice da zona (-Name "@"incluindo aspas). No entanto, você pode modificar qualquer um dos parâmetros dentro do registro SOA (exceto "Host") e do conjunto de registros TTL.

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 ápice da zona

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

Você pode adicionar mais servidores de nomes a esse conjunto de registros NS, para oferecer suporte a domínios de cohospedagem com mais de um provedor DNS. Você também pode modificar o TTL e os metadados desse conjunto de registros. No entanto, não é possível remover ou modificar os servidores de nomes DNS do Azure pré-preenchidos.

Esta restrição aplica-se apenas ao registo NS definido no ápice da zona. Outros conjuntos de registros NS em sua zona (como usados para delegar zonas filhas) podem ser modificados sem restrições.

O exemplo a seguir mostra como adicionar outro servidor de nomes 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 metadados do conjunto de registros

Os metadados do conjunto de registros podem ser usados para associar dados específicos do aplicativo a cada conjunto de registros, como pares 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 Remove-AzDnsRecordSet cmdlet. A exclusão de um conjunto de registros também exclui todos os registros dentro do conjunto de registros.

Nota

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

O exemplo a seguir mostra como excluir um conjunto de registros. Neste exemplo, o nome do conjunto de registros, o tipo de conjunto de registros, o nome da zona e o 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 por 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 terceira opção, o próprio conjunto de registros pode ser especificado usando um objeto de 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 de 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 a opção opcional -Overwrite para suprimir essas verificações.

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

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

Pedidos de confirmação

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

Cada cmdlet solicita confirmação se a $ConfirmPreference variável de preferência do PowerShell tem um valor igual 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.

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