AWS

Route 53, DNS 그리고 레코드

recent0 2024. 5. 30. 00:30

서론

최근에 가볍게 AWS 관리를 하기 시작했습니다. 그래서 시작점이 되는 Route53 개념과 더불어 Computer Network에서 자주 언급되는 DNS와 DNS 레코드를 정리하려고 합니다. 이후에는 AWS Route53에서 레코드를 어떻게 관리하는지 예시를 소개해 드리려고 합니다.

DNS(Domain Name System)

먼저 AWS Route 53에 대해 언급하기 전에 알아둬야 할 개념이 DNS 입니다. 예를 들어 tistory.com에 접속하기 위해 주소창에 도메인을 입력합니다. tistory.com을 도메인이라고 말하고, DNS를 사용해 도메인과 실제 IP와 매칭을 시켜서 사이트의 컨텐츠를 볼 수 있게 됩니다. 즉 DNS는 도메인을 IP 주소로 바꾸어주거나 IP 주소를 기억하기 쉬운 도메인으로 바꾸도록 도와주는 분산형 데이터베이스 시스템입니다.

DNS를 이용해 컨텐츠를 찾는 과정

DNS를 통해 IP를 찾아 컨텐츠를 볼 수 있다고 말씀드렸습니다. 실제로 아래와 같은 흐름을 통해 컨텐츠를 조회할 수 있습니다.

출처 : https://docs.aws.amazon.com/ko_kr/Route53/latest/DeveloperGuide/welcome-dns-service.html

  1. 사용자가 웹 브라우저를 열어 주소창에 www.example.com을 입력합니다.
  2. www.example.com에 대한 요청은 KT, SKT와 같은 인터넷 서비스 제공업체(ISP)가 관리하는 DNS Resolver로 라우팅됩니다.
  3. DNS Resolver는 www.example.com에 대한 요청을 Root Name Server에 전달한 후 .com TLD를 관리하는 Name Server에 대한 정보를 획득합니다.
  4. DNS Resolver는 www.example.com에 대한 요청을 응답받은 .com TLD Name Server에 전달합니다. .com 도메인의 Name Server는 example.com 도메인과 연관된 4개의 Route 53 Name Server의 이름을 사용하여 요청에 응답합니다.
    1. DNS Resolver는 4개의 Route 53 Name Server를 캐싱합니다. 다음에 누군가 example.com을 검색할 때, example.com의 Name Server가 캐싱되어 있기 때문에 Resolver는 3, 4단계를 건너뛸 수 있습니다. 
  5. DNS Resolver는 Route 53의 NS를 선택하여 www.example.com에 대한 요청을 해당 Name Server에 전달합니다.
  6. Route 53 Name Server는 example.com 호스팅 영역에서 www.example.com 레코드를 찾아 IP 주소를 반환합니다.
  7. DNS Resolver는 해당 IP 주소를 웹 브라우저로 반환합니다.
  8. 웹 브라우저는 DNS Resolver로 전달받은 IP 주소로 www.example.com에 대한 요청을 전송합니다.
  9. 192.0.2.44에 있는 웹 서버는 리소스를 반환해 사용자에게 보여줍니다.
 

Route 53의 역할

Route 53은 앞에서 언급한 DNS 역할을 할 수 있는 웹 서비스입니다. 그 중 주요 기능으로는 도메인 등록, DNS 라우팅, 상태 확인이 있습니다.

Route53 대시보드

도메인 등록

도메인 등록 메뉴에서는 tistory.com처럼 도메인을 직접 구입하여 사용할 수 있습니다.

Route 53 도메인 등록

DNS 라우팅

DNS 관리 메뉴에서 각 호스팅 영역마다 레코드를 관리하여 도메인에 대한 라우팅 정보를 편집할 수 있습니다.

DNS 레코드 관리

상태 확인

상태검사를 구성하여 상태확인을 통해 장애 대응을 할 수 있습니다.

DNS 레코드별 역할

도메인을 구입만 해서 모든 기능들을 사용할 수 있는 것은 아닙니다. 사용하고 있는 EC2, CDN과 같은 리소스에 접근하기 위해서는 그에 맞는 레코드를 등록하고 수정해야만 합니다.

 

이제 레코드 유형에는 어떤 것들이 있고, 언제 사용되는지 살펴보도록 하겠습니다.

A 레코드

A 레코드는 IPv4 주소를 기반으로 트래픽을 라우팅 할 수 있습니다. 또한 AWS에서는, AWS 리소스로 트래픽을 라우팅할 수 있는 기능을 제공하고 있습니다.

 

예를 들어 특정 도메인을 입력했을 때, 로드 밸런서로 트래픽이 라우팅이 되고 싶다면, 아래와 같이 레코드를 편집할 수 있습니다. A 레코드 유형을 선택하고 레코드 이름에 도메인을 입력한 후, 별칭에서 라우팅 대상이 될 리소스와 리전을 선택하면, ELB로 트래픽이 라우팅 되도록 설정할 수 있습니다.

A레코드를 활용하여 AWS ELB로 라우팅

AAAA 레코드

