AZ-700 시험에서 DNS 파트는 '어느 서비스를 어느 순간에 써야 하는가'를 묻습니다. DNS가 잘못되면 Private Endpoint를 만들어도 공인 IP로 접근하고, VNet 안의 VM이 내부 호스트명을 해석하지 못합니다. Azure는 이 문제를 Public Zone, Private DNS Zone, Private Resolver 세 축으로 해결합니다.
Azure DNS Public Zone: 외부 전화번호부
대도시 안내 책자를 생각해 보세요. 누구나 열면 상점 이름과 전화번호를 찾을 수 있습니다. Azure DNS Public Zone은 인터넷에 공개된 도메인(예: contoso.com)의 레코드를 Azure에서 중앙 관리하는 외부 전화번호부입니다.
Zone을 만들면 Azure가 name server 4개를 자동 할당합니다(ns1-xx.azure-dns.com 형태). 그 다음 도메인 registrar에서 NS 레코드를 이 4개 주소로 바꿔야 위임이 완료됩니다. 순서가 중요합니다. Zone을 먼저 만들어야 NS 주소를 알 수 있고, NS를 알아야 registrar 설정을 바꿀 수 있습니다.
지원 레코드 유형은 A, AAAA, CNAME, MX, TXT 등이며, Anycast 방식으로 전 세계 분산 운영되므로 단일 장애점이 없습니다.
Private DNS Zone: 회사 내부 전화번호부
대기업 사무실에는 외부에 공개되지 않는 내부 연락망이 있습니다. 내선번호부라고 하면 이해가 쉽습니다. Azure Private DNS Zone은 VNet 안에서만 유효한 내부 이름을 관리합니다.
Private Zone을 만드는 것만으로는 부족합니다. 반드시 VNet 링크(VNet Link)를 연결해야 그 VNet의 VM이 해당 Zone을 사용할 수 있습니다. 링크에는 두 가지 모드가 있습니다.
자동 등록(Auto-registration): 해당 VNet에 VM이 생성될 때 A 레코드가 Private Zone에 자동으로 등록됩니다. 수동(Resolution only): 레코드는 관리자가 직접 추가하고, VNet은 그 Zone을 이름 해석에만 씁니다.
하나의 Private Zone을 여러 VNet에 링크할 수 있고, VNet 하나가 여러 Zone에 링크될 수도 있습니다. 단, 자동 등록은 VNet당 하나의 Zone에만 활성화할 수 있습니다.
!Azure DNS Public Zone vs Private Zone
Private Endpoint와 privatelink 도메인
물류 창고에 전용 반입구가 있다고 상상해 보세요. 외부 트럭은 정문을 이용하지만, 내부 직원은 뒷문으로 바로 들어갑니다. Azure Private Endpoint가 바로 그 뒷문입니다.
Azure Storage나 SQL Database 같은 PaaS 서비스에 Private Endpoint를 붙이면, 해당 서비스는 VNet 내부 IP로 접근할 수 있게 됩니다. 그런데 DNS 설정도 함께 바꾸지 않으면 클라이언트는 여전히 공인 IP로 요청을 보냅니다.
이때 필요한 것이 형태의 Private DNS Zone입니다. Storage Account라면 Zone을 만들고, VNet에 링크한 뒤 A 레코드를 Private Endpoint의 내부 IP로 등록합니다. VNet 안의 클라이언트가 그 이름을 조회하면 내부 IP를 응답받습니다. '프라이빗 DNS 통합' 옵션을 선택하면 이 과정이 자동으로 이뤄집니다.
Azure DNS Private Resolver: 본사-지사 교환원
큰 기업에서 교환원이 외부 전화를 내부로 연결하고, 내부에서 외부로 전화할 때도 회선을 잡아주는 것을 떠올려 보세요. Azure DNS Private Resolver가 바로 이 교환원 역할입니다.
Private Resolver는 두 종류의 엔드포인트로 구성됩니다.
Inbound Endpoint: VNet 외부(온프레미스 포함)에서 Azure Private DNS Zone을 조회할 수 있도록 진입점을 제공합니다. 온프레미스 DNS 서버가 이 IP를 조건부 전달자로 설정하면, 온프레미스 클라이언트도 Azure 내부 이름을 해석할 수 있습니다. Outbound Endpoint: Azure 안의 요청을 외부(온프레미스 DNS 등)로 포워딩합니다. DNS Forwarding Ruleset을 통해 특정 접미사는 온프레미스 DNS로, 나머지는 Azure 기본 DNS로 보낼 수 있습니다.
Private Resolver 이전에는 VNet 안에 커스텀 DNS 서버를 직접 운영해야 했습니다. Private Resolver는 이를 완전 관리형 서비스로 대체합니다.
분할 호라이즌(Split-Horizon) DNS
같은 주소인데 회사 안에서 들어갈 때와 인터넷에서 들어갈 때 문이 다른 건물을 생각해 보세요. Split-horizon DNS는 동일한 도메인 이름에 대해 요청 출처에 따라 다른 IP를 응답하는 기법입니다.
예를 들어 이라는 이름이 있을 때, 인터넷에서 접근하는 클라이언트는 Public Zone에 등록된 공인 IP를 받고, VNet 안의 VM은 Private Zone에 등록된 내부 IP를 받습니다. 이를 구현하려면 같은 이름()을 가진 Public Zone과 Private Zone을 각각 만들고, Private Zone을 해당 VNet에 링크하면 됩니다. Azure는 VNet 안의 클라이언트가 쿼리를 보낼 때 Private Zone을 우선 참조합니다.
이 패턴은 동일 애플리케이션을 인터넷과 내부망 양쪽에서 서비스할 때, 또는 Private Endpoint와 공개 엔드포인트를 함께 운영할 때 자주 등장합니다.
비교: 어느 DNS 방식을 선택할까
| 상황 | 선택 | |:--|:--| | 인터넷 공개 도메인 관리 | Azure DNS Public Zone | | VNet 안 내부 이름 관리 | Private DNS Zone + VNet Link | | PaaS Private Endpoint 이름 해석 | privatelink.{service} Private Zone | | 온프레미스 → Azure 내부 이름 조회 | Private Resolver Inbound Endpoint | | Azure → 온프레미스 DNS 포워딩 | Private Resolver Outbound Endpoint + Ruleset | | 같은 이름, 내외부 다른 IP | Split-horizon (Public + Private Zone 공존) | | VNet 기본 이름 해석 | Azure 제공 DNS (168.63.129.16) |
Azure 제공 DNS(168.63.129.16)는 VNet의 기본 DNS 서버입니다. 커스텀 DNS를 VNet에 설정한 경우에는 그 서버가 168.63.129.16을 조건부 전달자로 구성해야 Azure 내부 이름 해석이 유지됩니다.
실무 함정: 이것을 놓치면 Private Endpoint가 공인 IP로 연결됩니다
신입 엔지니어가 Private Endpoint를 만들고 나서 '접속이 안 된다'는 티켓을 올립니다. Private Endpoint를 만든 것과 별개로 DNS가 내부 IP를 가리키지 않으면, 클라이언트는 여전히 공인 IP로 요청을 보냅니다.
체크해야 할 순서는 다음과 같습니다.
Private Zone이 만들어져 있는가? 해당 Zone이 클라이언트 VNet에 링크되어 있는가? Zone 안에 Private Endpoint의 내부 IP를 가리키는 A 레코드가 있는가? 클라이언트 VNet의 DNS 설정이 Azure 제공 DNS(168.63.129.16)를 사용하거나, 커스텀 DNS가 168.63.129.16으로 포워딩하도록 설정되어 있는가?
온프레미스 클라이언트가 관련된 경우, 온프레미스 DNS가 해당 접미사를 Private Resolver Inbound Endpoint IP로 조건부 전달해야 합니다.
시험 핵심 정리
인터넷 공개 도메인, Azure NS 위임 -- Azure DNS Public Zone VNet 안 내부 이름, 자동 등록 -- Private DNS Zone + VNet Link (Auto-registration) Private Endpoint 이름 해석 -- privatelink.{service} Private Zone + A 레코드 온프레미스 → Azure 내부 이름 -- Private Resolver Inbound Endpoint Azure → 온프레미스 DNS -- Private Resolver Outbound Endpoint + Forwarding Ruleset 같은 이름, 내외부 다른 IP -- Split-horizon (Public Zone + Private Zone 공존) VNet 기본 DNS 주소 -- 168.63.129.16 (Azure 제공 DNS) Auto-registration 제한 -- VNet당 1개 Private Zone에만 활성화 가능 커스텀 DNS + Private Zone 혼용 -- 커스텀 DNS가 168.63.129.16으로 포워딩 필수 Private Endpoint 연결 실패 원인 1위 -- DNS 미설정 (Private Zone 또는 VNet Link 누락)
Azure DNS = 외부 전화번호부, Private DNS Zone = 내부 연락망, Private Resolver = 본사-지사 교환원