◇ 공부 기록용으로 작성하였으니 틀린 점, 피드백 주시면 감사하겠습니다 ◇
Domain Name System Record (도메인 이름 시스템 레코드)
DNS Record
DNS 레코드는 도메인 이름과 관련된 정보를 저장하는 데이터베이스 항목이다.
DNS 서버로 패킷(Packet)/요청이 들어왔을 때 어떤 식으로 패킷을 처리할지를 나타내는 지침과 같다.
도메인 | 매핑하는 목적지 | 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 Record Types (DNS 레코드 타입)
다양한 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
▶ TTL (Time to Live)란?
TTL(Time to Live)은 DNS 서버가 특정 DNS 레코드를 얼마나 오래 캐시에 유지할지 정하는 시간을 뜻한다.
TTL의 단위는 "초"이다. 다음은 TTL에서 값의 예시이다.
TTL | 시간 |
600 | 10 분 |
3600 | 1 시간 |
21600 | 6 시간 |
43200 | 12 시간 |
86400 | 24 시간 |
▶ DNS 클래스(Class)란?
DNS 클래스는 3 가지 유형이 있다
IN (Internet):
가장 널리 사용되는 클래스로, 대부분의 DNS 레코드가 이 클래스를 사용한다.
인터넷을 기반으로 하는 DNS 레코드를 나타낸다.
CH (CHAOS):
주로 실험 및 테스트 목적으로 사용되는 클래스이다.
시스템 정보 및 실험용 레코드를 사용할 때 참조된다.
HS (Hesiod):
주로 특정 응용 프로그램에 의해 사용되는 클래스이다.
헤시오드(Hesiod)는 네트워크 정보를 분산 관리하는 데 사용되는 프로토콜이다.
▶ Apex 도메인이란?
Apex 도메인은 도메인 이름 계층에서 최상위에 위치하는 도메인을 의미한다.
즉, 하위 도메인이 없는 루트 도메인(root domain)이다
A / AAAA와 CNAME 레코드 정리
A/AAAA와 CNAME의 가장 큰 차이점은 A/AAAA 레코드는 IP 주소로, CNAME 레코드는 도메인 네임으로 매핑한다는 점이다.
A 레코드 / AAAA 레코드 | CNAME 레코드 | |
레코드 대상 | IP 주소 (A: IPv4, AAAA: IPv6) | 도메인 네임 |
사용 예시 | example.com → 192.168.1.1 | http://www.example.com → example.com |
성능 | 직접적 IP 주소로 매핑하기 때문에 빠르다 | 추가적인 DNS 조회가 필요하므로 약간의 성능 손실 |
Apex 도메인 | 지원, 사용 가능 | 지원하지 않음 |
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 |
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 레코드는 Apex 도메인(최상위 루드)에서 사용할 수 없다.
👨🏫 CNAME 레코드 예시
도메인 이름 | Class | Record Type | 주소 | TTL |
example.com. | IN | CNAME | power.com. | 14400 |
power.com. | IN | A | 192.0.2.1 | 3600 |
Alias 레코드: AWS의 Route53에서 사용하는 레코드
Alias Record (Route 53)
Alias 레코드는 Route 53에서 사용되는 고유한 DNS 레코드 타입이다.
Alias 레코드는 Route 53을 AWS 리소스(예: CloudFront, ElB, S3 등)와 연결할 때 사용된다.
예시) Route 53에서 example.com
도메인을 Alias 레코드로 CloudFront의 d1234abc.cloudfront.net
에 연결
👨🏫 Alias 레코드의 예시
도메인 이름 | Record Type | AWS 서비스 엔드포인트 |
alias.example.com. | A | some-aws-service.amazonaws.com. |
Alias 레코드를 작성할 때 Alias를 ON/OFF 하는 버튼이 있는데 ON으로 설정해야 된다.
그리고 Record type은 A 레코드 또는 AAAA 레코드를 선택한다.
Alias 레코드 vs. CNAME 레코드
헷갈리수 있으니 정리해 보았다.
Alias 레코드 | CNAME 레코드 | |
용도 | AWS 서비스와 연결하기 위해 사용 | 다른 도메인과 연결하기 위해 사용 |
Apex 도메인 (최상위 도메인) |
✅ 최상위 도메인 사용할 수 있다. | ❌ 최상위 도메인에서 사용할 수 없음 |
사용 예시 | example.com → CloudFront example.com → S3 |
dr.example.com → example.com |
속도 | CNAME 보다 빠르다 (추가적인 조회 없이 직접적으로 AWS 서비스로 매핑하기 때문에) |
추가 DNS 조회가 필요하므로 상대적으로 느릴 수 있음 |
🤔 문제
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 쿼리에 대한 응답이 더 빨라진다.
🤔 문제
새로운 웹사이트는 Amazon EC2 인스턴스 뒤에 Application Load Balancer가 배치되어 실행됩니다. Amazon Route 53은 DNS 레코드를 관리하는 데 사용됩니다.
웹사이트의 apex 도메인 이름(예: company.com)을 Application Load Balancer로 연결하려면 Route 53에서 어떤 유형의 레코드를 설정해야 합니까?
- CNAME
- SOA
- TXT
- ALIAS
정답
정답. 4번
Alias 레코드