Inicio rápido: Creación de una instancia de Azure DNS Private Resolver mediante Azure PowerShell

Este artículo le guiará por los pasos necesarios para crear una zona y un registro DNS privados con Azure PowerShell. Si lo prefiere, puede completar este inicio rápido mediante Azure Portal.

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.

Azure DNS Private Resolver es un nuevo servicio que permite consultar zonas privadas de Azure DNS desde un entorno local y viceversa sin implementar servidores DNS basados en máquinas virtuales. Para más información, incluidas las ventajas, las funcionalidades y la disponibilidad regional, consulte Qué es Azure DNS Private Resolver.

En la siguiente ilustración, se resume la configuración usada en este artículo:

Figura conceptual que muestra los componentes del resolver privado.

Requisitos previos

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

En este artículo se supone que tiene instalado el módulo Az de Azure PowerShell.

Instalación del módulo Az.DnsResolver de PowerShell

Nota

Si instaló previamente el módulo Az.DnsResolver para la evaluación durante la versión preliminar privada, puede anular el registro y eliminar el PSRepository local que se creó. A continuación, instale la versión más reciente del módulo Az.DnsResolver siguiendo los pasos que se proporcionan en este artículo.

Instale el módulo Az.DnsResolver.

Install-Module Az.DnsResolver

Confirme que se ha instalado correctamente. La versión actual de este módulo es 0.2.1.

Get-InstalledModule -Name Az.DnsResolver

Establecimiento del contexto de la suscripción en Azure PowerShell

Conecte PowerShell a la nube de Azure.

Connect-AzAccount -Environment AzureCloud

Si hay varias suscripciones, se usará el primer identificador de suscripción. Para especificar un identificador de suscripción diferente, use el siguiente comando.

Select-AzSubscription -SubscriptionObject (Get-AzSubscription -SubscriptionId <your-sub-id>)

Registre el espacio de nombres del proveedor Microsoft.Network de la cuenta.

Para poder usar los servicios Microsoft.Network con su suscripción de Azure, debe registrar el espacio de nombres Microsoft.Network:

Use el siguiente comando para registrar el espacio de nombres Microsoft.Network.

Register-AzResourceProvider -ProviderNamespace Microsoft.Network

Cree una instancia de DNS Resolver.

Importante

Los pasos para comprobar o confirmar que los recursos se crearon correctamente no son opcionales. No omita estos pasos. Los pasos rellenan variables que se pueden usar en procedimientos posteriores.

Cree un grupo de recursos para hospedar los recursos. El grupo de recursos debe estar en una región admitida. En este ejemplo, la ubicación es westcentralus.

New-AzResourceGroup -Name myresourcegroup -Location westcentralus

Cree una red virtual en el grupo de recursos que ha creado.

New-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "10.0.0.0/8"

Cree una instancia de DNS Resolver en la red virtual que ha creado.

New-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup -Location westcentralus -VirtualNetworkId "/subscriptions/<your subs id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet"

Compruebe que la instancia se creó correctamente y que el estado es Conectado (opcional). En la salida, dnsResolverState es Conectado.

$dnsResolver = Get-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup
$dnsResolver.ToJsonString()

Creación de un punto de conexión de entrada de DNS Resolver

Creación de una subred en la red virtual

Cree una subred en la red virtual (Microsoft.Network/virtualNetworks/subnets) desde el espacio de direcciones IP que asignó anteriormente. La subred debe tener un tamaño /28 como mínimo (16 direcciones IP).

$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-inbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.0.0.0/28"
$virtualNetwork | Set-AzVirtualNetwork

Creación del punto de conexión entrante

Cree un punto de conexión de entrada para habilitar la resolución de nombres desde el entorno local u otra ubicación privada mediante una dirección IP que forma parte del espacio de direcciones de la red virtual privada.

Sugerencia

