Administración de conjuntos de registros y registros de DNS en Azure DNS mediante Azure PowerShell

En este artículo se muestra cómo administrar registros DNS para su zona DNS mediante Azure PowerShell. Los registros de DNS también se pueden administrar mediante la CLI de Azure multiplataforma o Azure Portal.

En los ejemplos de este artículo se supone que ya ha instalado Azure PowerShell, iniciado sesión y creado una zona DNS.

Nota:

Se recomienda usar el módulo Azure Az de PowerShell para interactuar con Azure. Consulte Instalación de Azure PowerShell para empezar. Para más información sobre cómo migrar al módulo Az de PowerShell, consulte Migración de Azure PowerShell de AzureRM a Az.

Introducción

Antes de crear registros DNS en Azure DNS, es necesario que comprenda cómo Azure DNS los organiza en conjuntos de registros DNS.

Nombres de registro

En DNS de Azure, los registros se especifican mediante el uso de nombres relativos. En un nombre de dominio completo (FQDN) se incluye el nombre de zona, mientras que uno relativo, no. Por ejemplo, el nombre de registro relativo www en la zona contoso.com proporciona el nombre de registro completo www.contoso.com.

Un registro de vértice es un registro DNS en la raíz (o vértice) de una zona DNS. Por ejemplo, en la zona DNS contoso.com, un registro de vértice también tiene el nombre completo contoso.com (que a veces se denomina dominio simple). Por convención, el nombre relativo \'\@\' se utiliza para representar registros de vértice.

Tipos de registro

Cada registro DNS tiene un nombre y un tipo. Los registros se organizan en distintos tipos según los datos que contengan. El tipo más común es un registro "A", que asigna un nombre a una dirección IPv4. Otro tipo común es un registro "MX", que asigna un nombre a un servidor de correo.

Azure DNS es compatible con todos los tipos de registro DNS comunes: A, AAAA, CAA, CNAME, MX, NS, PTR, SOA, SRV y TXT. Tenga en cuenta que los registros de SPF se representan mediante registros TXT.

Conjuntos de registros

En ocasiones, tendrá que crear más de un registro DNS con un nombre y un tipo concretos. Por ejemplo, supongamos que el sitio web 'www.contoso.com' se hospeda en dos direcciones IP diferentes. En este caso, se requieren dos registros A distintos, uno para cada dirección IP. Este es un ejemplo de un conjunto de registros:

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

Azure DNS administra todos los registros DNS con conjuntos de registros. Un conjunto de registros (también denominado conjunto de registros de recurso) es la colección de registros DNS de una zona con el mismo nombre y del mismo tipo. La mayoría de conjuntos de registros contienen un único registro. Sin embargo, es habitual encontrar ejemplos como el anterior, en el que un conjunto de registros contiene más de un registro.

Por ejemplo, supongamos que ya ha creado un registro "www" en la zona "contoso.com", que apunta a la dirección IP "134.170.185.46" (el primer registro anterior). Para crear el segundo registro se agregaría ese registro al conjunto de registros existente, en lugar de crear otro conjunto de registros.

Los tipos de registros SOA y CNAME se consideran excepciones. Los estándares DNS no permiten varios registros con el mismo nombre para estos tipos, por lo tanto, los conjuntos de estos registros solo pueden contener un único registro.

Para más información sobre los registros DNS en Azure DNS, consulte DNS zones and records (Zonas y registros DNS).

Creación de un nuevo registro DNS

Para crear un nuevo conjunto de registros, debe tener un nombre y un tipo diferentes a los registros existentes. Si el nuevo registro tiene el mismo nombre y tipo que un registro existente, tendrá que agregarlo al conjunto de registros existente.

Creación de registros "D" en un nuevo conjunto de registros

Los conjuntos de registros se crean mediante el cmdlet New-AzDnsRecordSet. Al crear un conjunto de registros, deberá especificar el nombre del conjunto de registros, la zona, el período de vida (TTL), el tipo de registro y los registros que se crearán.

Los parámetros para agregar registros a un conjunto de registros varían según el tipo de conjunto de registros. Por ejemplo, cuando se usa un conjunto de registros de tipo "A", deberá especificar la dirección IP mediante el parámetro -IPv4Address. Los distintos tipos de registro tendrán parámetros adicionales.

