다음을 통해 공유


프라이빗 DNS 레코드 개요

이 문서에서는 Azure 프라이빗 DNS 영역의 DNS 레코드 지원에 대한 정보를 제공합니다. 프라이빗 DNS 영역에 대한 개요는 Azure 프라이빗 DNS 영역이란?을 참조하세요.

DNS 레코드

레코드 이름

상대 이름을 사용하여 레코드를 지정합니다. FQDN(정규화된 도메인 이름)은 영역 이름을 포함하는 반면 상대 이름은 영역 이름을 포함하지 않습니다. 예를 들어 영역 contoso.com의 상대 레코드 이름 www는 정규화된 레코드 이름 www.contoso.com을 제공합니다.

apex 레코드는 DNS 영역의 루트(또는 apex)에 있는 DNS 레코드입니다. 예를 들어 DNS 영역 contoso.com에서 루트 레코드는 정규화된 이름 contoso.com도 가집니다(naked 도메인이라고도 함). 규칙에 따라 루트 레코드를 나타내는 데 \'\@\' 상대 이름을 사용합니다.

레코드 유형

각 DNS 레코드에는 이름 및 형식이 있습니다. 레코드는 포함된 데이터에 따라 다양한 형식으로 구성됩니다. 가장 일반적인 형식은 이름을 IPv4 주소에 매핑하는 'A' 레코드입니다. 또 다른 일반적인 형식은 이름을 메일 서버에 매핑하는 'MX' 레코드입니다.

Azure Private DNS는 A, AAAA, CNAME, MX, PTR, SOA, SRV 및 TXT와 같은 일반적인 DNS 레코드 형식을 지원합니다.

참고 항목

SOA 레코드의 호스트 필드는 편집할 수 없습니다.

레코드 집합

지정된 이름 및 형식을 가진 DNS 레코드를 두 개 이상 만들어야 하는 경우도 있습니다. 예를 들어 'www.contoso.com' 웹 사이트가 서로 다른 두 IP 주소에서 호스트된다고 가정합니다. 웹 사이트에는 각 IP 주소마다 하나씩, 두 개의 A 레코드가 있어야 합니다. 다음은 레코드 집합의 예제입니다.

www.contoso.com.        3600    IN    A    10.10.1.5
www.contoso.com.        3600    IN    A    10.10.1.10

Azure DNS는 레코드 집합을 사용하여 모든 DNS 레코드를 관리합니다. 레코드 집합(리소스 레코드 집합이라고도 함)은 영역 내에서 동일한 이름과 형식을 가진 DNS 레코드의 컬렉션입니다. 대부분의 레코드 집합은 단일 레코드를 포함합니다. 그러나 여기에 표시된 예제와 같이 레코드 집합에서 레코드를 둘 이상 포함하는 경우도 드물지 않습니다.

예를 들어 'contoso.com' 영역에 IP 주소 '10.10.1.5'(앞서 표시된 첫 번째 레코드)을 가리키는 A 레코드 'www'를 만든 경우를 가정해 보겠습니다. 두 번째 레코드를 만들려면 추가 레코드 집합을 만드는 대신 기존 레코드 집합에 해당 레코드를 추가합니다.

SOA 및 CNAME 레코드 유형은 예외입니다. DNS 표준에서는 이러한 유형의 이름이 같은 여러 레코드를 허용하지 않으므로 이러한 레코드 집합은 단일 레코드만 포함할 수 있습니다.

Time-to-Live

TTL(Time To Live)은 각 레코드가 쿼리되기 전에 클라이언트에 캐시되는 기간을 지정합니다. 앞선 예제에서 TTL은 3600초, 즉 1시간입니다.

Azure DNS에서 TTL은 각 레코드가 아니라 레코드 집합에 대해 지정되므로 해당 레코드 집합 내의 모든 레코드에 동일한 값이 사용됩니다. 1 ~ 2,147,483,647초 사이의 TTL 값을 지정할 수 있습니다.

와일드카드 레코드

