Route53 CNAME 과 Alias 의 차이점

JIPA
8 min readFeb 6, 2022

--

DNS Server 를 AWS 환경에서 운영하는 경우 EC2 인스턴스에 DNS 서버를 구축하여 운영하거나 Marketplace 에서 3rd Party 솔루션을 이용할 수도 있겠지만 AWS 의 관리형 DNS 서비스인 Route53 을 이용한다면 여러 AWS Native Service 와 통합되어 아주 쉽고 편리하게 DNS 서비스를 구성할 수 있다는 장점이 있습니다.

Route53 은 Public Hosted Zone, Private Hosted Zone, DNS Firewall, DNS Resolver 등 다양한 기능을 제공하고 있는데요. 이 포스팅에서는 Route53 의 Hosted Zone 에서 사용할 수 있는 Record 중 “CNAME” Record 와 “Alias” 에 대해 비교해보려고 합니다.

이 포스팅에서는 DNS 에서 CNAME Record 가 무슨 역할을 하는 것인지 일반적으로 어떤 경우에 사용하는지 등의 기본적인 설명은 생략하도록 하겠습니다

먼저 “CNAME” Record 를 Route53 에서 생성해보도록 하겠습니다.

Route53 의 메뉴 중 Hosted Zones 의 메뉴에서 CNAME Record 를 생성할 Hosted Zone 을 선택한 후 아래와 같이 CNAME Record 를 생성하였습니다.

Route53 CNAME 설정

Record Name = waf-demo.cloudguardians.net
#DNS 요청이 수신되면 CNAME 으로 응답하게 될 Record Name 으로 waf-demo.cloudguardians.net 을 입력하였습니다.

Record Type = CNAME
#waf-demo.cloudguardians.net 요청에 응답할 Record Type 을 지정합니다.

Value = JuiceShop-443581232.ap-northeast-2.elb.amazonaws.com
#CNAME Record 에 기록된 값을 입력합니다.

TTL = 60
#이 CNAME Record 에 대한 TTL 값을 60초로 지정합니다.

이렇게 설정된 CNAME Record 를 생성한 후 인터넷 Client 에서 아래와 같이 dig 명령을 이용하여 demo.cloudguardians.net 으로 DNS 요청을 하는 경우 어떤 응답을 수신하게 되는지 확인해보도록 하겠습니다.

dig waf-demo.cloudguardians.net
Route53 CNAME 응답

위 그림과 같이 waf-demo.cloudguardians.net 라는 DNS 에 대한 요청에 대해 CNAME Record 를 통해 A Record(ALB 의 공인 IP 들)가 정상적으로 수신되는 것을 확인할 수 있습니다. 이와 같은 CNAME 설정에 의한 A Record 수신은 일반적으로 DNS 운영환경에서 볼 수 있는 기본적인 DNS 설정과 동작방식인데요.

이번에는 Route53 에서 제공하는 “Alias” 에 기반한 설정을 한 번 살펴보도록 하겠습니다.

먼저, 조금 전 설정한 CNAME Record 는 삭제한 후 새롭게 waf-demo.cloudguardians.net 에 대한 Alias 설정을 적용하겠습니다.

아래와 같이 Route53 의 새로운 Record 를 생성하는 메뉴에서 화면 우측의 “Alias” 버튼을 활성화 합니다.

Route53 Alias 설정

Alias 버튼을 활성화하게되면 Alias 를 위한 메뉴들로 화면이 바뀌게 되는데요.

Record Name = waf-demo.cloudguardians.net
#DNS 요청이 수신되면 Alias 로 응답하게 될 Record Name 으로 waf-demo.cloudguardians.net 을 입력하였습니다.

Record Type = A
#waf-demo.cloudguardians.net 요청에 응답할 Record Type 을 지정합니다.

Route traffic to =
- Alias to Application and Classic Load Balancer
- Asia Pacific(Seoul)[ap-northeast-2]
-dualstack.JuiceShop-443581232.ap-northeast-2.elb.amazonaws.com
#waf-demo.cloudguardians.net 에 Alias 로 응답할 AWS 자원의 유형/리전/리소스값을 입력합니다.