En el ejemplo siguiente se crea un conjunto de registros con el nombre relativo www en la zona DNS contoso.com. El nombre completo del conjunto de registros es www.contoso.com. El tipo de registro es "D" y el valor de TTL es de 3600 segundos. El conjunto de registros contiene un único registro con la dirección 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 crear un conjunto de registros en el "vértice" de una zona (en este caso, "contoso.com"), use el nombre del conjunto de registros \"\@\" (excluidas las comillas):

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

Si necesita crear un conjunto de registros que contenga más de un registro, primero cree una matriz local y agregue los registros, luego pase la matriz a New-AzDnsRecordSet de la forma siguiente:

$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

Se pueden usar metadatos del conjunto de registros para asociar datos específicos de la aplicación con cada conjunto de registros como pares clave-valor. En el ejemplo siguiente se muestra cómo crear un conjunto de registros con dos entradas de metadatos: "dept=finance" y "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" } 

Azure DNS también admite conjuntos de registros "vacíos" que pueden funcionar como marcador de posición para reservar un nombre DNS antes de crear registros DNS. Los conjuntos de registros vacíos son visibles en el panel de control de Azure DNS, pero aparecen en los servidores de nombres de Azure DNS. En el ejemplo siguiente se crea un conjunto de registros vacío:

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

Creación de registros de otros tipos

Después de haber visto de forma detallada como crear registros "A", en los siguientes ejemplos se muestra cómo crear registros de otros tipos compatibles con Azure DNS.

En cada caso, se muestra cómo crear un nuevo conjunto de registros que contiene un único registro. Los ejemplos anteriores para registros "A" se pueden adaptar para crear conjuntos de registros de otros tipos que contengan varios registros, con metadatos, o crear conjuntos de registros vacíos.

No hay ningún ejemplo para crear un conjunto de registros SOA, ya que los SOA se crean y eliminan con cada zona DNS. Los registros SOA no pueden crearse ni eliminarse por separado. Sin embargo, el registro SOA se puede modificar, como se muestra en un ejemplo más adelante.

Creación de un conjunto de registros AAAA con un único registro

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

Creación de un conjunto de registros CAA con un ú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") 

Creación de un conjunto de registros CNAME con un único registro

Nota:

Los estándares DNS no permiten registros CNAME en el vértice de una zona (-Name '@'), ni permiten conjuntos de registros que contengan más de un registro.

Para más información, consulte Registros CNAME.

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

Creación de un conjunto de registros MX con un único registro

En este ejemplo, se utiliza el nombre de conjunto de registros \"\@\" para crear el registro MX en el vértice de la zona (por ejemplo, "contoso.com").

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

Creación de un conjunto de registros NS con un único registro

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

Creación de un conjunto de registros PTR con un único registro

En este caso, "my-arpa-zone.com" representa la zona de búsqueda inversa ARPA que representa el intervalo IP. Cada registro PTR establecido en esta zona se corresponde con una dirección IP dentro de este intervalo IP. El nombre de registro "10" es el último octeto de la dirección IP dentro del intervalo IP que representa dicho registro.

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

Creación de un conjunto de registros SRV con un único registro

Al crear un conjunto de registros SRV, especifique el _servicio y el _protocolo en el nombre del conjunto de registros. No hay necesidad de incluir "@" en el nombre del conjunto de registros al crear un conjunto de registros SRV en el vértice de la 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") 

Crear un conjunto de registros TXT con un único registro

En el ejemplo siguiente se muestra cómo crear un registro TXT. Para más información sobre la longitud de cadena máxima admitida en 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") 

Recuperación de un conjunto de registros

Para recuperar un conjunto de registros existente, use Get-AzDnsRecordSet. Este cmdlet devuelve un objeto local que representa el conjunto de registros en Azure DNS.

Al igual que con New-AzDnsRecordSet, el nombre del conjunto de registros dado debe ser un nombre relativo, lo que significa que debe excluir el nombre de zona. También se debe especificar el tipo de registro y la zona que contiene el conjunto de registros.

En el ejemplo siguiente se muestra cómo recuperar un conjunto de registros. En este ejemplo, la zona se especifica mediante los parámetros -ZoneName y -ResourceGroupName.

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

En su lugar, también puede especificar la zona mediante un objeto de zona, que se pasa mediante el parámetro -Zone.

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

Enumeración de conjuntos de registros

