DNS CNAME 레코드란?

DNS CNAME 레코드는 단일 IP 주소를 공유하는 도메인 이름의 별칭으로 작동합니다.

학습 목표

이 글을 읽은 후에 다음을 할 수 있습니다:

  • 도메인 조회 컨텍스트에서 CNAME 레코드가 작동하는 방식 이해하기
  • CNAME 레코드와 A 레코드 간의 관계 이해하기

관련 콘텐츠


계속 알아보시겠어요?

인터넷에서 가장 인기 있는 인사이트를 한 달에 한 번 정리하는 Cloudflare의 월간 요약본 theNET를 구독하세요!

Cloudflare가 개인 데이터를 수집하고 처리하는 방법은 Cloudflare의 개인정보 취급방침을 참조하세요.

글 링크 복사

DNS CNAME 레코드란?

"정식 이름" (CNAME) 레코드는 별칭 도메인에서 "정식" 도메인을 가리킵니다. 도메인 또는 하위 도메인이 다른 도메인의 별칭인 경우 A 레코드 대신 CNAME 레코드가 사용됩니다. 모든 CNAME 레코드는 도메인을 가리켜야 하며 IP 주소를 가리켜서는 안 됩니다. 각 단서가 다른 단서를 가리키고 마지막 단서가 보물을 가리키는 보물찾기를 상상해 보세요. CNAME 레코드가 있는 도메인은 다른 단서(CNAME 레코드가 있는 다른 도메인) 또는 보물(A 레코드가 있는 도메인)을 가리킬 수 있는 단서와 같습니다.

예를 들어 blog.example.com에 'example.com' 값이 있는 CNAME 레코드가 있다고 가정해 보겠습니다 ('blog'없이). 이는 DNS 서버가 blog.example.com에 대한 DNS 레코드에 도달하면, 실제로 example.com에 다른 DNS 조회를 트리거하여 example.com의 IP 주소를 A 레코드를 통하여 반환함을 의미합니다. 이 경우 example.com은 blog.example.com의 정식 이름(또는 실제 이름)이라고 말할 수 있습니다.

종종, 사이트에 blog.example.com 또는 shop.example.com 와 같은 하위 도메인이 있는 경우, 이러한 하위 도메인에는 루트 도메인(example.com)을 가리키는 CNAME 레코드가 있습니다. 이런 방식으로, 호스트의 IP 주소가 변경되면 루트 도메인의 DNS A 레코드만 업데이트하면 되며, 모든 CNAME 레코드는 루트에 대한 변경 사항을 따릅니다.

CNAME 레코드는 항상 CNAME 레코드가 가리키는 도메인과 동일한 웹 사이트로 확인되어야 한다는 오해가 자주 생기지만, 그렇지 않습니다. CNAME 레코드는 클라이언트를 루트 도메인과 동일한 IP 주소로만 가리킵니다. 클라이언트가 해당 IP 주소에 도달하면 웹 서버는 그에 따라 URL을 처리합니다. 예를 들어 blog.example.com은 example.com을 가리키는 CNAME을 가질 수 있으며, 클라이언트에게 example.com의 IP 주소로 향하게 할 수 있습니다. 그러나 클라이언트가 실제로 해당 IP 주소에 연결하면 웹 서버는 URL을 보고 그 URL이 blog.example.com임을 확인하며, 홈 페이지가 아닌 블로그 페이지를 전달합니다.

CNAME 레코드의 예:

blog.example.com 레코드 유형: 값: TTL
@ CNAME 이는 example.com의 별칭입니다 32600

이 예에서는 blog.example.com이 example.com을 가리키는 것을 볼 수 있으며, 그것이 예제 A 레코드를 기반으로 한다고 가정하면 결국 IP 주소 192.0.2.1로 확인된다는 것을 알 수 있습니다.

보고서
2025년 보안 신호 보고서

CNAME 레코드가 다른 CNAME 레코드를 가리킬 수 있을까요?

CNAME 레코드에서 다른 CNAME 레코드를 가리키려면 도메인을 로드하기 전에 여러 번의 DNS 조회가 필요하므로 비효율적이고 사용자 경험이 느려질 수 있지만 가능합니다. 예를 들어 blog.example.com은 www.example.com의 CNAME 레코드를 가리키는 CNAME 레코드를 가질 수 있고 이 레코드는 다시 example.com의 A레코드를 가리킵니다.

