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:
Obter o conjunto de registros 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 sejam refletidas no serviço de 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 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:
Obter o conjunto de registros 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 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:
- Recupere o conjunto de registros existente usando
Get-AzDnsRecordSet
. - 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)
- 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.