También puede usar Get-AzDnsZone para mostrar conjuntos de registros de una zona y omitir uno de los parámetros -Name o -RecordType, o ambos.

En el ejemplo siguiente se devuelven todos los conjuntos de registros de la zona:

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

En el ejemplo siguiente se muestra cómo puede recuperar todos los conjuntos de registros de un tipo dado especificando el tipo de registro al omitir el nombre del conjunto de registros:

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

Para recuperar todos los conjuntos de registros con un nombre específico de todos los tipos de registros, debe recuperar todos los conjuntos de registros y luego filtrar los resultados:

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

En todos los ejemplos anteriores, la zona se puede especificar mediante los parámetros -ZoneName y -ResourceGroupName (como se muestra) o por medio de un objeto de zona:

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

Adición de un registro a un conjunto de registros existente

Para agregar un registro a un conjunto de registros existente, siga estos tres pasos:

  1. Obtenga el conjunto de registros existente.

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Agregue el nuevo registro al conjunto de registros local.

    Add-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Actualice los cambios para que se reflejen en el servicio Azure DNS.

    Set-AzDnsRecordSet -RecordSet $rs
    

Al usar Set-AzDnsRecordSet, se sustituye el conjunto de registros existente en Azure DNS (y todos los registros que contiene) por el conjunto de registros especificado. Se usan comprobaciones de ETag para garantizar que los cambios simultáneos no se sobrescriban. Puede usar el modificador -Overwrite opcional para suprimir estas comprobaciones.

Esta secuencia de operaciones también se puede canalizar, es decir, pasar el objeto de conjunto de registros mediante la canalización en lugar de como un parámetro.

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

Los ejemplos anteriores muestran cómo agregar un registro "A" a un conjunto de registros existente de tipo "A". Se usa una secuencia parecida de operaciones para agregar registros a conjunto de registros de otros tipos, reemplazando el parámetro -Ipv4Address de Add-AzDnsRecordConfig por otros parámetros específicos de cada tipo de registro. Los parámetros de cada tipo de registro son los mismos que para el cmdlet New-AzDnsRecordConfig, como se muestra en otros ejemplos de tipos de registros anteriormente.

Los conjuntos de registros de tipo "CNAME" o "SOA" no pueden contener más de un registro. Esta restricción surge de los estándares de DNS. No se trata de una limitación de Azure DNS.

Eliminación de un registro de un conjunto de registros existente

El proceso para quitar un registro de un conjunto de registros es similar al proceso para agregar un registro a un conjunto de registros existente:

  1. Obtenga el conjunto de registros existente.

    $rs = Get-AzDnsRecordSet -Name www –ZoneName "contoso.com" -ResourceGroupName "MyResourceGroup" -RecordType A
    
  2. Quite el registro del objeto del conjunto de registros local. Todos los parámetros del registro que se va a eliminar deben coincidir exactamente con los del registro existente.

    Remove-AzDnsRecordConfig -RecordSet $rs -Ipv4Address "5.6.7.8"
    
  3. Confirme el cambio al servicio Azure DNS. Use el modificador -Overwrite para suprimir las comprobaciones de ETag para cambios simultáneos.

    Set-AzDnsRecordSet -RecordSet $Rs
    

El uso de la secuencia anterior para quitar el último registro de un conjunto de registros no elimina el conjunto de registros, sino que deja un conjunto de registros vacío. Para quitar completamente un conjunto de registros, consulte Eliminación de un conjunto de registros.

Lo mismo que para agregar registros a un conjunto de registros, la secuencia de operaciones para quitar un conjunto de registros también se puede canalizar:

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

Se admiten diferentes tipos de registros pasando los parámetros adecuados específicos del tipo a Remove-AzDnsRecordSet. Los parámetros de cada tipo de registro son los mismos que para el cmdlet New-AzDnsRecordConfig, como se muestra en otros ejemplos de tipos de registros anteriormente.

Modificación de un conjunto de registros existente

Los pasos para modificar un conjunto de registros existente son parecidos a los que se realizan al agregar o quitar registros de un conjunto de registros:

  1. Recupere el conjunto de registros existente mediante Get-AzDnsRecordSet.
  2. Para modificar el objeto de conjunto de registros local:
    • Agregue o quite registros.
    • Cambie los parámetros de registros existentes.
    • Cambie los metadatos del conjunto de registros y el período de vida (TTL).
  3. Confirme los cambios mediante el cmdlet Set-AzDnsRecordSet . Esta acción reemplaza el conjunto de registros existente de Azure DNS por el conjunto de registros especificado.

