개발 이야기/인프라

[AWS에 Spring 초간단 배포하기] DNS 설정

제이온 (Jayon) 2022. 4. 30.

 

안녕하세요? 제이온입니다.

 

초보자를 대상으로 하는 [AWS에 Spring 초간단 배포하기]의 네 번째 시간은 DNS 설정입니다. 이전 1~3편 내용을 모두 따라오셨다고 가정하고 진행하겠습니다.

 

 

DNS란?

현재 우리는 EC2의 퍼블릭 아이피를 이용하여 터미널 외부에서 스프링과 통신하고 있습니다. 하지만 외부에 퍼블릭 아이피를 공개하는 것은 위험하고, 숫자로 된 아이피를 기억하기 어렵습니다. 따라서 아이피를 우리가 보기 쉬운 문자 형태인 도메인으로 바꾸는 것을 선호합니다. 이때 아이피를 도메인으로 바꿔 주고, 도메인을 다시 아이피로 변환하는 시스템을 DNS라고 합니다.

 

DNS 세팅

무료 도메인 발급

 

먼저 https://내도메인.한국/ 사이트에 접속하여 회원 가입을 합니다.

 

 

그리고 일반 도메인에 원하는 도메인 명을 입력하고 [검색] 버튼을 누른 후, 하단에 도메인 검색 결과 중 하나를 선택하여 [등록하기] 버튼을 누릅니다. 저는 member-service.p-e.kr 을 선택했습니다.

 

 

도메인 발급이 완료되면, 우리의 EC2 퍼블릭 아이피와 연결해야 합니다. 위 사진과 같이 IP연결 버튼을 클릭하고, 퍼블릭 아이피를 작성한 뒤, [수정하기] 버튼을 누릅니다.

 

 

이제, 외부에서 복잡한 아이피 주소가 아니라 도메인 만으로 스프링과 통신할 수 있습니다.

 

포트 포워딩

현재 도메인:8080 방식으로 요청을 보내고 있는데, 뒤에 8080 포트 번호를 붙이는 것도 번거롭습니다. 따라서 외부에서 80번 포트로 요청이 오면, 리눅스 단에서 8080번 포트로 포워딩하여 스프링 애플리케이션과 연결해 주겠습니다.

 

$ iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080
$ sudo iptables -t nat -L --line-numbers

Chain PREROUTING (policy ACCEPT)
num  target     prot opt source               destination
1    REDIRECT   tcp  --  anywhere             anywhere             tcp dpt:http redir ports 8080

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
num  target     prot opt source               destination

Chain POSTROUTING (policy ACCEPT)
num  target     prot opt source               destination

 

EC2에서 위 두 가지 명령어를 치면 됩니다.
첫 번째 명령어는 모든 80번 포트 요청은 8080번 포트로 포워딩하겠다는 의미이고,
두 번째 명령어는 iptables의 Chain 정보를 확인하겠다는 의미입니다.

 

 

하지만 80번 포트로 요청을 보내도 연결할 수 없다는 에러가 발생했습니다. 왜 그럴까요?

바로, EC2 보안 그룹에서 80번 포트를 열지 않았기 때문입니다.

 

 

보안 그룹에서 80번 포트를 추가해 주면 됩니다. 또한, 80번 포트를 내부적으로 8080번 포트로 포워딩하였으므로 더 이상 보안 그룹에서 8080번 포트를 열어줄 필요가 없습니다. Spring Port로 열어 둔 2개의 8080 포트를 삭제합시다.

 

 

참고로 HTTP 프로토콜은 기본 포트가 80번, HTTPS 프로토콜은 기본 포트가 443번이므로 각각 URL에 포트 번호를 붙이지 않고도 요청을 보낼 수 있습니다. 그래서 http://member-service.p-e.kr만 입력해도 스프링과 요청이 가능합니다.

 

정리

무료 도메인을 발급 받고, EC2의 public IP와 도메인을 서로 변환할 수 있는 DNS를 설정하였습니다. 또한, 일반적인 HTTP 포트를 사용하기 위해 80번 포트를 8080번 포트로 변환하는 포트 포워딩 기술을 적용하였습니다.

 

하지만, HTTP 프로토콜은 Header, Body 등의 평문 데이터가 서버로 전송될 때 모두 노출되므로 보안에 취약하다는 문제가 있습니다. 그래서 일반적으로 보안이 강화된 HTTPS 프로토콜을 사용합니다. 이를 적용하기 위해서는 SSL 인증서를 발급 받고, 웹 서버에서 SSL 프로토콜을 적용해야 합니다. (HTTPS는 SSL 프로토콜로 암호화한 HTTP 프로토콜이라 생각하면 됩니다.)

 

다음 시간에는 무료 SSL 인증서를 발급 받고, 대표적인 웹 서버인 nginx를 활용하여 SSL 프로토콜을 적용하여 HTTPS 프로토콜을 설정해 보겠습니다.

 

댓글

추천 글