Azure DNS Private Resolver
O cenário
Imagina que um dia você teve um Synapse, ou um SQL publico, aberto pra internet. A comunicação do seu ambiente on premises era feito assim mas sua empresa fez um bom investimento em um Express Route, fazendo a comunicação de forma interna.
Os caras vão, criam um Azure Private Endpoint pro seu banco de dados (no exemplo um Synapse) e em vez acessar pelo Host público (rescue.datababase.windows.net que resolvia o IP público 13.85.217.196), passa a resolver o alias do private endpoint criado pra ele (rescue.privatelink.datababase.windows.net que resolve o IP privado 10.25.65.68).
Até ai tudo certo, de dentro da Cloud Azure funciona que é uma maravilha, pois o DNS server do ambiente é interno da Microsoft e o que for criado lá dentro resolve de boas.
Os Problemas
Imagina que você tem um servidor no seu ambiente on premisses, que tem que acessar o Synapse, se liga o que acontece:
- Problema 1: Se eu tentar resolver o host publico do Synapse (rescue.datababase.windows.net), eu não acho o Alias criado com o ip privado do Private endpoint, eu estaria usando um DNS que não conhece o domínio Microsoft e só vai me trazer o IP de domínio público do Synapse, como desativei o acesso público, ele não funciona.
- Problema 2: Tudo bem então, vou resolver o host privado, o host do private endpoint (rescue.privatelink.datababase.windows.net). Ele não vai achar o IP privado do cara e se pá nem vai reconhecer quem é esse host, mais uma vez estou usando um DNS server on premises, que só reconhece o domínio local e não reconhece o Microsoft.
O Desenho abaixo explica bem o cenário:
Eu imagino que você pensou em algumas gambiarras (eu também pensei), como colocar no arquivo hosts da maquina a resolução, fazer uma entrada no DNS on premisses, mas se liga, a cada novo serviço que você criar na cloud, vai fazer todo esse rolê na mão?
A solução
A Azure lançou em outubro de 2022 um serviço chamado Azure DNS Private resolver, que tem o intuito de pegar o que você tem de resolução no mundo on premises e jogar pro DNS Azure e pegar suas resoluções Azure e jogar pro seu DNS on premisses. Sem uso de maquina nem nada, teoricamente, ele cria um recurso que vai usar 2 IPs em redes distintas, um servirá de entrada e outro de saída.
Antes vou te mostrar um desenho de como você resolveria esses nomes se esse servidor estivesse dentro da Cloud Azure, resolvendo o DNS Azure.
Fiz o cenário e resolve de boa internamente, depois pra simular, criei o Azure DNS Private resolver na rede Azure e fechei uma VPN entre meu ambiente local e essa rede, simulando que a rede Azure faria uma extensão da minha local.
Como eu não tinha um DNS server local, adicionei na minha placa de conexão com a VPN mais um DNS server, que era o IP de saída do DNS Private resolver. O cenário foi o seguinte:
Não é a maneira correta de configurar, mas consegui fazer o teste de resolução, o correto é fazer o DNS Local e o DNS Azure, trocarem as informações de registros de entrada e saída conforme eles forem nascendo, sem a necessidade de interação manual.
Se quiser fazer um deep dive nesse serviço, tem um vídeo muito completo de como isso funciona no Youtube do John Savill, segue o link abaixo.
E pra uma documentação mais detalhada de como funciona, segue o material da Microsoft que fala a respeito da solução.
Não é um post de dados, mas meus conhecimentos de infra estrutura sempre me salvam num perrengue com dados! Espero que te ajude, porque isso vai me salvar aqui!
Abraço e até o próximo!
Anselmo Borges.