전체글
일상
코딩
게임
블로그 운영
IT
여행

네이버 클라우드 플랫폼::JSP 호스팅을 해보자 2장 - 외부접속 허용하기

 지난 글에서 네이버 클라우드 플랫폼 서버 생성을 하였습니다. 이제 이 서버를 사용하기 위해서 외부접속이 가능하게 만들어줘야합니다. 네이버 클라우드 플랫폼에서는 외부 접속을 위해 공인IP를 각 서버마다 만들어줘야 합니다.
이번 글에서는 공인IP를 생성해서 서버에 연결한 후, 외부에서 MariaDB에 한 번 접속해 보겠습니다.

JSP 호스팅을 해보자 2장 - 외부접속 허용하기


네이버 클라우드 플랫폼 로고


 이번 글에서는 크게 4가지 작업을 합니다. 명령어 입력시 오타만 없으면 아주 쉽게 쉽게 할 수 있으니 잘 보고 따라 하시기바랍니다.

 

1. 네이버 클라우드 플랫폼 공인 IP 신청

2. 네이버 클라우드 플랫폼 ACG 설정

3. 마리아DB 외부접근 설정

4. 센트OS(리눅스) 방화벽 설정




공인 IP 신청

공인IP


 네이버 클라우드 플랫폼에서는 외부에서 서버 접근을 하기위해서 공인IP라는 것이 있어야합니다. 이 공인 IP는 외부에서의 DB접근 및 웹사이트 구축 후 웹사이트 접속 등에 쓰입니다.


 먼저, 콘솔에서 Server - Public IP 페이지로 들어갑니다. 그 다음 공인 IP 신청을 누릅니다.




공인IP 신청


 공인 IP 신청에서 서버가 있는 Zone(현재 기본으로 KR-2)과 적용할 서버를 선택한 후에 확인을 누릅니다.



공인IP확인


 공인IP 신청이 끝나면 바로 사용할 수 있는 IP가 생성이 됩니다. 이 IP가 DB 접근 및 웹사이트 접속에 사용됩니다.

 예를 들어 마리아DB에 접근을 한다면 106.10.46.218:3306 이런 식으로 IP와 포트를 입력해서 접근할 수 있습니다.



네이버 클라우드 플랫폼 비용


 참고로 이 공인IP는 무료가 아닙니다. 현재 네이버 클라우드 플랫폼에서 Micro 서버는 1년동안 무료로 사용할 수 있게 제공을 해주지만, 외부에서 접속을 하기 위해서 필요한 공인 IP는 유료입니다.

 공인 IP 가격은 1달에 4,032원(부가세 별도)입니다. 현재 신규 가입한 회원은 30만 크레딧을 받기 때문에, 사실상 1년간 무료로 이용할 수 있습니다.


 호스팅 받은 서버를 운용하면 트래픽 이용에 따른 비용도 지불을 해야하는데, 네이버 클라우드 플랫폼에서는 국내회선은 20GB까지 무료로 제공을 해줍니다. 카페24에서 JSP 호스팅을 한다면 월 2만원정도를 지불해야하는 금액입니다.


 네트워크 사용 대한 비용은 https://www.ncloud.com/charge/calc/ko?category=networking 를 참고하시기 바랍니다.


 

ACG 설정

ACG


 단순히 공인IP와 포트가 있다고 외부에서 접속을 할 수는 없습니다. 네이버 클라우드 플랫폼에서는 ACG 라는 기능을 이용해서 방화벽처럼 사용할 수 있습니다. ACG에서는 외부에서 접근 가능한 IP와 포트를 지정해줄 수 있습니다. 

 ACG 설정을 위해서 Server - ACG 페이지로 이동을 합니다. 여기서 현재 서버에 적용되어 있는 ACG를 선택한 후, ACG 설정을 클릭합니다. 저는 기본적으로 주어지는 ncloud-default-acg를 서버에 적용시켰기 때문에 ncloud-default-acg 를 수정하도록 하겠습니다.



ACG 설정


 ACG에서 접근가능한 규칙을 설정하도록 합니다. 일단 MariaDB에 접속할 수 있도록 프로토콜은 TCP, 접근 소스를 0.0.0.0/0 (모든 IP)로 하고 허용 포트를 3306(MySql, MariaDB 기본포트)로 지정해주고 추가를 누릅니다.



