Compartir vía


Cómo administrar zonas DNS con PowerShell

En este artículo se muestra cómo administrar sus zonas DNS mediante Azure PowerShell. También se pueden administrar las zonas DNS mediante la CLI de Azure multiplataforma o Azure Portal.

Esta guía trata específicamente con las zonas DNS públicas. Para obtener información acerca del uso de Azure PowerShell para administrar zonas privadas en Azure DNS, consulte Get started with Azure DNS Private Zones using Azure CLI 2.0 (Introducción a Azure DNS Private Zones con Azure PowerShell).

Una zona DNS se usa para hospedar los registros DNS de un dominio concreto. Para iniciar el hospedaje de su dominio en DNS de Azure, debe crear una zona DNS para ese nombre de dominio. Cada registro DNS del dominio se crea luego en esta zona DNS.

Por ejemplo, puede que el dominio "contoso.com" contenga varios registros DNS, como "mail.contoso.com" (para un servidor de correo) y "www.contoso.com" (para un sitio web).

Al crear una zona DNS de Azure DNS:

  • El nombre de la zona debe ser único en el grupo de recursos y la zona no debe existir aún. De lo contrario, la operación presentará un error.
  • El mismo nombre de zona podrá reutilizarse en otro grupo de recursos o en otra suscripción de Azure.
  • Cuando varias zonas comparten el mismo nombre, se asigna a cada instancia diferentes direcciones del servidor. Solo se puede configurar un único conjunto de direcciones con el registrador de nombres de dominio.

Nota:

No tiene que poseer un nombre de dominio para crear una zona DNS con dicho nombre de dominio en DNS de Azure. Sin embargo, es necesario ser propietario del dominio para configurar los servidores de nombres en DNS de Azure como los servidores de nombres correctos para el nombre de dominio con el registrador de nombres de dominio.

Para más información, vea Delegación de un dominio en DNS de Azure.

Configuración de Azure PowerShell para Azure DNS

Antes de empezar

Importante

El uso de esta característica de Azure desde PowerShell requiere que tenga el módulo AzureRM instalado. Se trata de un módulo anterior que solo está disponible para Windows PowerShell 5.1 que ya no obtiene nuevas características. Los módulos Az y AzureRMno son compatibles cuando se instalan para las mismas versiones de PowerShell. Si necesita ambas versiones:

  1. Desinstale el módulo Az desde una sesión de PowerShell 5.1.
  2. Instale el módulo AzureRM desde una sesión de PowerShell 5.1.
  3. Descargue e instale PowerShell Core 6.x o posterior.
  4. Instale el módulo Az en una sesión de PowerShell Core.

Antes de comenzar con la configuración, compruebe que dispone de los elementos siguientes.

Inicio de sesión en la cuenta de Azure.

Abre la consola de PowerShell y conéctate a tu cuenta. Para obtener más información, consulte Inicio de sesión con Azure PowerShell.

Connect-AzAccount

Selección de la suscripción

Compruebe las suscripciones para la cuenta.

Get-AzSubscription

Elección de la suscripción de Azure que se va a usar.

Select-AzSubscription -SubscriptionName "your_subscription_name"

Crear un grupo de recursos

Azure Resource Manager requiere que todos los grupos de recursos especifiquen una ubicación. Esta ubicación se utiliza como ubicación predeterminada para los recursos de ese grupo de recursos. Sin embargo, puesto que todos los recursos DNS son globales y no regionales, la elección de la ubicación del grupo de recursos no incide en DNS de Azure.

Puede omitir este paso si utiliza un grupo de recursos existente.

New-AzResourceGroup -Name MyDNSResourceGroup -location "West US"

Creación de una zona DNS

Una zona DNS se crea mediante el cmdlet New-AzDnsZone .

En el ejemplo siguiente, se crea una zona DNS llamada contoso.com en el grupo de recursos MyDNSResourceGroup:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

En el ejemplo siguiente se muestra cómo crear una zona DNS con dos etiquetas Azure Resource Manager, project = demo y env = test:

New-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Recuperación de una zona DNS

Para recuperar una zona DNS, use el cmdlet Get-AzDnsZone . Esta operación devuelve un objeto de la zona DNS correspondiente a una zona existente en DNS de Azure. El objeto contiene datos sobre la zona (por ejemplo, el número de conjuntos de registros), pero no contiene los conjuntos de registros (consulte Get-AzDnsRecordSet).

