Hace tan solo unos días, Azure anunciaba la disponibilidad global en Azure de “Fallback to internet for Azure Private DNS zones”, pero ¿qué es?, y ¿por qué es tan importante?
Antes de nada vamos a repasar dos conceptos claves de Private Endpoint: #
Que es Private Endpoint: #
Azure Private Endpoint es una interfaz de red que conecta de manera privada y segura los servicios de Azure a su red virtual mediante una conexión privada. Utiliza una dirección IP privada de su VNet, lo que garantiza que el tráfico entre su red virtual y el servicio de Azure permanezca en la red de Microsoft, sin exponerlo a Internet. Esto mejora la seguridad y el rendimiento de las aplicaciones al reducir la superficie de ataque y minimizar la latencia. Para más información, visita Azure Private Endpoint.
Como realiza la resolución de nombres: #
Azure Private Endpoint utiliza Azure Private DNS para la resolución de nombres. Cuando se crea un Private Endpoint, se registra automáticamente una entrada DNS en una zona privada de DNS de Azure. Esta entrada DNS permite que las solicitudes de nombre de dominio dentro de la red virtual se resuelvan a la dirección IP privada del Private Endpoint, asegurando que el tráfico permanezca dentro de la red de Microsoft. Para más información, visita Azure Private DNS.
El siguiente diagrama ilustra cómo funciona la resolución de nombres
Y he aquí el problema: #
En este punto he creado un laboratorio compuesto por dos infraestructuras independientes formadas por:
- Virtual Network
- Máquina Virtual Linux con IP Pública (para poder conectarme a ella)
- Storage Account con Private Endpoint habilitado
- Private Enpoint
- Zona DNS Privada para blob….
El siguiente diagrama muestra la arquitectura:
Para empezar, en las dos redes, se ha configurado Private Endpoint en las Storage Account y se permite el acceso público
La primera prueba es ver la resolución de nombres desde sourcevm hacía las storage account sajppsource
Para las pruebas vamos a utilizar el comando dig de linux.
dig sajpptestsource.blob.core.windows.net
y desde destinationvm hacía sajppdestination
dig sajpptestdestination.blob.core.windows.net
Como podemos ver en el proceso de resolución, al ser componentes privatizados, la resolución DNS nos devuelve la zona privatelink.blob.core.windows.net y la IP de nuestras storage accounts de forma correcta.
Ahora vamos a intentar hacer resolución cruzada, es decir, desde sourcevm hacía la storage sajppdestination
dig sajpptestdestination.blob.core.windows.net
y desde destinationvm hacía sajppsource
dig sajpptestsource.blob.core.windows.net
Fallback to Internet … Y se hizo la mágia #
Vamos a activar la opción Fallback to Internet en nuestras zonas DNS Privadas
Para ello, iremos a la zona DNS privada correspondiente, y desplegaremos DNS Management y Virtual Network Links
Editaremos el link pulsando en el lapiz y habilitaremos la opción Enable fallback to internet
Al guardar vemos que nos ha habilitado la opción en el Virtual Network Link
Volvemos a la carga con dig #
Una vez hagamos los cambios en las dos zonas privadas DNS volvemos a hacer las pruebas de resolución cruzadas:
Desde sourcevm hacía la storage sajppdestination
dig sajpptestdestination.blob.core.windows.net
y desde destinationvm hacía sajppsource
dig sajpptestsource.blob.core.windows.net
Como podemos observar, nuestra infraestructura ahora ya es capaz de resolver tanto los elementos privados como aquellos elementos privados pero que necesitan por algún motivo acceso público.
Y si quiero acceder desde una red privatizada a un recurso público… #
Para cerrar vamos a ver que ocurre si desde una infraestructura privatizada queremos acceder a un componente público y que no está privatizado. Para ello eliminamos el private endpoint de la storage account sajpptestsource
y volvemos a hacer la prueba de resolución con dig
Como vemos, solo los recursos privatizados, que necesitan resolver mediante la zona dns privatlink están afectadas por este comportamiento.
Conclusiones #
Como hemos podido observar la característica Fallback to Internet viene a resolver un problema que ocurría cuando queremos acceder desde una vnet privatizada a un elemento que esta privatizado en otra red no conectada con la nuestra y por lo tanto accesible de forma pública.