터널링을 이용하여 AWS RDS 접속
스타트업에 이직하고 대표님이 베트남출장을 가면서 앱 시연을 위해 2주안에 외주의뢰를 하여 개발한 2개의 플랫폼을 연동하여 데이터가 동기화 될수 있도록 해야 한다고 전달받았다.
바로 개발을 들어가기엔 너무 안되어 있는것들이 많아 일단 기본적인 세팅을 잡고 개발을 진행하고 싶어 사무실에 있는 PC에 구축되어 있는 서버를 AWS에 옮기는 작업을 시작으로 AWS RDS 인스턴스가 public으로 설정되어 private로 변경하는 작업, 운영서버를 깃허브와 연결하여 개발후 코드를 바로 운영환경에 반영할수 있도록 환경을 구축했다.
그리고 AWS 계정정보, DB정보 등을 저장할 패스워드관리 프로그램을 정하여 개발에 필요한 계정을 모두 정리하는 작업도 진행했다.
모든 작업을 끝내고 개발을 들어가기 전에 로컬환경에 DB서버를 구축하여 개발을 할까 하다가 현재 상용화 되고 있는 플랫폼이 아니기 때문에 AWS에 구축되어 있는 RDS의 인스턴스를 터널링을 통하여 접속하여 로컬에 WAS를 실행하면서 개발을 진행하는게 낫겠다 생각이 들었다.
음.. 일단 터널링에 괜찮은 프로그램을 찾아보자. 예전에 putty에서 지원하는 터널링으로 aws rds db에 접속한적은 있지만
다른 프로그램을 사용하고 싶었다. 그래서 선택한 플랫폼은 MobaXterm!
다른걸 사용해보고 싶었지만. window os에는 이게 제일 난거 같다.
설치한후 프로그램을 실행하면 아래와 같은 화면이 보여진다.
바로 터널링이라고 적혀 있는 카테고리가 보여서 일단 클릭을 해봤다.
그렇게 기대는 안했는데 생각보다 UI가 잘되어 있어서 세팅하는게 쉽게 될거 같았다.
그런데 로컬포트 -> 22포트 -> RDS DB 3306 포트 이런식으로 트래픽이 전달될 것인데...
AWS는 SSH접속시 기본적으로 SSH KEY를 이용하여 접속해야 하는데 SSH KEY를 입력하는 곳이 없었다.
이것저것 해보고 확인한 결과 생성한 후에 생성된 목록에서 오른쪽에 열쇠버튼을 클릭하여 ssh key를 넣어주면 된다.
일단 터널링정보를 세팅하긴 했는데 start all tunnels 버튼을 클릭해도 정지버튼이 활성화 되지 않는걸 봐서는 제대로 실행되고 있는게 아닌거 같다. 오른쪽에서 열쇠 버튼을 클릭하여 ssh key정보를 넣어도 동일했다.
혹시 예전 회사에서 터널링으로 연결할때 로컬포트와 remote포트가 달랐는데 이것 때문인가 싶어 로컬 포트와 remote 포트를 다르게 지정해보았다.
정상적으로 정지버튼이 활성화 된다. 일단 터널링이 잘 작동한거 같다.
이젠 로컬환경에서 aws rds db에 정상적으로 트래픽이 전달되는지 확인해봐야 한다.
윈도우에는 nc명령어를 사용할수 없어 세팅해주기로 했다.
아래 경로에서 netmap를 설치해준다.
netmap을 설치하면 netcat도 사용가능하다.
https://nmap.org/download.html#windows
Download the Free Nmap Security Scanner for Linux/Mac/Windows
Download Reference Guide Book Docs Zenmap GUI In the Movies Older versions (and sometimes newer test releases) are available from the Nmap release archive (and really old ones are in dist-old). For the more security-paranoid (smart) users, GPG detached sig
nmap.org
이젠 ncat 명령어를 리눅스에서 사용하는 것처럼 nc로 입력해서 사용할수 있도록 변경해보자.
아래 내용을 메모장을 열어 입력한후 C:\Windows\System32 경로에 nc.bat 파일명으로 저장한다.
nc 명령어를 쳤을때 os에서 정상적으로 읽어드리는 걸 확인할수 있다.
@echo off
ncat %*
마지막으로 터널링으로 설정한 로컬 포트로 테스트 결과 정상적으로 aws db에 접속하는 걸 확인할수 있다.