Con PowerShell, puede especificar la dirección IP del punto de conexión de entrada para que sea dinámica o estática.
Si la dirección IP del punto de conexión se especifica como dinámica, la dirección no cambia a menos que el punto de conexión se elimine y se vuelva a aprovisionar. Por lo general, la misma dirección IP se asignará de nuevo durante el reaprovisionamiento.
Si la dirección IP del punto de conexión es estática, se puede especificar y reutilizar si se vuelve a aprovisionar el punto de conexión. La dirección IP que elija no puede ser una dirección IP reservada en la subred.

Los siguientes comandos aprovisionan una dirección IP dinámica:

$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAllocationMethod Dynamic -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig

Use los comandos siguientes para especificar una dirección IP estática. No use ambos conjuntos de comandos dinámicos y estáticos.

Debe especificar una dirección IP en la subred que se creó anteriormente. La dirección IP que elija no puede ser una dirección IP reservada en la subred.

Los siguientes comandos aprovisionan una dirección IP estática:

$ipconfig = New-AzDnsResolverIPConfigurationObject -PrivateIPAddress 10.0.0.4 -PrivateIPAllocationMethod Static -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-inbound
New-AzDnsResolverInboundEndpoint -DnsResolverName mydnsresolver -Name myinboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -IpConfiguration $ipconfig

Confirmación del punto de conexión de entrada

Confirme que se creó el punto de conexión de entrada y que asignó una dirección IP dentro de la subred asignada.

$inboundEndpoint = Get-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$inboundEndpoint.ToJsonString()

Creación de un punto de conexión de salida de DNS Resolver

Creación de una subred en la red virtual

Cree una subred en la red virtual (Microsoft.Network/virtualNetworks/subnets) desde el espacio de direcciones IP que asignó anteriormente. Esta subred debe ser diferente de la subred de entrada (snet-inbound). La subred de salida también debe tener un tamaño /28 como mínimo (16 direcciones IP).

$virtualNetwork = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup
Add-AzVirtualNetworkSubnetConfig -Name snet-outbound -VirtualNetwork $virtualNetwork -AddressPrefix "10.1.1.0/28"
$virtualNetwork | Set-AzVirtualNetwork

Creación del punto de conexión de salida

Un punto de conexión de salida habilita la resolución de nombres de reenvío condicional de Azure a servidores DNS externos.

New-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -Name myoutboundendpoint -ResourceGroupName myresourcegroup -Location westcentralus -SubnetId /subscriptions/<your sub id>/resourceGroups/myresourcegroup/providers/Microsoft.Network/virtualNetworks/myvnet/subnets/snet-outbound

Confirmación del punto de conexión de salida

Confirme que se creó el punto de conexión de salida y que asignó una dirección IP dentro de la subred asignada.

$outboundEndpoint = Get-AzDnsResolverOutboundEndpoint -Name myoutboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup
$outboundEndpoint.ToJsonString()

Creación del conjunto de reglas de reenvío de DNS Resolver

Cree un conjunto de reglas de reenvío de DNS para el punto de conexión de salida que ha creado.

New-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup -DnsResolverOutboundEndpoint $outboundendpoint -Location westcentralus

Confirmación del conjunto de reglas de reenvío de DNS

Confirme que se creó el conjunto de reglas de reenvío.

$dnsForwardingRuleset = Get-AzDnsForwardingRuleset -Name myruleset -ResourceGroupName myresourcegroup
$dnsForwardingRuleset.ToJsonString()

Los vínculos de red virtual habilitan la resolución de nombres para las redes virtuales vinculadas a un punto de conexión de salida con un conjunto de reglas de reenvío de DNS.

$vnet = Get-AzVirtualNetwork -Name myvnet -ResourceGroupName myresourcegroup 
$vnetlink = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink" -VirtualNetworkId $vnet.Id -SubscriptionId <your sub id>

Confirme que el vínculo de red virtual se ha creado.

$virtualNetworkLink = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup 
$virtualNetworkLink.ToJsonString()

Cree una segunda red virtual para simular un entorno local u otro entorno.

