AWS Route 53 에 도메인 등록하여 사용하기

redwood
8 min readFeb 2, 2019

--

Route 53은 AWS에서 제공하는 관리형 DNS (Domain Name System)서비스입니다. DNS 서비스는 아시다시피 도메인 또는 호스트명을 IP로 변환해주는 서비스입니다. DNS 서비스는 계층적으로 구성되어 있어, 특정 도메인을 서비스하는 DNS를 On-premise 환경에 구축해야합니다. 그러나 클라우드 환경에서는 Route 53같은 DNS 서비스로 손쉽게 사용할 수 있습니다.

이번 블로그에서는 DNS에 대한 기술적인 내용을 살펴보고 Route 53을 통해서 실습을 해보도록 하겠습니다.

DNS 주소 변환 과정

Linux 에서 nslookup www.google.com 을 수행하면 리눅스시스템 라이브러리의 libc에 있는 resolver라는 리졸버 루틴이 /etc/resolv.conf에 기재된 DNS서버를 이름 분석을 위한 캐시DNS서버로 이용합니다. 캐시DNS서버에 도메인에 해당하는 IP주소 정보를 물어봅니다. 만약 캐시 DNS 서버에 찾는 도메인이 없다면 루트 도메인부터 시작해서 최하위 도메인까지, 각 도메인의 네임스페이스를 관리하는 DNS서버에 되물어봅니다. DNS서버는 하나로 구성되어 있지 않고 계층적으로 구성된 분산데이터베이스로 구성되어 있습니다. 따라서 Sub Domain에 대한 질의는 하위DNS서버에 위임을 하게 됩니다. 이런 과정을 통해서 요청한 도메인의 IP주소를 알 수 있게 됩니다.

테스트용 웹서버 만들기

먼저, 테스트로 사용할 EC2 서버를 먼저 생성하도록 하겠습니다. EC2 서버는 기본 설정으로 생성을 하겠습니다. User Data에 웹서버를 구성하는 간단한 스크립트를 추가해줍니다.

User Data에서 사용된 스크립트는 EC2가 처음 구동할 때만 수행됩니다.

#!/bin/bash
yum install -y httpd git
service httpd start
chkconfig httpd on
chmod 755 /var/www/html
cd /var/www/html
echo "Test My Web Server" > index.html

리부팅 이후에도 Public IP가 변경되지 않도록 Elastic IP를 생성해서 EC2에 할당해 줍니다. 웹브라우저로 EC2 서버의 Public DNS(또는 Elastic IP)로 접속을 해보도록 하겠습니다.

Public DNS 확인 화면

정상적으로 서비스가 되는 것을 확인할 수 있습니다.

Public DNS로 접속한 결과

도메인 등록하기

Public DNS은 복잡하게 되어 있기 때문에 나만의 도메인을 등록하여 사용하도록 설정하겠습니다. 도메인을 등록하기 위해서는 Registrar 서비스에 신청해야 합니다. 국내에는 가비아를 통해 등록이 가능하나 편의상 Route 53를 통해서 구매하도록 하겠습니다.

먼저 등록하는 도메인 명이 가용한지 체크를 하고 금액을 보여줍니다.

seungbeom.me 도메인 등록 화면

그리고 나서, Contact Details 정보를 입력하면 AWS에 등록된 신용카드로 구매를 할 수 있습니다. 참고로 Credit을 가지고 있지만 Domain은 Credit을 구매할 수 없다는 창이 뜨네요. 도메인명은 등록이 완료가 되었습니다.

도메인 구매 완료 화면

Hosted Zone 생성

seungbeom.me Zone을 호스팅하기 위해서 Hosted Zone을 생성합니다. 생성하려고 보니 이미 자동으로 등록되어 있네요. AWS 상에서 Domain을 구매해서 그런 것 같습니다.

