프로젝트 GORANG 개발 기록

서비스 배포하기: 1. AWS Route53 기반의 DNS 관리

프린이8549 2024. 8. 2. 17:36

 

(AWS EC2, RDS 를 통한 배포가 선행됐음을 가정)

 

주요 개념 : IPv4, Domain, TLD, DNS 관리, 호스팅 영역, A 레코드, NS 레코드, SOA 레코드, CNAME 레코드

 

배포가 성공했다면 이제부터는 "http://퍼블릭 ip:8080" 으로 접속할 수 있게됩니다. 그러나 ip 주소를 드러내는 것, 매번 사이트에 접속할 때마다 ip 주소를 입력하는 것 등은 보안성과 사용성에 치명적인 약점이라고 할 수 있을 겁니다. 따라서 우리는 "www.naver.com" 과 같은 DNS 를 통해 사용자가 서비스에 접근하도록 해줄 필요가 있습니다. 지금 소개하는 과정은 우리의 퍼블릭 IP 주소 + 포트 번호 조합의 URL 에서 도메인 네임.com 과 같은 URL 을 통해 서비스에 접근하는 DNS(Domain Name System) 을 구축하는 과정입니다.

 

본 과정에서는 DNS를 관리해주는 AWS Route53 서비스를 활용하였습니다.

 

DNS 를 관리하기 위해서는 먼저 사이트에서 사용할 도메인을 정해야합니다. 

PreStep. 도메인 생성(구매)

저는 가비아(www.gabia.com)를 이용해서 도메인을 구입하였습니다(무료로 도메인을 생성하는 방법도 있다고 합니다)

 

도메인은 "."을 기준으로 오른쪽을 최상위 도메인(Top-Level Domain;TLD) 라고 하는데, ".com", ".net" 등의 TLD는 웬만하면 사용중이고 ".kr" 등은 높은 값을 지불하고 사용해야합니다.

 

따라서 저는 울며겨자먹기로 ".store" 라는 TLD 를 500원에 구매하였습니다(위 값들은 1년 기준 비용입니다).

 

도메인을 구매했다면 이제 해당 도메인과 우리 EC2 의 IP 를 연결할 차례입니다.

 

1.  DNS 관리(By AWS Route53)

 

특정 도메인에 대한 DNS 관리(DNS 레코드 저장, 관리) 역할을 수행하는 영역을 호스팅 영역이라고 합니다. 

 

주요 레코드는 A 레코드, NS 레코드, SOA 레코드, CNAME 레코드 등이 있습니다.

 

각 레코드의 역할은 다음과 같습니다.

 

A 레코드(Address Record)

  • 도메인과 IPv4 주소 연결

NS 레코드(Name Server Record)

  • 도메인에 매핑되는 IP 주소로 변환해주는 서버. 브라우저 주소창에 도메인 입력 시 지정된 네임서버 통해 해당 도메인과 연결된 IP 주소를 확인해 연결. 한 네임 서버가 다운될 시 타 네임서버가 요청 처리해주고(고가용성), 트래픽 분산 등의 목적으로 보통 복수의 NS를 보유함

SOA 레코드(Start of Authority Record)

  • 해당 도메인에 대한 가장 기본적인 인증정보 담고 있는 레코드

CNAME 레코드(Canonical Name Record)        *canonical : 표준적인

  • 도메인을 타 도메인 이름과 연결

DNS 를 구축하는 과정은 아래와 같습니다.

 

1. 호스팅 영역 생성  --> 2. SOA 레코드, NS 레코드 생성 --> 3. A 레코드 생성 

 

AWS Route53 에서는 호스팅 영역 생성 시 자동적으로 NS 레코드와 SOA 레코드가 생성됩니다.

 

그렇다면 먼저 AWS Route53 에서 호스팅 영역을 생성하는 방법부터 살펴보겠습니다.

 

1.1. 호스팅 영역 생성 

 

AWS 의 콘솔창에서 Route 53을 접속 후 "Route53 시작하기"를 누릅니다. 그리고 "호스팅 영역 생성"을 선택합니다.

 

 

이후에는 아래의 화면에서 

 

1. 확보한 도메인을 "도메인 이름" 에 입력합니다.

 

2. "퍼블릭 호스팅 영역"을 그대로 선택합니다.

 

3. "호스팅 영역 생성" 버튼을 클릭합니다.

 

이후 나오는 화면은 아래와 같습니다.

 

위 화면에서 보듯이 자동적으로 NS(네임 서버), SOA 레코드가 생성됐습니다. 

 

이후에는 가비아의 도메인에 있는 네임서버값들을 AWS Route53에서 방금 생성한 호스팅 영역의 NS의 4개의 값들로 수정해야합니다.

 

1.2. NS 레코드 설정하기

 

가비아 내 해당 도메인의 "네임서버 설정" 을 클릭합니다.

 

 

AWS Route53 의 NS 레코드의 4개의 값들을 입력해줍니다(이때 각 값들의 마지막 "."은 입력하지 않습니다).

 

이로써 NS 레코드가 설정되었습니다. 다음으로는 A 레코드를 생성합니다.

 

1.3. A 레코드 생성하기

 

 AWS Route53 의 호스팅 영역으로 돌아와서 "레코드 생성" 버튼을 클릭합니다.

 

 

1. "레코드 유형"은 "A-IPv4 주소 및 일부 AWS 리소스로 트래픽 라우팅"을 선택합니다.


2. "값"에는 해당 AWS EC2의 퍼블릭 ip주소(또는 탄력적 ip)를 입력합니다

 

3. "레코드 생성" 버튼을 클릭합니다.

 

이로써 gorang.store 을 제 EC2 의 IP 와 연결하는 작업을 완료했습니다.

 

저는 추가적으로 CNAME 레코드를 만들어 www.gorang.store  를 입력했을 때 gorang.store 로 연결되는 작업을 수행했습니다

 

PostStep. CNAME 생성

 

마찬가지로 1. "레코드 생성" 버튼 클릭 후 

 

2. "레코드 유형"에서  "CNAME ~ " 선택합니다.

 

3. "레코드 이름"은 공백(자동적으로 루트 도메인 연결)

 

4. ""에는 (루트 도메인에)연결하고자 하는 다른 도메인 이름 입력합니다.

 

이로써 최종적으로 제 사이트에 대한 DNS 가 구축되었습니다.

 

이후에는 좀 더 신뢰성 있는 사이트를 위해 HTTPS 프로토콜을 통해 사이트에 접근하는 과정을 소개하고자 합니다. 

 

참고자료

[Domain] 도메인 구성 요소 알아보기. TLD, SLD, root domain, sub domain 아세요? | by naljin | Medium

[Web/AWS] AWS Route53을 이용하여 도메인 연결

DNS 레코드에 대하여 : 네이버 블로그