IPv6 주소 및 일부 AWS 리소스로 트래픽을 전달할 수 있습니다. A 레코드와 거의 유사합니다.

CNAME 레코드

CNAME 레코드는 test.example.com과 같은 현재 레코드의 이름에 대한 DNS 쿼리를 example.com, example.net과 같이 다른 도메인이나, api.test.example.com과 같은 하위 도메인으로도 매핑이 가능합니다.

 

또한 CNAME을 이용하여 기존의 도메인으로부터 다른 도메인을 매핑할 수도 있습니다. 다만 이동하려는 다른 도메인에서 리다이렉션과 같은 추가 설정을 필요로 합니다.

 

CNAME 레코드로 활용할 수 있는 2가지 사례를 소개드리겠습니다.

1. CNAME을 이용하여 ACM 인증서 발급

로드밸런서 규칙에서 443 리스너를 사용하는 경우, 특정 도메인에 대해 HTTPS 인증이 필요합니다. 이런 경우 AWS에서 ACM 인증을 받아 손쉽게 HTTPS 인증을 할 수 있습니다.

HTTPS 443 리스너 ACM 인증서 목록

 

이때 ACM을 발급받는 과정에서 현재 도메인에 대한 인증을 받기 위해 CNAME 레코드를 사용해야 합니다.

cname 레코드를 이용해 ACM 인증

2. CNAME을 이용하여  도메인으로 이동

CNAME을 이용하여 다른 도메인으로 라우팅을 할 수 있습니다. 만약 cname.api.tistory.com 이라는 도메인에 접속하는 경우, api.tistory.com으로 자동으로 라우팅되도록 하고 싶다면 아래와 같이 접속하려는 도메인을 레코드 이름에 입력하고 트래픽 라우팅할 도메인을 값에 입력하면 손쉽게 라우팅을 할 수 있습니다.

 

NS 레코드

NS 레코드는 호스팅 영역에 대한 이름 서버를 식별합니다. 그래서 NS 레코드를 보통 도메인에 대해 인터넷 트래픽이 라우팅되도록 사용합니다. 또한 하나의 도메인에 대해 서브 도메인을 만들어서 사용할 때 또한 NS 레코드를 사용할 수 있습니다.

NS 레코드

여기서 NS 레코드의 값은 왜 4개인가?

네임 서버에 장애가 발생했을 때 다른 NS 레코드 값을 통해서 이를 해결하기 위해서입니다. 그래서 최소 2개 이상을 사용하도록 권장하고 있습니다. 실제로 tistory.com의 NS 레코드를 살펴봤을 때 2개의 Name Server가 있는 것을 확인할 수 있습니다.

tistory.com NS

 

SOA 레코드

SOA(권한 시작) 레코드는 도메인에 대한 기본 DNS 정보를 식별할 수 있습니다. 레코드 관리 탭에서 SOA 레코드의 값을 보면 다음과 같은 형식을 가지고 있습니다.

ns-2048.awsdns-64.net. hostmaster.example.com. 1 7200 900 1209600 86400

순서대로 

  • ns-2048.awsdns-64.net는 SOA 레코드를 생성한 NS 서버
  • hostmaster.example.com. 관리자의 이메일 주소
  • 1은 호스팅 영역에서 레코드를 업데이트할 때마다 선택적으로 증가시킬 수 있는 일련번호. Route 53는 자동으로 숫자를 증가시키지 않음
  • 7200은 부 DNS 서버에서 주 DNS 서버의 SOA 레코드를 쿼리하여 변경 내용을 확인하기 전에 기다리는 새로 고침 시간
  • 900  부 서버에서 실패한 영역 전송을 재시도하기 전에 기다리는 재시도 간격(초 단위)
  • 1209600 재시도를 통해 체크를 계속하다가, 정해진 시간(1209600)이 경과되면 도메인을 더 이상 신뢰할 수 없다고 간주하여 쿼리에 응답하는 것을 멈춤
  • 86400 DNS 쿼리에 지정된 이름을 가진 유형의 레코드가 없는 경우 응답을 캐싱하는데, 이때 캐싱의 TTL

MX 레코드

MX 레코드는 통해 다음과 같은 특징이 있습니다.

  • 도메인에 연결되어 있는 메일 서버를 확인
  • MX 레코드 설정 시 다른 메일 서버가 내 도메인의 이메일을 보내려고 할 때 어떤 서버를 사용할지 알려줄 수 있음(반대도 적용)

MX 레코드 설정

MX 레코드는 다른 레코드와 다르게 우선순위를 정할 수 있습니다. 우선순위를 기반으로 메일을 전송하게 됩니다.

 

 

 

이렇게 DNS, DNS 레코드, Route53 서비스를 이용해 레코드를 관리하는 방법에 대해 알아보았습니다.

조금 더 알아보면 좋은 개념들 남겨주시면 추가해보겠습니다.

감사합니다.

'AWS' 카테고리의 다른 글

AWS Lambda Java With SnapStart  (2) 2024.06.24
AWS VPC, CIDR, Bastion Host  (1) 2024.04.22