안녕하세요. 오늘은 Azure에서 제공하는 서비스 중 하나인, DNS private resolver란 무엇인지, 그리고 또 어떻게 사용하는지에 대해서 설명해보려고 합니다.
* 본 내용은 Azure의 기본적인 리소스 구성을 알고 있음을 가정하여 작성하였습니다.
1. What is DNS?
신규 서비스인 DNS private Resolver를 설명하기에 앞서 DNS란 무엇일까요?
도메인 네임 시스템(Domain Name System, DNS)은 호스트의 도메인 이름을 호스트의 네트워크 주소로 바꾸거나 그 반대의 변환을 수행할 수 있도록 하기 위해 개발되었다고 하네요.
결국 서비스를 위한 호스트의 네트워크 주소를 우리가 흔히 URL에서 볼 수 있는, 도메인 주소로 바꾸어 주는 역할을 합니다. 예시로 네이버 홈페이지의 URL 주소를 통해 IP를 확인해 볼 수 있어요.
이러한 DNS는 외부적으로도 사용하지만, 내부적으로 사용하는 DNS들도 있어요.
아무래도 IP로만 통신을 하다보면, 해당 IP로는 직접적인 서버의 용도라던지, 서비스 이름을 예측하기 힘든 경우가 많아요.. 그래서 private DNS를 구성하는 경우가 많죠! 기업마다 DNS Server는 대부분 구성이 되어 있습니다.
기업의 규모가 큰 회사는 CLOUD를 사용하게 되면, 대부분 Hybrid Cloud(Onpremise와 Cloud 서비스를 모두 사용하며 연동하여 사용하는 클라우드 개념)를 구성하게 되는 경우가 많아요.
Cloud서비스와 Onpremise 서비스간 연동은 데이터를 주고 받을 수 있는 네트워크의 연동이 핵심이죠. Express Route나 VPN과 같은 서비스를 생성하여 연동하게 됩니다. 이 때 Azure에서 특정 Paas 서비스를 사용하게 되고 외부의 노출을 막고 내부 통신만 가능하도록 Private Link를 PaaS서비스에 연동하여 서비스만의 고유의 Private IP와 Pirvate DNS를 할당받게됩니다.
물론 "IP"로의 통신이 가능해요. 하지만, 대부분의 기업에서는 DNS를 활용하여 쿼리문을 작성하는 것이 익숙하겠죠?
여기서 Azure와 On Premise간 이름 풀이를 위한 DNS Forwarder가 있습니다.
해당 그림은 On Premise에서 Azure에 있는 SQL Database에 DNS 질의를 날렸을 때, 발생하는 워크플로우입니다.
On Premise의 Client VM에서 DNS 질의를 할 때 바라보는 대상은 Interal DNS 서버에요.
해당 Internal DNS는 조건부 전달에 등록되어 있는 database.windows.net을 Azure VM에 구성한 DNS Forwarder로 전달하죠. 해당 전달을 받은 Azure VM은 Azure DNS Nameserver로 이름 풀이를 하게 되고, 그 값을 받아 다시 Internal DNS 서버로 전달, Client VM이 SQL DB와 통신할 수 있게 되죠. 자세한 설명은 다음 링크를 참고하시면 됩니다.
해당 설정을 위해서는 Virtual Machine을 생성하고, DNS Forwarder 구성을 직접 해주어야 했어요. 바로 IaaS의 영역인 거죠. 특정 기능을 구현하기 위해서는 서버 담당자, DNS 담당자의 역할이 필요했어요.
결국 Azure에서는 DNS Forwarder를 대체 시킬 수 있는 PaaS 서비스를 제공하기 시작했습니다.
본론으로 들어가 볼까요?
2. What is DNS private Resolver Service?
DNS private resolver란, VM 기반 DNS 서버(앞서 설명한 DNS Forwarder)를 배포하지 않고 온-프레미스 환경에서 Azure DNS 프라이빗 영역을 쿼리하거나 그 반대로 쿼리할 수 있는 새로운 서비스입니다.
Hybrid Cloud를 위해 거의 필수적으로 필요한 서비스로, 직접 구성을 하다보니, Azure에서는 그 니즈를 캐치해서 PaaS서비스로 만들어 제공하고 있다고 보이네요.
GA는 2022년 10월 경 되었구요!
https://azure.microsoft.com/en-us/blog/announcing-azure-dns-private-resolver-general-availability/
Announcing Azure DNS Private Resolver general availability
다음 아키텍처를 통해 새로운 PaaS인 DNS Private Resolver의 역할을 볼까요?
DNS Private Resolver를 구성시 생성되는 Inbound Endpoint VIP가 DNS Forwarder VM에서의 VM의 IP의 역할을 해요. On-Premise에서는 특정 DNS들을 검색시, 해당 VIP로 DNS forward를 진행하게 되고 해당 VM에서는 Azure의 DNS Zone으로 Lookup하여 얻은 값을 전달해주게 되죠.
3. DNS private resolver POC
해당 서비스를 테스트 해보기 위해 azure용 vnet, on premise용 vnet을 구성, 서로 peering을 맺었어요.
(On Premise처럼 동일한 구성을 위해 ER 구축을 하고싶으나,,, 현실적으로 불가능 하므로 peering = er 통신으로 가정하고 테스트 했어요 ㅎㅎ)
테스트는 private endpoint가 달린 storage account에 대해서, private dns로 nslookup이 가능한지, 테스트 해보았어요. 해당 테스트는 DNS Private Resolver의 Inbound Endpoint를 사용하는 테스트입니다.
전제 조건 : Spoke 내에 존재하는 VM NIC의 DNS Server를 1,2번은 DNS Forwarder로, 3번은 DNS Private Resolver의 Inbound Endpoint VIP로 각각 테스트 진행해 보았어요.
1. DNS Forwarder로 구성한 VM을 DNS Server로 지정, DNS Server 서비스를 START 한 뒤 테스트(성공)
DNS Forwarder로 구성한 VM은 DNS 질의가 오는 것에 대해 Azure Provided DNS인 168.63.129.16으로 전달하게 되고, 다음과 같이 Blob의 Private DNS를 얻을 수 있음을 확인할 수 있어요.
2. DNS Server를 기본 설정 그대로 두고 테스트(실패)
이번에는 DNS Server 설정을 VNET의 default 그대로 두고 테스트를 해 보았어요. vnet 두개가 peering이 되어 있지만 blob의 private dns zone에 nslookup 명령을 하는 VM이 존재하는 Vnet은 LINK가 되어 있지 않아요. 따라서 Private DNS를 lookup하지 못하고 Storage Account의 public 주소로 검색이 되게 되죠.
3. DNS Private Resolver로 DNS Server를 지정하여 테스트(성공)
1번과 똑같은 상황에서, DNS Server를 DNS Private Resolver의 Inbound Endpoint VIP로 넣었어요. DNS Private Resolver는 Azure Provided DNS에 질의하여 Private Blob을 조회가능하게 한 것이죠.
4. How much DNS private resolver Price?
비용은 어느정도 나올지 측정해 보았습니다. DNS Forwarder 역할을 수행하는 Inbound Endpoint는 20만원의 가격이 소요됨을 확인할 수 있어요.
5. Conclusion
On-Premise와 통신하는 Cloud 환경을 만들면서, DNS Forwarder 구성은 DNS 검색을 위해서는 필수 불가결한 사항이였어요. 그러한 상황을 Azure는 인지하고, DNS Private Resolver 서비스를 출시함으로서 고객들의 니즈를 잘 파악하고 해당 서비스를 출시한 것으로 보여지네요.
신규 서비스 DNS Private Resolver 소개는 여기까지 입니다. 다음 서비스 소개에서 만나요~!