La resolución de nombres en Microsoft Azure

La resolución de nombres dentro de una red puede ser una pieza muy importante, sobre todo cuando la asignación de IPs se realiza a través de un DHCP. La plataforma Microsoft Azure nos provee de su propio servidor DNS, el cual nos permite localizar máquinas específicas de nuestra suscripción. En PaaS no tiene mucho sentido, ya que el nombre de las máquinas es aleatorio y la forma de trabajar también es diferente, pero en IaaS elegimos el nombre de cada una de ellas en el momento de la creación, por lo que puede ser útil para alcanzar dicha máquina.

Cuando trabajas con Virtual Networks en Azure tienes dos opciones: Hacer uso del DNS que proporciona la plataforma o bien agregar tu propio servidor DNS para que resuelva los nombres. En el primer caso, es necesario tener las siguientes consideraciones:

1. Cuando creamos las máquinas virtuales, siempre se nos pide que indiquemos el cloud service donde queremos alojarlas. Por defecto está seleccionada siempre la creación de uno nuevo:

Virtual Machine Configuration

Este cloud service básicamente es un contenedor donde se alojan las VMs virtuales y, como se puede ver en la imagen, nos proporciona un DNS público sobre el que trabajar. Si quisiéramos que distintas máquinas de nuestra red virtual se vieran entre sí, utilizando el servidor DNS de la plataforma, es necesario que compartan el mismo cloud service para que el servidor DNS pueda resolver el nombre. Incluso si dos máquinas están en la misma subnet pero en diferentes cloud services, el servidor DNS que provee la plataforma no será capaz de resolverlo, ya que se encuentran en dos espacios DNS diferentes.

Ejemplo: tengo dos máquinas dentro de Azure-FrontEnd llamadas gisazure01 y gisazure07 pero cada una tiene su propio cloud service, por lo que tienen configurados servidores DNS distintos. La máquina gisazure01 está dentro de gisazure01.cloudapp.net y gisazure07 está dentro de efe2azure07.cloudapp.net. No será posible que se vean entre ellas utilizando el DNS proporcionado por la plataforma. Para resolverlo deberíamos incluir las dos máquinas en el mismo cloud service o bien agregar un servidor DNS propio, como te explico en el paso 2 🙂

2. Si quisiéramos tener cloud services distintos para nuestras máquinas, necesitamos hacer uso de un servidor DNS externo. Para ello debemos darle ese rol a una de nuestras máquinas virtuales, ya esté alojada en el cloud o bien en un servidor on premise, haciendo uso de una VPN S2S. En este caso, no basta con indicar la IP de una máquina como servidor DNS, sino que también es necesario configurarla y añadir las máquinas en el registro. Para ello, una de tus máquinas tendría que tener el role DNS y configurarlo (Server Manager > Manage > Add roles and Features > Elegir el role DNS Server, agregar la zona, añadir los equipos que queremos resolver y su IP, etcétera).

Una vez instalado, es necesario indicar dentro de la configuración de tu red virtual (apartado CONFIGURE) la IP de la máquina que tiene este rol:

VNET configure DNS Server

Lo ideal sería que esta fuera la primera máquina añadida dentro de la red virtual. En caso contrario, para las máquinas existentes dentro de la red virtual es necesario reiniciar las mismas , para que obtengan la nueva configuración y apunten a este servidor DNS en lugar del que tenían por defecto.

Para comprobar que podemos resolver los nombres de las máquinas podemos hacerlo usando nslookup. Por ejemplo: nslookup gisazure01.gislocal.

Aquí tenéis más información sobre la resolución de nombres en Azure: Azure Name Resolution

¡Saludos!