Azure DNS는 와일드카드 레코드를 지원합니다. 와일드카드 레코드는 이름이 일치하는 모든 쿼리에 대한 응답으로 반환됩니다(와일드카드가 아닌 레코드 집합에서 가까운 일치 항목이 없는 경우). Azure DNS는 NS 및 SOA를 제외한 모든 레코드 종류에 대해 와일드카드 레코드 집합을 지원합니다.

와일드카드 레코드 집합을 만들려면 레코드 집합 이름 '*'를 사용합니다. 또는 맨 왼쪽의 레이블로 '*'가 포함된 이름을 사용할 수 있습니다(예: '*.foo').

CNAME 레코드

CNAME 레코드 집합은 동일한 이름의 다른 레코드 집합과 함께 존재할 수 없습니다. 예를 들어 상대 이름이 www인 CNAME 레코드 집합과 상대 이름이 www인 A 레코드를 동시에 만들 수 없습니다.

영역 루트(이름 = '@')는 항상 영역 생성 중에 NS 및 SOA 레코드 집합을 포함하므로 영역 루트에 CNAME 레코드 집합을 만들 수 없습니다.

이러한 제약 조건은 DNS 표준에서 발생하며 Azure DNS의 제한 사항이 아닙니다.

SOA 레코드

SOA 레코드 집합은 각 영역의 루트(name = '@')에서 자동으로 생성되며 영역이 삭제될 경우 자동으로 삭제됩니다. SOA 레코드는 별도로 생성 또는 삭제할 수 없습니다.

host 속성을 제외하고 SOA 레코드의 모든 속성을 수정할 수 있습니다. 이 속성은 Azure DNS에서 제공하는 기본 이름 서버 이름을 참조하도록 미리 구성됩니다.

SOA 레코드의 영역 일련 번호는 영역의 레코드가 변경될 때 자동으로 업데이트되지 않습니다. 필요한 경우 SOA 레코드를 편집하여 수동으로 업데이트할 수 있습니다.

SRV 레코드

SRV 레코드는 다양한 서비스에서 서버 위치를 지정하는 데 사용됩니다. Azure DNS에서 SRV 레코드를 지정할 경우

  • 서비스프로토콜은 ‘_sip._tcp.name’과 같이 밑줄로 접두사를 지정하여 레코드 집합 이름의 일부로 지정되어야 합니다. 영역 apex에 있는 레코드의 경우 레코드 이름에 ‘@’을 지정하지 않아도 되며 서비스와 프로토콜만 사용합니다(예: ‘_sip._tcp’).
  • 우선 순위, 가중치, 포트, 대상은 레코드 집합에서 각 레코드의 매개 변수로 지정됩니다.

TXT 레코드

TXT 레코드는 도메인 이름을 임의의 텍스트 문자열에 매핑하는 데 사용됩니다. 여러 애플리케이션에서 사용할 수 있습니다.

DNS 표준은 여러 문자열을 포함하는 하나의 TXT 레코드를 허용하며 각각의 문자열 길이는 최대 255자까지 가능합니다. 여러 문자열이 사용되는 경우 이러한 문자열은 클라이언트에 의해 연결되고 단일 문자열로 처리됩니다.

Azure DNS REST API를 호출할 때 각 TXT 문자열을 별도로 지정해야 합니다. Azure Portal, PowerShell 또는 CLI 인터페이스를 사용할 때는 레코드당 하나의 문자열을 지정합니다. 이 문자열은 필요한 경우 자동으로 255자 세그먼트로 나뉩니다.

DNS 레코드의 여러 문자열을 TXT 레코드 집합의 여러 TXT 레코드와 혼동해서는 안 됩니다. TXT 레코드 집합은 여러 레코드를 포함할 수 있으며 각각의 레코드는 여러 문자열을 포함할 수 있습니다. Azure DNS는 모든 레코드가 결합된 각 TXT 레코드 집합에서 총 문자열 길이를 최대 4096자*까지 지원합니다.

* 4096자 지원은 현재 Azure 퍼블릭 클라우드에서만 사용할 수 있습니다. 국가별 클라우드는 4k 지원 롤아웃이 완료될 때까지 1024자로 제한됩니다.