blog.example.com 에 대한 CNAME:

blog.example.com 레코드 유형: 값: TTL
@ CNAME 이는 www.example.com의 별칭입니다 32600

www.example.com에 대한 CNAME을 가리킵니다.

www.example.com 레코드 유형: 값: TTL
@ CNAME 이는 example.com의 별칭입니다 32600

이 구성은 DNS 조회 프로세스에 단계를 추가하므로 가능하면 피해야 합니다. 대신 blog.example.com 및 www.example.com 모두에 대한 CNAME 레코드가 example.com을 직접 가리켜야 합니다.

빠른 & 보안 DNS
모든 Cloudflare 요금제에 포함된 무료 DNS

CNAME 레코드 사용에는 어떤 제한이 있을까요?

중복된 이름 없음

다른 어떠한 DNS 레코드도 주어진 CNAME 레코드와 동일한 이름을 가질 수 없습니다. 이것이 실제로 의미하는 바는 MX, TXT, A, SOA 등의 다른 유형의 DNS 레코드에는 도메인의 별칭으로 레이블을 지정할 수 없다는 것입니다. 또한 동일한 이름을 가진 다른 CNAME 레코드가 있을 수 없습니다.

'blog.example.com'에 CNAME이 있는 경우 'example.com'을 가리키는 경우 'blog.example.com'에는 다른 유형의 레코드가 있을 수 없습니다. — 모두 'example.com' 아래에 있어야 합니다.

Sam이 'Mark'라는 가명으로 기사를 작성한다고 가정해 보겠습니다. Mark와 Sam이 동일인임에도 불구하고,출생 증명서, 여권 등 그의 법적 문서는 여전히 실명 Sam으로 유지됩니다. DNS 레코드도 비슷합니다. 별칭 도메인은 실제 도메인만 가리킬 수 있으며 '법적 문서'(다른 DNS 레코드)는 해당 실제 도메인 아래에 있어야 합니다.

한 가지 예외가 있는데, 이는 CNAME 플래트닝의 경우이며, CNAME이 A/AAAA 레코드처럼 작동하는 경우입니다. 실제로 프록시 설정된 모든 CNAME 레코드는 이러한 방식으로 작동합니다. 그러나 다른 레코드는 여전히 플랫트닝 된 CNAME 레코드와 동일한 이름에 허용되지 않습니다. CNAME 플래트닝에 대해 자세히 알아보세요.

MX 및 NS 레코드

MX 및 NS 레코드는 CNAME 레코드를 가리킬 수 없습니다. 이들 레코드는 A 레코드(IPv4의 경우) 또는 AAAA 레코드(IPv6의 경우)를 가리켜야 합니다. MX 레코드는 이메일을 메일 서버로 보내는 메일 교환 레코드입니다. NS 레코드는 '이름 서버' 레코드이며 해당 도메인에 대해 권한이 있는 DNS 서버를 나타냅니다.

CNAME이 아닌 쿼리에 대해 CNAME 레코드는 언제 반환될까요?

앞서 언급했듯이 도메인은 DNS 사양에 따라 이미 CNAME 레코드가 있는 이름으로 다른 DNS 레코드를 가질 수 없습니다.

이러한 이유로 도메인의 실제 이름 대신 별칭을 사용하는 TXT 레코드와 같은 다른 유형의 레코드를 쿼리하면 요청된 레코드 대신 CNAME 레코드가 반환됩니다. 그런 다음 요청자는 원하는 레코드를 얻기 위해 CNAME이 가리키는 도메인을 쿼리해야 합니다.

Alice가 blog.example.com의 TXT 레코드를 보고 싶어서 이에 대한 쿼리를 보내면 TXT 레코드 대신 CNAME 레코드를 반환받게 됩니다. 그런 다음 Alice는 TXT 레코드를 요청하는 DNS 쿼리를 CNAME 레코드의 대상에 보내야 하며 대상에 TXT 레코드가 있으면 응답을 받게 됩니다. 이는 다른 유형의 DNS 레코드 쿼리의 경우에도 마찬가지입니다.

TXT 레코드에 대해 자세히 알아보세요.