CNAME 레코드란?
CNAME 레코드는 한 호스트명을 다른 정식 이름(canonical name)으로 별칭 지어, 대상의 A 및 AAAA 레코드가 주소 확인에 사용되게 합니다. CDN이나 SaaS 제공업체를 가리키는 하위 도메인에 흔히 쓰이며, 그들의 IP 주소를 추적하지 않고도 인프라를 따라갈 수 있게 해 줍니다. 제공업체가 IP를 바꾸어도 CNAME은 자동으로 계속 작동합니다.
CNAME 별칭이 주소로 확인되는 방법
CNAME은 IP를 저장하지 않고 한 호스트명을 다른 호스트명에 가리킵니다. 리졸버가 CNAME에 닿으면 대상 이름으로 조회를 다시 시작해 그쪽의 A 또는 AAAA 레코드를 따라 최종 주소에 이릅니다. 예를 들어 shop.example.com CNAME mystore.shopify.com은 shop.example.com에 대한 요청이 Shopify의 호스트명을 거쳐 확인된다는 뜻입니다. 이 간접 참조 덕분에 CDN과 SaaS 플랫폼은 CNAME 대상을 제공합니다. 그들은 기반 IP를 자유롭게 바꿀 수 있고, 귀하 측의 수정 없이 하위 도메인이 따라갑니다.
CNAME 결과를 읽는 방법
CNAME 결과는 별칭 호스트명과 그것이 가리키는 정식 대상을 보여 줍니다. 예를 들어 www.example.com CNAME example.com이나 blog.example.com CNAME hosted.ghost.io입니다. 최종 IP를 보려면 사슬을 따라가세요. 대상 자체의 A 및 AAAA 레코드가 주소를 확인합니다. CNAME이 가리키는 대상이 다시 CNAME을 가진다면 리졸버가 사슬을 따라가지만, 긴 사슬은 조회와 지연을 더합니다. 레코드가 없는 호스트명을 가리키는 CNAME은 깨진 것이며 확인에 실패합니다.
흔한 CNAME 실수와 제약
가장 중요한 규칙은 루트 도메인(example.com)에 CNAME을 둘 수 없다는 것입니다. 정점은 필수인 NS 및 SOA 레코드와 공존해야 하고, CNAME은 다른 레코드와 이름을 공유할 수 없기 때문입니다. 대신 정점에서는 A 레코드나 제공업체의 ALIAS/ANAME 기능을 사용하세요. 또한 이미 A, MX, TXT 레코드가 있는 호스트명에는 CNAME을 추가할 수 없습니다. 잦은 실패는 SaaS 대상에서 서비스를 활성화하기 전에 CNAME을 그쪽으로 가리켜 확인 불가 상태로 두는 것입니다.