Get-AzDnsZone -Name contoso.com –ResourceGroupName MyDNSResourceGroup

Name                  : contoso.com
ResourceGroupName     : myresourcegroup
Etag                  : 00000003-0000-0000-8ec2-f4879750d201
Tags                  : {project, env}
NameServers           : {ns1-01.azure-dns.com., ns2-01.azure-dns.net., ns3-01.azure-dns.org.,
                        ns4-01.azure-dns.info.}
NumberOfRecordSets    : 2
MaxNumberOfRecordSets : 5000

Enumeración de zonas DNS

Si se omite el nombre de la zona de Get-AzDnsZone, puede enumerar todas las zonas en un grupo de recursos. Esta operación devuelve una matriz de objetos de la zona.

$zoneList = Get-AzDnsZone -ResourceGroupName MyDNSResourceGroup
$zoneList

Si se omite tanto el nombre de zona como el nombre del grupo de recursos de Get-AzDnsZone, puede enumerar todas las zonas de la suscripción de Azure.

$zoneList = Get-AzDnsZone
$zoneList

Actualización de una zona DNS

Los cambios en los recursos de una zona DNS se pueden realizar mediante Set-AzDnsZone. Este cmdlet no actualiza ninguno de los conjuntos de registros de DNS de la zona (consulte Administración de registros DNS). Solo se utiliza para actualizar las propiedades de los recursos de la zona. Las propiedades de zona que se pueden escribir están actualmente limitadas a las "etiquetas" Azure Resource Manager para el recurso de la zona.

Utilice una de las dos opciones siguientes para actualizar una zona DNS:

Especificar la zona con la utilización del nombre de zona y el grupo de recursos

Este método reemplaza las etiquetas de zona existentes con los valores especificados.

Set-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup -Tag @{ project="demo"; env="test" }

Especificar la zona utilizando un objeto $zone

Este método recupera el objeto de zona existente, modifica las etiquetas y, a continuación, confirma los cambios. De este modo, se pueden conservar las etiquetas existentes.

# Get the zone object
$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

# Remove an existing tag
$zone.Tags.Remove("project")

# Add a new tag
$zone.Tags.Add("status","approved")

# Commit changes
Set-AzDnsZone -Zone $zone

Al usar Set-AzDnsZone con un objeto $zone, 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.

Eliminación de una zona DNS

Las zonas DNS se pueden eliminar mediante el cmdlet Remove-AzDnsZone.

Nota:

Si se elimina una zona DNS, también se eliminan todos los registros DNS dentro de la zona. No se puede deshacer esta operación. Si la zona DNS está en uso, los servicios con la zona provocarán un error cuando se elimina la zona.

Para protegerse contra la eliminación accidental de zona, consulte Proteger registros y zonas DNS.

Utilice una de las dos opciones siguientes para eliminar una zona DNS:

Especificar la zona con la utilización del nombre de zona y el nombre del grupo de recursos

Remove-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup

Especificar la zona utilizando un objeto $zone

Puede especificar la zona que desee eliminar mediante un objeto $zone devuelto por Get-AzDnsZone.

$zone = Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup
Remove-AzDnsZone -Zone $zone

También se puede canalizar el objeto de la zona en lugar de pasarlo como parámetro:

Get-AzDnsZone -Name contoso.com -ResourceGroupName MyDNSResourceGroup | Remove-AzDnsZone

Como con Set-AzDnsZone, especificar la zona usando un objeto $zone permite realizar las comprobaciones de ETag para asegurarse de que no se eliminen los cambios simultáneos. Use el modificador -Overwrite para suprimir estas comprobaciones.

Mensajes de confirmación

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

Ambos New-AzDnsZone y Set-AzDnsZone piden confirmación si la variable de preferencia de PowerShell $ConfirmPreference tiene un valor de Medium o inferior. Dado que la eliminación de una zona DNS puede provocar condiciones no deseadas, el cmdlet Remove-AzDnsZone pide confirmación si la variable $ConfirmPreference de PowerShell tiene cualquier valor distinto de None.

Puesto que el valor predeterminado para $ConfirmPreference es High, solo Remove-AzDnsZone pide confirmación de forma predeterminada.

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

En esta guía se explica cómo administrar conjuntos de registros y registros en la zona DNS.
Aprenda a cómo delegar el dominio a Azure DNS.
Revise la documentación de referencia de PowerShell para Azure DNS.