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 totalmente 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.com
de registro totalmente qualificado.
Um registo apex é um registo DNS na raiz (ou apex) de uma zona DNS. Por exemplo, na zona contoso.com
DNS, 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.
Há suporte para tipos de registro adicionais se a zona for assinada com DNSSEC (DNS Security Extensions), como registros de recursos DS (Delegation Signer) e TLSA (Transport Layer Security Authentication).
Os tipos de registro de recursos DNSSEC, como DNSKEY, RRSIG e NSEC3, são adicionados automaticamente quando uma zona é assinada com DNSSEC. Esses tipos de registros de recursos DNSSEC não podem ser criados ou modificados após a assinatura da zona.
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 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 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, exemplos como o acima, em que um conjunto de registros contém mais de um registro, não são incomuns.
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.com
DNS . 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:
Obter o conjunto de registos existente
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
Adicione o novo registro ao conjunto de registros local.
Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
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:
Obter o conjunto de registos existente
$rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
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"
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:
- Recupere o conjunto de registros existente usando
Get-AzDnsRecordSet
. - 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)
- 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.