[AWS] DNS 레코드 쉽게 정리 (A, AAAA, CNAME 레코드) + (Route 53의 Alias Record)
◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇
Domain Name System Record (도메인 이름 시스템 레코드)
DNS Record
DNS 레코드는 도메인 이름과 관련된 정보를 저장하는 데이터베이스 항목이다.
여기서 DNS 레코드는 DNS 서버로 패킷이 들어왔을 때 어떤식으로 패킷을 처리할지를 나타내는 지침을 말한다.
👨🏫 실제 예시)
도메인 | 매핑하는 목적지 | Record Type | DNS Class |
google.com | 172.12.0.1 | A | IN |
naver.com | 192.168.1.1 | A | IN |
original.com | different.com | CNAME | IN |
example.com | 10 mail.example.com. | MX | IN |
example.jp.com | "v=spf1 include:_spf.example.com ~all" | TXT | IN |
▶ DNS 클래스(Class)란?
DNS 클래스는 3 가지 유형이 있다:
IN (Internet):
가장 널리 사용되는 클래스로, 대부분의 DNS 레코드가 이 클래스를 사용한다.
인터넷을 기반으로 하는 DNS 레코드를 나타낸다.
CH (CHAOS):
주로 실험 및 테스트 목적으로 사용되는 클래스이다.
시스템 정보 및 실험용 레코드를 사용할 때 참조된다.
HS (Hesiod):
주로 특정 응용 프로그램에 의해 사용되는 클래스이다.
헤시오드(Hesiod)는 네트워크 정보를 분산 관리하는 데 사용되는 프로토콜이다.
다양한 DNS 레코드 타입이 있다. 하지만 가장 일반적으로 사용되는 DNS 레코드는 다음과 같다:
DNS 레코드 타입 | 설명 |
A record | 도메인을 해당하는 IP 주소 (IPv4 형식)을 매핑합니다. |
AAAA record | 도메인을 해당하는 IP 주소 (IPv6 형식)을 매핑합니다. |
CNAME record | 도메인을 다른 도메인 이름에 별칭(별명)으로 매핑합니다. |
MX record | 도메인의 메일 서버를 지정합니다. |
TXT record | 특정 도메인에 대한 추가 정보를 포함하는 텍스트 데이터를 제공합니다. |
… | … |
이것보다 더 많은 레코드 타입이 있다 → https://en.wikipedia.org/wiki/List_of_DNS_record_types
Address record (IPv4)
A record
- 도메인을 IPv4 주소로 매핑하는 역할을 한다.
- 가장 기본적인 DNS 레코드이다.
- A 레코드는 1대 1 매핑이 될 필요는 없다.
- 1:N 관계 매핑, N:M 관계 매핑이 될 수 있다.
👨🏫 A 레코드의 예시
도메인 이름 | Class | Record Type | IPv4주소 | TTL |
example.com. | IN | A | 192.0.2.1 | 3600 |
google.com. | IN | A | 256.2.11.45 | 3600 |
naver.com | IN | A | 1.0.0.0 | 3600 |
naver.com | IN | A | 1.0.0.1 | 3600 |
naver.com | IN | A | 1.0.0.2 | 3600 |
🧑 TTL (Time to Live)
패킷(packet)이 네트워크를 통해 전송되는 동안 남아있을 수 있는 시간을 뜻한다.
TTL의 단위는 "초"이다. 다음은 TTL에서 값의 예시이다.
600 | 10 분 |
3600 | 1 시간 |
21600 | 6 시간 |
43200 | 12 시간 |
86400 | 24 시간 |
Address record (IPv6)
AAAA record
- A record의 IPv6 버전이다.
- IPv6 주소는 128비트로 표현된다. (IPv4는 32비트)
- IPv6 예시:
2001:0db8:85a3:0000:0000:8a2e:0370:7334
👨🏫 AAAA 레코드의 예시
도메인 이름 | Class | Record Type | IPv6주소 | TTL |
example.com. | IN | AAAA | 2001:0db8:85a3:0000:0000:8a2e:0370:7334 | 14400 |
Canonical Name (캐노니컬 네임 레코드)
CNAME record
- CNAME 레코드는 도메인 주소를 또 다른 도메인 주소로 매핑한다.
- 쉽게 말해 도메인 주소로 연결했을 때 또 다른 도메인 주소로 연결되는 방식이다.
👨🏫 CNAME 레코드의 예시
도메인 이름 | Class | Record Type | 주소 | TTL |
example.com. | IN | CNAME | power.com. | 14400 |
power.com. | IN | A | 192.0.2.1 | 3600 |
CNAME 와 A 레코드의 차이 및 장단점
위에 설명한 듯이 가장 큰 차이점은 A 레코드는 IPv4으로, CNAME 레코드는 도메인으로 매핑한다는 점이다.
A 레코드 장점
직접 매핑: A 레코드는 직접적으로 IPv4 주소로 매핑하기 때문에 더 빠르게 연결한다. (추가적인 조회 없다)
A 레코드 단점
- IP 주소 관리:
IP 주소가 바뀌면 모든 A 레코드를 업데이트해야 한다. (IP 주소가 자주 바뀌는 서버라면 많이 불편할 것이다.) - 도메인 체이닝 불가능:
여러 도메인이 같은 IP 주소를 가리키도록 하는 도메인 체이닝이 어렵다.
CNAME 레코드 장점
- IP 주소 변경 관리 용이:
IP 주소가 자주 바뀌는 서버여도 유연하게 대쳐 가능하다. - 도메인 체이닝 가능:
여러 도메인이 동일한 서버를 가리키거나, 서비스를 공유할 수 있다.
CNAME 레코드 단점
- 성능 저하:
CNAME을 사용하면 추가적인 DNS 조회가 필요하므로, 약간의 성능 손실이 있을 수 있다. - 도메인 변경:
도메인이 바뀌면 CNAME 레코드를 업데이트해야 된다.
Alias 레코드: AWS의 Route53에서 사용하는 레코드
- Alias 레코드는 AWS Route 53 서비스에서 사용되는 특별한 DNS 레코드이다.
- Alias 레코드는 호스트명이 특정 AWS 리소스로 매핑하는 역할을 한다.
- Alias 레코드는 CNAME 레코드와 유사하지만 몇 가지 차이점이 있다.
- Alias 레코드는 CNAME과는 달리 최상위 도메인을 가리키는 데 사용된다.
- Alias 레코드는 CNAME 보다 속도가 빠르다. (추가적인 조회 없이 직접적으로 AWS 서비스로 매핑하기 때문에)
- CNAME 레코드는 서브도메인에 대한 별칭을 만드는 데 사용되지만, 최상위 도메인 또는 레코드 세트의 별칭을 만들 때는 사용할 수 없습니다. 이러한 경우 Alias 레코드를 사용합니다.
👨🏫 ALIAS 레코드의 예시
작성 할 때 Alias를 ON으로 설정해야 된다. 그리고 레코드 타입은 A 또는 AAAA 또는 CNAME
도메인 이름 | Class | Record Type | 주소 |
alias.example.com. | IN | A | some-service.amazonaws.com. |
실제 AWS에서 Alias 레코드를 사용하고 싶을 경우, 레코드를 작성할 때 Alias를 ON/OFF로 하는 버튼이 있다. 이걸 ON으로 바꾸고 레코드 타입은 A로 주로 설정한다.
🤔 SAA-C03 문제
Route 53에서 S3의 정적 웹사이트 호스팅 엔드포인트 "example.s3-website-us-east-1.amazonaws.com"의 별칭으로 독자 도메인명 "www.example.com"을 등록하고자 합니다. DNS 쿼리에 대한 응답을 더 빠르게 하려면 어떤 DNS 레코드를 사용해야 할까요?
- A 레코드
- AAAA 레코드
- CNAME 레코드
- Alias 레코드
정답
정답. 4번
Alias 레코드
S3의 정적 웹사이트 호스팅 엔드포인트(URL)와 같은 AWS 서비스의 일부는 도메인명에 할당되는 IP 주소가 동적으로 변하기 때문에, 고정 IP 주소를 등록해야 하는 A 레코드를 설정할 수 없다.
이러한 서비스에 독자 도메인명을 별칭으로 할당하고자 할 때는 CNAME 레코드 또는 Alias 레코드를 사용한다.
이 중 Alias 레코드는 AWS 서비스의 도메인명에 할당된 별칭에서 직접 IP 주소로 이름 해석이 가능하므로, CNAME 레코드를 사용하는 것보다 DNS 쿼리에 대한 응답이 더 빨라진다.