TTL = ?
#Alias 에는 별도로 TTL 을 지정하는 메뉴가 없습니다. Alias 자체에는 고유한 TTL 값이 없습니다.

위와 같은 설정을 갖는 Alias 를 생성한 후에 동일하게 waf-demo.cloudguardians.net 에 대해 DNS Lookup 을 시도해서 어떤 결과가 나타나는지 살펴보도록 하겠습니다.

Route53 Alias 응답

위 화면과 같이 Alias 를 사용하는 경우에도 CNAME 을 사용하는 경우와 마찬가지로 최종적으로 ALB 가 가지고 있는 공인 IP 에 대한 A Record 응답을 수신하는 것을 확인할 수 있습니다.

Alias 의 설정화면을 기억하신다면 이 DNS 응답을 보고 한 가지 의문을 생각하실 수 잇을 것 같은데요. 분명 Alias 의 설정화면에는 TTL 을 설정하는 메뉴가 없었고 Alias 에는 고유의 TTL 이 없다고 하였는데 그렇다면 DNS 응답에 포함되는 TTL 의 값은 어떻게 결정되는 것일까요?

Alias 를 사용하였을 때 TTL 의 값은 Alias 에서 선택한 AWS Resource 에 따라 결정됩니다. 예를 들면, 위와 같은 경우 ALB 를 사용하였기 때문에 ALB 에서 지정한 TTL 값을 따르게 되는데요. 아래의 문서 내용을 보면 ELB 의 경우에는 60초의 TTL 값이 지정되어 있음을 알 수 있습니다.

간단한 테스트를 통해 우리는 Route53 Alias Record 가 CNAME 을 사용하지 않고 A Record 를 직접 응답하는 기능을 제공한다는 것을 알게 되었습니다.

관리자의 입장에서는 CNAME Record 를 생성하는 것이든 Alias Record 를 생성하는 것이든 하나의 새로운 DNS Record 를 생성하고 관리해줘야한다는 점에서는 큰 차이점을 못 느낄 수 있을텐데요.

그렇다면 Route53 에서 제공하는 Alias 의 장점들은 무엇이 있을까요?

Route53 의 Alias 가 CNAME 에 비해 가질 수 있는 장점들을 열거해 보았습니다.

  1. 상대적으로 빠른 응답 시간
    : CNAME 은 Local DNS 나 Client 에서 A Record 의 값을 알아내기까지 Alias 에 비해 한 단계(CNAME Record to A Record Resolution)를 더 거칠 수 밖에 없습니다. 반대로 이야기하면 Alias 는 A Record 의 응답을 Route53 에서 바로 제공하기 때문에 상대적으로 빠른 DNS 응답이 가능합니다.
  2. 비용
    : Route53 에서 CNAME 를 포함한 표준 Query DNS Query 는 과금 대상입니다. 하지만 Alias 는 무료입니다. 따라서, CNAME 에 대한 DNS 요청 만큼의 비용을 절감할 수 있습니다.

Route53 의 비용에 대한 자세한 내용은 아래의 링크를 참고하세요.

3. A Record 응답
: 위의 Alias 응답을 보시면 CNAME Record 자체가 없다는 점에서 Alias 가 보안적으로도 크지는 않지만 장점을 가지고 있다고 볼 수 있을 것 같습니다. 예를들어, CNAME 설정과는 다르게 Alias 의 경우에는 ALB 의 Public DNS 자체를 노출하지 않기 때문에 혹시라도 ALB 의 Public DNS Name 에 포함되어 있는 Region 정보와 같은 정보가 노출되기를 꺼려한다면 Alias 의 사용으로 해당 정보를 노출하지 않을 수 있습니다.

Amazon Route53 에서 제공하는 고유하면서도 무료 기능인 Alias 에 대해 살펴 보았는데요. AWS Service 를 이용한 Service Domain 에 대해 CNAME 사용을 고려하셨다면 Alias 를 사용하시는 것도 검토해보시면 좋을 것 같습니다.

감사합니다.

--

--

JIPA
JIPA

Written by JIPA

Always Day 1. Security is job zero.

No responses yet