$vnet2 = New-AzVirtualNetwork -Name myvnet2 -ResourceGroupName myresourcegroup -Location westcentralus -AddressPrefix "12.0.0.0/8"
$vnetlink2 = New-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup -VirtualNetworkLinkName "vnetlink2" -VirtualNetworkId $vnet2.Id -SubscriptionId <your sub id>

Confirmación de la segunda red virtual

Confirme que la segunda red virtual se ha creado.

$virtualNetworkLink2 = Get-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup 
$virtualNetworkLink2.ToJsonString()

Creación de reglas de reenvío

Cree una regla de reenvío para un conjunto de reglas en uno o varios servidores DNS de destino. Debe especificar el nombre de dominio completo (FQDN) con un punto final. El cmdlet New-AzDnsResolverTargetDnsServerObject establece el puerto predeterminado como 53, pero también puede especificar un puerto único.

$targetDNS1 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.2 -Port 53 
$targetDNS2 = New-AzDnsResolverTargetDnsServerObject -IPAddress 192.168.1.3 -Port 53
$targetDNS3 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.0.0.4 -Port 53
$targetDNS4 = New-AzDnsResolverTargetDnsServerObject -IPAddress 10.5.5.5 -Port 53
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Internal" -DomainName "internal.contoso.com." -ForwardingRuleState "Enabled" -TargetDnsServer @($targetDNS1,$targetDNS2)
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "AzurePrivate" -DomainName "azure.contoso.com" -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS3
$forwardingrule = New-AzDnsForwardingRulesetForwardingRule -ResourceGroupName myresourcegroup -DnsForwardingRulesetName myruleset -Name "Wildcard" -DomainName "." -ForwardingRuleState "Enabled" -TargetDnsServer $targetDNS4

En este ejemplo:

  • 10.0.0.4 es el punto de conexión entrante del solucionador.
  • 192.168.1.2 y 192.168.1.3 son servidores DNS locales.
  • 10.5.5.5 es un servicio DNS protector.

Importante

Las reglas que se muestran en este inicio rápido son ejemplos de reglas que se pueden usar para escenarios específicos. No se requiere ninguna de las reglas de reenvío descritas en este artículo. Tenga cuidado de probar las reglas de reenvío y asegurarse de que no provocan problemas de resolución de DNS.

Si incluye una regla de caracteres comodín en el conjunto de reglas, asegúrese de que el servicio DNS de destino pueda resolver nombres DNS públicos. Algunos servicios de Azure tienen dependencias en la resolución de nombres públicos.

Prueba de la instancia de DNS Resolver

Ahora debería poder enviar tráfico DNS a la instancia de DNS Resolver y resolver registros en función de los conjuntos de reglas de reenvío, entre los que se incluyen:

  • Zonas privadas de Azure DNS vinculadas a la red virtual donde se implementa la resolución.
  • Zonas DNS en el espacio de nombres DNS de Internet público.
  • Zonas DNS privadas que se alojan en las instalaciones.

Eliminación de una instancia de DNS Resolver

Para eliminar la instancia de DNS Resolver, los puntos de conexión de entrada de recursos creados en ella deben eliminarse primero. Una vez eliminados los puntos de conexión de entrada, se puede eliminar la instancia primaria de DNS Resolver.

Eliminación del punto de conexión de entrada

Remove-AzDnsResolverInboundEndpoint -Name myinboundendpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup 
Remove-AzDnsForwardingRulesetVirtualNetworkLink -DnsForwardingRulesetName $dnsForwardingRuleset.Name -Name vnetlink -ResourceGroupName myresourcegroup

Eliminación del conjunto de reglas de reenvío de DNS

Remove-AzDnsForwardingRuleset -Name $dnsForwardingRuleset.Name -ResourceGroupName myresourcegroup

Eliminación del punto de conexión de salida

Remove-AzDnsResolverOutboundEndpoint -DnsResolverName mydnsresolver -ResourceGroupName myresourcegroup -Name myoutboundendpoint

Eliminación de la instancia de DNS Resolver

Remove-AzDnsResolver -Name mydnsresolver -ResourceGroupName myresourcegroup

Pasos siguientes