DNS로 웹 서비스에 도메인 연결
DNS 영역을 생성하고, 해당 DNS 영역에 레코드를 설정하여 웹 애플리케이션과 도메인을 연결하는 예시를 안내합니다.
- 예상 소요 시간: 20분
- 사용자 환경
- 권장 운영 체제: MacOS, Ubuntu
- Region: kr-central-2
- 사전 준비 사항
- 도메인
- VM 기반의 웹서비스 구성
- SSL/TLS 인증서
시작하기 전에
이 문서에서는 도메인을 통해 접근할 웹 서비스를 구성하는 법을 다루지 않습니다. 해당 튜토리얼을 진행하기 위해서는 도메인에 연결할 웹 서비스의 IP 주소가 필요합니다. VM 기반의 웹서비스 구성 문서를 참고하여 도메인을 통해 접근할 웹 서비스를 구성하거나, 기존에 미리 구성해 둔 서비스의 웹 서버 IP 주소를 준비하시길 바랍니다.
카카오클라우드에서는 도메인 등록을 대행하지 않습니다. 인증된 도메인 등록 기관(ex. 가비아, HOSTING.KR 등)에서 사용할 도메인을 사전에 준비하시길 바랍니다.
시작하기
Step 1. DNS를 사용하여 도메인 설정
DNS(Domain Name System)는 머신이 읽을 수 있는 IP 주소를 사람이 읽을 수 있는 도메인 이름으로 변환하거나, 혹은 그 반대로 변환해주는 데 사용합니다. DNS를 이용하여 복잡한 IP 주소 대신 쉽고 간단한 도메인 이름을 통해 웹 사이트에 접속할 수 있습니다. 이 단계에서는 카카오클라우드의 DNS 서비스와 외부 도메인 등록 기관을 통해 도메인을 설정하는 방법을 안내합니다.
-
카카오클라우드 콘솔 > Beyond Networking Service > DNS 메뉴로 이동합니다.
-
DNS 영역 메뉴에서 [DNS 영역 생성] 버튼을 클릭한 후, 다음과 같이 DNS 영역을 생성합니다. 등록할 도메인을
example.com
으로 가정하여 튜토리얼을 진행합니다.example.com
이 입력된 곳에 준비한 도메인 값을 넣어주시길 바랍니다.항목 입력값 DNS 영역 이름 example.com
DNS 영역 설명(선택) tutorial -
DNS 영역 목록 화면에서
example.com
을 누른 후, 상단의 네임서버에서 카카오클라우드 네임서버 주소를 확인합니다. -
도메인을 구매한 도매인 등록 기관 사이트로 이동하여, 구매한 도메인의 관리 페이지에서 네임서버를 카카오클라우드 네임서버로 설정합니다.
-
정상적으로 설정하였는지 확인한 뒤, 카카오클라우드 콘솔로 돌아옵니다.
Step 2. 도메인 이름에 대한 레코드 설정
DNS 레코드는 DNS 서버가 받은 접근 요청에 대한 처리 방식 정보로, 각각의 레코드를 통해 특정한 유형의 정보를 제공하거나 DNS를 통해 웹 브라우저가 올바른 서버에 연결할 수 있도록 돕습니다. 해당 튜토리얼에서는 가장 대표적인 유형인 A 레코드와 CNAME 레코드를 설정하는 방법에 대해 안내합니다. 더 자세한 레코드 유형 정보는 DNS 레코드에서 확인하시길 바랍니다.
카카오클라우드의 로드 밸런서로 통신하기 위해서는 로드 밸런서에 퍼블릭 IP를 연결하고, 해당 IP 주소를 통해 접근할 수 있습니다. 이 경우, A 레코드를 추가하여 로드 밸런서의 퍼블릭 IP 주소와 루트 도메인을 매핑하고, 매핑한 도메인을 통해 서비스에 접근해야 합니다. 이때, 퍼블릭 IP 주소는 하나 또는 여러 개를 추가할 수 있습니다.
추가적으로 CNAME 레코드를 통해 루트 도메인을 다른 도메인으로 매핑하는 방법도 가능합니다. CNAME 레코드를 사용할 경우 중복을 방지하고 더욱 효과적으로 서브 도메인들을 관리할 수 있습니다. 예를 들어, 여러 개의 서브 도메인이 같은 IP 주소를 가리키는 경우, 모든 서브 도메인에 대해 IP 주소를 변경하는 대신 단일 CNAME 레코드를 업데이트하여 중복을 방지할 수 있습니다. 만약 CNAME 레코드를 사용하여 도메인을 연결하려면 STEP 2-2. CNAME 레코드 추가하기까지 실습을 진행해 주시기 바랍니다.
DNS 전파에는 시간이 걸릴 수 있으며, 추가한 레코드가 반영되는 과정에서 해당 도메인에 접근할 때 오류가 발생할 수 있습니다.
1. A 레코드 추가
도메인을 IPv4 주소로 매핑하는 A 레코드를 추가하는 방법은 다음과 같습니다.
-
DNS > DNS 영역 탭에서 위에서 생성했던
example.com
을 눌러 상세 페이지로 이동 후, 하단의 [레코드 추가] 버튼을 클릭합니다. -
다음과 같이 항목을 설정합니다. 루트 도메인에 대한 레코드로 생성하기 위해, 레코드 이름은 빈칸으로 설정합니다. [추가] 버튼을 눌러 레코드를 추가합니다.
항목 설정/입력값 레코드 유형 A 레코드 이름 (공백) TTL 60 값 Web 서버 로드 밸런서의 퍼블릭 IP
- Load Balancing > Load Balancer 탭 > tutorial-web-lb의 퍼블릭 IP에서 확인 가능 -
인터넷 브라우저에
example.com
을 입력합니다. 정상적으로 연결된 경우, 아래와 같이 '카카오클라우드 도서관' 서비스 화면을 볼 수 있습니다.
2. CNAME 레코드 추가
도메인 이름을 다른 이름으로 매핑하는 CNAME 레코드를 추가하는 방법은 다음과 같습니다.
-
example.com
DNS 영역 상세 페이지에서 [레코드 추가] 버튼을 클릭합니다. -
다음과 같이 항목을 설정하여, 루트 도메인을 CNAME 레코드를 통해 매핑합니다.
항목 설정/입력값 레코드 유형 CNAME 레코드 이름 www TTL 60 값 example.com.
-
인터넷 브라우저에
www.example.com
을 입력합니다. 정상적으로 연결된 경우, 아래와 같이 '카카오클라우드 도서관' 서비스 화면을 볼 수 있습니다.
Step 3. 결과 확인
nslookup
명령어를 통해서도 결과를 확인할 수 있습니다. 사용자의 로컬 머신에 nslookup
명령어를 입력하여 DNS 정보를 확인합니다.
nslookup example.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer:
Name: example.com
Address: #.#.#.#
nslookup www.example.com
Server: xxx.xxx.xxx.xxx
Address: xxx.xxx.xxx.xxx#53
Non-authoritative answer:
www.example.com canonical name = example.com.
Name: example.com
Address: #.#.#.#
부록. ALB에 SSL/TLS 인증서 연결하기
SSL/TLS 인증서는 Load Balancer를 통과하는 모든 데이터를 암호화합니다. 암호화는 데이터가 송수신되는 동안 외부에서 읽히거나 변경되는 것을 방지하고, 이를 통해 웹 트래픽의 보안을 강화할 수 있습니다. 또한 대부분의 검색 엔진에서는 SSL/TLS를 사용하는 웹사이트를 우대하고 있으므로, SSL/TLS를 사용하면 웹사이트의 검색 엔진 순위가 향상될 수 있습니다.
7계층인 Application Load Balancer(ALB)에는 HTTPS 리스너를 추가하여, 4계층의 Network Load Balancer에는 TLS 리스너를 추가하여 SSL/TLS 인증서를 연결할 수 있습니다.
해당 예제에서는 Application Load Balancer의 리스너에 SSL/TLS 인증서를 연결하고, 리스너를 통해 웹 서버와 브라우저 간에 HTTPS 통신하는 법을 안내합니다.
예제에 쓰인 인증서는 example.com
과 www.example.com
두 개의 도메인에 대해서 유효합니다.
카카오클라우드에서는 인증서를 발급하고 있지 않습니다. 등록한 도메인에 대한 인증서는 CA 기관에서 발급받는 것을 권장합니다.
Step 1. 리스너 추가하기
-
Load Balancing > Load Balancer 탭에서 생성해두었던 tutorial-web-lb를 클릭합니다.
-
하단의 리스너 탭을 누른 후, 오른쪽의 [리스너 추가] 버튼을 클릭합니다.
-
다음과 같은 항목을 입력하여 리스너를 새로 생성합니다.
구분 항목 설정/입력값 프토토콜 : 포트 설정 프로토콜 HTTPS 포트 443 기본 전달 대상 Target Group tutorial-web-target-group 최소 TLS 버전 TLSv1.2 기본 SSL 인증서 위 도메인에 대한 인증서 -
인증서를 등록해두지 않았다면, 드롭다운 버튼을 클릭 후, [새 인증서 추가] 버튼을 클릭합니다.
-
다음과 항목을 입력한 후, [추가] 버튼을 눌러 인증서를 추가합니다.
구분 항목 설정/입력값 SSL 인증서 인증서 프라이빗 키 -----BEGIN RSA PRIVATE KEY-----
프라이빗 키
-----END RSA PRIVATE KEY-----인증서 본문 -----BEGIN CERTIFICATE-----
인증서
-----END CERTIFICATE-----인증서 체인 -----BEGIN CERTIFICATE-----
인증서 체인
-----END CERTIFICATE-----팁현재 카카오클라우드에서는 PEM 형식의 인증서만을 등록할 수 있습니다. 다운로드 받은 인증서들의 확장자가
.key
거나,.crt
라면, 해당 파일을 우클릭하여 이름 변경 > 확장자를.pem
으로 수정하면 손쉽게 파일 형식을 변경할 수 있습니다. -
모든 항목을 기입했다면 [추가] 버튼을 눌러 리스너를 추가합니다. 리스너의 생성이 완료되는 데까지는 3~5분 정도의 소요시간이 있을 수 있습니다.
Step 2. HTTP를 HTTPS로 Redirection하기
-
프로토콜:포트가 HTTP : 80인 리스너를 누르고, 하단의 [+ 규칙 추가] 버튼을 누릅니다.
-
다음과 같은 항목을 입력한 뒤, [추가] 버튼을 클릭하여 규칙을 추가합니다. 규칙이 적용되는 데까지는 3~5분 정도의 소요시간이 있을 수 있습니다.
구분 항목 설정/입력값 순서 설정 1 조건 설정 유형 Path 값 /
비교 방식 일치 동작 설정 동작 방식 Redirect to URL 프로토콜 HTTPS URL www.example.com
Step 3. 결과 확인
정상적으로 연결된 경우, http://www.example.com
이나, http://example.com
을 입력하여도 다음과 같이 https://www.example.com
으로 리다이렉트되는 것을 확인할 수 있습니다.