Al usar el comando Set-AzDnsRecordSet, se usan las comprobaciones de ETag para garantizar que no se sobrescriben los cambios simultáneos. Puede usar el modificador -Overwrite opcional para suprimir estas comprobaciones.

Para actualizar un registro en un conjunto de registros existente

En este ejemplo, se cambiará la dirección IP de un 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 un registro SOA

No puede agregar ni quitar registros del conjunto de registros SOA creado automáticamente en el vértice de zona (-Name "@", comillas incluidas). Sin embargo, puede modificar cualquiera de los parámetros del registro SOA (excepto "Host") y del conjunto de registros TTL.

En el ejemplo siguiente se muestra cómo cambiar la propiedad Email del 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 los registros NS en el vértice de zona

El conjunto de registros NS en el vértice de zona se crea automáticamente con cada zona DNS. Este conjunto de registros contiene los nombres de los servidores de nombres de Azure DNS asignados a la zona.

Puede agregar más servidores de nombres a este conjunto de registros NS, para admitir dominios de hospedaje conjunto con más de un proveedor DNS. También puede modificar el TTL y los metadatos de este conjunto de registros. Sin embargo, no puede quitar ni modificar los servidores de nombres de Azure DNS rellenados previamente.

Esta restricción se aplica solo al conjunto de registros NS en el vértice de zona. Otros conjuntos de registros NS de su zona (como los que se usan para delegar zonas secundarias) se pueden modificar sin restricciones.

En el ejemplo siguiente se muestra cómo agregar otro servidor de nombres al conjunto de registros NS en el vértice de 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 los metadatos del conjunto de registros:

Se pueden usar metadatos del conjunto de registros para asociar datos específicos de la aplicación con cada conjunto de registros como pares clave-valor.

En el ejemplo siguiente se muestra cómo modificar los metadatos de un 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

Eliminación de un conjunto de registros

Los conjuntos de registros pueden eliminarse mediante el cmdlet Remove-AzDnsRecordSet . Al eliminar un conjunto de registros también se eliminan todos los registros que contiene.

Nota:

No se pueden eliminar los conjuntos de registros SOA y NS en el vértice de zona (-Name '@'). Los DNS de Azure se crean automáticamente cuando se genera la zona y se eliminan automáticamente cuando se elimina.

En el ejemplo siguiente se muestra cómo eliminar un conjunto de registros. En este ejemplo, el nombre del conjunto de registros, el tipo de conjunto de registros, el nombre de zona y el grupo de recursos se especifican de manera explícita.

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

En su lugar, el conjunto de registros se puede especificar por nombre y tipo, y la zona se puede especificar mediante un objeto:

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

Como tercera opción, el propio conjunto de registros se puede especificar mediante un objeto de conjunto de registros:

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

Cuando especifica que se elimine el conjunto de registros eliminar mediante un objeto de conjunto de registros, se usan comprobaciones de ETag para garantizar que no se eliminen los cambios simultáneos. Puede usar el modificador -Overwrite opcional para suprimir estas comprobaciones.

El objeto del conjunto de registros también puede canalizarse en lugar de pasarse como un parámetro:

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

Mensajes de confirmación

Los cmdlets New-AzDnsRecordSet, Set-AzDnsRecordSet y Remove-AzDnsRecordSet todos admiten mensajes de confirmación.

Cada cmdlet pide confirmación si la variable de preferencia de PowerShell $ConfirmPreference tiene un valor de Medium o inferior. Dado que el valor predeterminado de $ConfirmPreference es High, estos mensajes no aparecen cuando se usa la configuración predeterminada de PowerShell.

Puede invalidar el valor actual de $ConfirmPreference mediante el parámetro -Confirm. Si especifica -Confirm o -Confirm:$True, el cmdlet solicita confirmación antes de ejecutarse. Si especifica -Confirm:$False, el cmdlet no le pide la confirmación.

Para más información sobre -Confirm y $ConfirmPreference, consulte About Preference Variables (Acerca de las variables de preferencias).

Pasos siguientes

Más información sobre zonas y registros en Azure DNS.
Aprenda a proteger las zonas y los registros cuando se usa Azure DNS.
Revise la documentación de referencia de PowerShell para Azure DNS.