태그 및 메타데이터

태그

태그는 이름-값 쌍의 목록으로, Azure Resource Manager에서 리소스에 레이블을 지정하는 데 사용됩니다. Azure Resource Manager는 태그를 사용하여 Azure 청구서를 필터링하여 표시할 수 있으며 특정 태그에 대한 정책을 설정할 수 있습니다. 태그에 대한 자세한 내용은 태그를 사용하여 Azure 리소스 구성을 참조하십시오.

Azure DNS에서는 DNS 영역 리소스에 Azure Resource Manager 태그를 사용할 수 있으며 아래 설명된 대로 대체 메타데이터가 DNS 레코드 집합에서 지원되기는 하지만 DNS 레코드 집합의 태그는 지원하지 않습니다.

메타데이터

Azure DNS에서는 레코드 집합 태그 대신 메타데이터를 사용하여 레코드 집합에 주석을 추가할 수 있습니다. 태그와 유사한 메타데이터를 사용하면 각 레코드 집합에 이름-값 쌍을 연결할 수 있습니다. 이 기능은 각 레코드 집합의 목적을 기록하는 데 유용할 수 있습니다. 태그와 달리, 메타데이터는 Azure 청구서를 필터링하여 표시하는 데 사용할 수 없으며 Azure Resource Manager 정책에서 지정할 수 없습니다.

Etag

두 사용자 또는 두 프로세스가 동시에 DNS 레코드 수정을 시도한다고 가정합니다. 어느 쪽이 성공할까요? 그리고 승자는 다른 사용자가 만든 변경 내용을 덮어썼다는 것을 알고 있을까요?

Azure DNS는 Etag를 사용하여 동일한 리소스에 대한 동시 변경을 안전하게 처리합니다. Etags는 Azure Resource Manager '태그'와 구분됩니다. 각 DNS 리소스(영역 또는 레코드 집합)에는 Etag가 연결되어 있습니다. 리소스를 검색할 때마다 해당 Etag도 검색됩니다. 리소스를 업데이트할 때 Azure DNS에서 서버의 Etag가 일치하는지 확인할 수 있도록 Etag를 다시 전달하도록 선택할 수 있습니다. 리소스를 업데이트할 때마다 Etag가 다시 생성되므로 Etag 불일치는 동시 변경이 발생했음을 나타냅니다. 새 리소스를 만들 때도 Etag를 사용하여 리소스가 존재하지 않는지 확인합니다.

기본적으로 Azure DNS PowerShell은 Etag를 사용하여 영역 및 레코드 집합에 대한 동시 변경을 차단합니다. 선택적 -Overwrite 스위치를 사용하여 Etag 검사를 무시할 수 있으며, 이 경우 발생한 동시 변경 내용을 덮어쓰게 됩니다.

Azure DNS REST API 수준에서 Etag는 HTTP 헤더를 사용하여 지정됩니다. 해당 동작은 다음 표에 나와 있습니다.

헤더 동작
없음 PUT 항상 성공(Etag 검사 안 함)
If-match <etag> 리소스가 있고 Etag가 일치하는 경우에만 PUT 성공
If-match * 리소스가 있는 경우에만 PUT 성공
If-none-match * 리소스가 없는 경우에만 PUT 성공

제한

Azure 프라이빗 DNS를 사용할 경우 다음과 같은 기본 제한이 적용됩니다.

프라이빗 DNS 영역

리소스 제한
구독당 프라이빗 DNS 영역 1000
프라이빗 DNS 영역당 레코드 집합 25000
프라이빗 DNS 영역의 레코드 집합당 레코드 20
프라이빗 DNS 영역당 Virtual Network 링크 1000
자동 등록을 사용하는 프라이빗 DNS 영역당 Virtual Network 링크 100
자동 등록을 사용하도록 설정한 상태에서 가상 네트워크를 연결할 수 있는 프라이빗 DNS 영역 수 1
가상 네트워크를 연결할 수 있는 프라이빗 DNS 영역 수 1000

다음 단계