도메인(Domain)은 호스트명의 집합입니다. 도메인은 기업 같은 조직에 의해 관리되며, 도메인 내의 호스트에는 공통된 호스트명이 사용됩니다. 예를 들면, www.naver.com (웹 서버), mail.naver.com (메일 서버) 와 같이 네이버에서 사용되는 모든 호스트명에는 naver.com 이라는 도메인명이 붙여지는 식입니다.

존(Zone)은 DNS 서버가 관리하는 범위를 의미합니다. 구체적으로 어떤 DNS 서버에 등록된 리소스 레코드의 집합이 존에 해당합니다. DNS 서버에 등록된 리소스 레코드의 집합을 ‘Zone file’ 또는 ‘Zone 정보’ 라고 부르기도 합니다.

Hosted Zone 생성 화면

A 레코드 사용해보기

A 레코드을 등록해 IP (54.180.67.167)를 호스트명 (blog.seungbeom.me)으로 연결하겠습니다. 참고로, 54.180.67.167은 웹서버에 등록된 Elastic IP 입니다.

DNS 레코드 중 A 레코드는 FQDN 에 대한 IPv4 주소 정보를 의미하며, CNAME(Canonical Name)은 FQDN의 별칭입니다.

A 레코드를 등록하고 blog.seungbeom.me로 접속해보면 정상적으로 조회되는 것을 확인할 수 있습니다.

A 레코드 별칭(Alias) 사용해보기

A레코드는 Apex domain을 등록할 수 없습니다. 따라서, A 레코드 별칭으로 Apex domain을 등록하겠습니다.

Name : seungbeom.me,

Alias : Yes,

Alias Target : blog.seungbeom.me

등록후에 웹브라우저에서 blog.seungbeom.me대신 seungbeom.me를 조회를 해봅니다.

A Record Alias 생성 화면

정상적으로 조회가 됩니다.

seungbeom.me 로 조회한 화면

CNAME 사용해보기

이번에는 seungbeom.me도메인에 별칭을 생성해보도록 하겠습니다. 별칭은 cname.seungbeom.me을 사용합니다. 생성 방법은 Type에 CNAME-Canonical name을 선택하고 별칭을 Value에 입력하면 됩니다.

CNAME 생성화면

등록한 CNAME (cname.seungbeom.me)으로 웹브라우저에서 조회를 해보겠습니다. 내용이 정상적으로 출력되는 것을 확인할 수 있습니다.

CNAME을 사용해 Redirect 하기

CNAME을 사용해 같은 Zone에 있지 않은 Domain Name으로 Redirect가 되는지 테스트를 해보도록 하겠습니다. CNAME Record 생성할 때 value 필드에 Redirect 하고자하는 주소를 입력합니다. 여기서는 medium.com를 사용하였습니다.

CNAME Record 등록화면

웹브라우저에서 CNAME(redirect.seungbeom.me)으로 조회를 한 결과 Redirect가 안되고 Error가 발생합니다.

Error 발생

S3 Static Web Hosting Redirect 기능 이용하기

S3 Static Web Hosting에서 제공하는 Redirect 기능을 사용하여 Redirect을 해보도록 하겠습니다.

먼저, Domain Name과 동일한 이름으로 S3 Bucket을 생성합니다.

S3 Bucket 생성

S3 Bucket을 생성한 후에 Static Website Hosting에서 Redirect기능을 활성화해줍니다. S3 Bucket Endpoint로 접속해보면 medium.com 으로 redirect가 되는 것을 확인할 수 있습니다.

Static website hosting에서 redirect 설정

Route 53 서비스로 이동해서 CNAME을 변경하도록 하겠습니다. CNAME의 Value 값을 방금 생성한 S3 Bucket Endpoint로 변경합니다.

CNAME을 S3 Bucket Endpoint로 수정

그리고 나서, redirect.seungbeom.me로 접속해보면 medium.com 으로 redirect 되는 것을 확인할 수 있습니다.

redirect.seungbeom.me 조회 결과

--

--