ACG 설정 추가


 이왕 ACG 설정을 하는 김에 외부에서 접속할 수 있는 모든 포트를 지정해주도록 합니다. 저는 총 4개의 포트를 열어주었습니다.


 3306 : 마리아디비

 8080 : 톰캣 서버

 80 : 톰캣 운영 포트

 443: SSL 톰캣 운영 포트



MariaDB 외부연결 설정

네이버 클라우드 플랫폼 서버 생성시 MariaDB 서버로 생성한 경우에는 외부접속을 위해서 my.cnf를 수정할 필요가 없습니다.


MariaDB를 따로 설치한 경우에는 my.cnf를 수정하시기 바랍니다. 이 링크를 참고하시면 됩니다.



마리아디비 연결


 이제 외부에서 마리아DB에 접속할 수 있게 설정해줄 차례입니다. 먼저 PuTTY를 이용해서 네이버 클라우드 플랫폼에서 만든 서버에 접속을 합니다.

 서버에 접속 후, root 계정으로 마리아DB에 접속합니다. 해당 방법은 1장을 참고해주시기 바랍니다.


 마리아DB에 접속 후, root 계정이 외부에서 접근 가능하도록 권한을 줍니다. 모든 권한과 함께 모든 위치에서 접근가능 하게 아래에 쿼리를 입력해줍니다.

 

 grant all privileges on*.* to 'root'@'%' identified by 'root비밀번호';


 위에 쿼리를 입력한 후에, 권한이 적용 되게 아래에 쿼리도 입력해줍니다.


 flush privileges;



리눅스 방화벽 설정


다음은 센트OS(리눅스)의 방화벽 설정을 통해서 마리아DB 포트를 열어주어야 합니다. 먼저 방화벽(firewalld)이 설치 되어 있는지 확인을 하기 위해 아래에 명령어를 입력합니다.


rpm -qa | grep firewalld


설치가 되어 있으면 위에 이미지처럼 firewalld-filesystem-0.4.3.2-8.e17.noarch 라는 메시지가 나타납니다. 저는 현재 네이버 클라우드 플랫폼에서 2개의 서버를 만들고 운용 중인데, 첫 서버에서는 firewalld가 설치 되어 있지 않아서 따로 설치해주었습니다. firewalld 설치는 이 링크에서 참고하시기바랍니다.


 설치가 된 것이 확인되면 방화벽을 구동시키고 기능이 동작하게 허락을 해주도록 합니다. 아래에 명령어를 입력하시면 됩니다.


systemctl start firewalld

systemctl enable firewalld



마리아 디비 방화벽


 마지막으로, 외부에서 MariaDB에 접근할 수 있게 방화벽 포트를 열어주도록 합니다. MariaDB 기본 포트인 3306 포트를 열어주겠습니다. 다른 포트로 바꾸신 분은 그 포트를 열어주시기 바랍니다.


firewall-cmd --permanent --zone=public --add-port=3306/tcp


 위에 명령어를 입력해서 3306 포트를 공용포트로 사용할 수 있게 추가합니다. 그 다음 리로드를 해서 적용이 되도록 합니다.


firewall-cmd --reload


마리아디비 연결


 이제 DB접속 툴을 이용해서 접속을 해봅니다. 저는 윈도우에서 MariaDB 설치시 번들로 제공하는 HeidiSQL(하이디SQL)로 접속을 해보겠습니다.

 호스트명/IP에 공인IP를 입력하고, 사용자에 root, 암호에 설정한 root비밀번호, 포트는 3306을 입력하고 열기를 누릅니다.



 정상적으로 연결이 되면, MariaDB에 기본 데이터베이스 목록들이 나타나게 됩니다. 이제 외부(윈도우)에서 DB 툴을 이용해서 쉽게 DB를 조작할 수 있습니다.



마리아DB 외부접속이 안될 경우 확인해야하는 사항 5가지


1. 포트포워딩 IP가 아닌 공인IP인지 확인한다.

2. 네이버 클라우드 플랫폼 ACG 설정을 확인한다.

3. 리눅스 방화벽(firewalld)를 확인한다.

4. DB계정에 외부접속 권한을 줬는지 확인한다.

5. /etc/my.cnf 수정해서 접근 제한을 풀어준다.