Hace tiempo atrás, cuando necesitábamos resolver el nombre de alguna de nuestras máquinas en Microsoft Azure era necesario montar una máquina virtual con el rol de DNS para que hiciera el trabajo por nosotros. Desde el mes de Marzo tenemos en preview un nuevo servicio llamado Azure DNS que te permite tenerlo como servicio, evitando así tener una máquina más que mantener y gestionar.
En este post voy a mostrarte cómo utilizar Azure DNS en tu red privada virtual.
Creación de la red virtual y Azure DNS
Debido a que el servicio todavía está en preview alguna de las opciones sólo están disponibles a través de PowerShell. Por suerte, tenemos Azure Cloud Shell desde el propio portal de Azure que nos hace la vida más fácil, ya que tiene todo lo necesario para trabajar. Abrimos un terminal de Cloud Shell desde el portal de Azure y registramos el provider Microsoft.Network si todavía no lo habíamos hecho.
Register-AzureRmResourceProvider -ProviderNamespace Microsoft.Network
A día de hoy no es posible asociar virtual networks que contengan recursos asociados, por lo que vamos a generar una nueva a modo de ejemplo:
- Crea una virtual network a través del portal.
- Creamos el DNS Zone y le pasamos el id de la virtual network que hemos generado anteriormente:
$vnet = Get-AzureRmVirtualNetwork -Name Azure-DNS-Vnet -ResourceGroupName Azure-DNS-Demos New-AzureRmDnsZone -Name internal.returngis.net -ResourceGroupName Azure-DNS-Demos -ZoneType Private -RegistrationVirtualNetworkId @($vnet.Id)
Hay que especificar el ZoneType Private ya que sino por defecto la creará en tipo público.
El resultado debería de ser el siguiente:
Creación de los registros en Azure DNS
Antes de comprobar que Azure DNS funciona correctamente crea dos máquinas virtuales dentro de la red virtual.
Una vez creadas, genera un registro del tipo A apuntando a su IP privada. Esta operación puedes hacerla desde el portal:
o si prefieres con PowerShell:
New-AzureRmDnsRecordSet -Name db -RecordType A -ZoneName internal.returngis.net -ResourceGroupName Azure-DNS-Demos -Ttl 600 -DnsRecords (New-AzureRmDnsRecordConfig -IPv4Address "10.0.0.5")
Este será el resultado:
Para comprobar que todo funciona correctamente, accede a una de las dos máquinas y haz un nslookup del nombre asignado en Azure DNS de la otra, con el fin de comprobar que devuelve la IP esperada:
Por otro lado, puedes instalar IIS en una de las máquinas y comprobar que es accesible a través del nombre. Puedes hacerlo de forma sencilla con el siguiente comando:
Set-AzureRmVMExtension `
-ResourceGroupName Azure-DNS-Demos `
-ExtensionName IIS `
-VMName web-server `
-Publisher Microsoft.Compute `
-ExtensionType CustomScriptExtension `
-TypeHandlerVersion 1.4 `
-SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
-Location "North Europe"
¡Saludos!