본문 바로가기
Projects/AWS

OpenVPN을 통해 Private Subnet에 위치한 RDS 접근하기

by yingtao 2025. 3. 3.

구축 배경

현재 운영하고 있는 서비스의 운영기획팀에서 로컬 환경에서 RDS에 접근해 csv 형태로 추출할 수 있게끔 요청하였다.
처음에는 Lambda + API Gateway를 활용한 방식도 고려했으나 빠르게 진행됐으면 좋겠다는 요구가 있었고,
이에 VPN을 활용해 보안과 효율성을 고려한 방식을 선택하였다.

AWS 환경에서 서버를 구축 중이라 AWS 관리형 VPN 서비스인 ClientVPN도 고려했으나 비용절감을 위해 오픈소스로 제공되는 OpenVPN을 선택하였다.

VPN을 사용하는 사람이 1~2명 정도로 예상되었기 때문에 작은 인프라로도 충분하다고 판단하여
AWS Marketplace에서 제공하는 무료 버전의 OpenVPN 템플릿을 활용해 가장 작은 사이즈의 인스턴스 (t3.micro)로 구축하였다.
(OpenVPN 무료버전은 동시에 최대 2명까지 접속 가능하다)

 

구축 과정

https://aws.amazon.com/ko/blogs/korea/setting-up-openvpn-access-server-in-amazon-vpc/

 

Amazon VPC에서 OpenVPN Access Server 설정 | Amazon Web Services

AWS에서 더 많은 워크로드를 처리하게 되면 인터넷에 공개적으로 서비스를 노출하지 않고 프라이빗 콘텐츠를 제공해야 하는 경우가 발생합니다. 예를 들어 직원용 내부 포털은 일반적으로 프라

aws.amazon.com

해당 문서와 블로그 등을 참고해 진행하였다.

OpenVPN 서버 설치하기

빠른 구축을 위해 AWS Marketplace 템플릿을 활용하였다.

네트워크 설정하기

1) 보안그룹

  • OpenVPN 인스턴스

[인바운드]

943 (TCP) 0.0.0.0/0 OpenVPN 웹 관리 페이지 (Admin UI) 접속을 위한 포트
916 (UDP) 0.0.0.0/0 OpenVPN 클라이언트 연결을 위한 포트
22 (TCP) 관리자 IP 대역 SSH 접속을 위한 포트 (보안을 위해 특정 IP만 허용)
3306 (TCP) RDS 보안그룹 id와 연결 OpenVPN을 통해 RDS (MySQL)로 접근 가능하도록 설정
443 (TCP) 0.0.0.0/0 OpenVPN 클라이언트 웹 UI 및 HTTPS 통신을 위한 포트

[아웃바운드]

0.0.0.0/0 모든 트래픽 허용 (VPN을 통한 인터넷 및 내부 네트워크 접근 허용)

 

  • RDS

[인바운드]

3306 (TCP) OpenVPN 보안그룹 id와 연결 OpenVPN가 RDS (MySQL)로 접근 가능하도록 설정

 

2) ACL

ACL의 경우 이미 모든트래픽을 허용해놨긴 하지만 MySQL 포트도 추가로 허용해줬다.

 

3) 라우팅 테이블

라우팅 테이블이 VPC 대역(10.0.0.0/16) 내 이미 다음과 같이 잘 세팅된 상태에서
처음에 멋모르고 더 좁은 범위인 OpenVPN IP 대역을 넣어버려서 기존의 서비스들이 통신이 안되는 상황이 발생했었다..^_^;
내부 네트워크와의 연결이 단절되는 바람에 서비스 장애가 발생할 뻔…

추가했던 OpenVPN IP 대역을 삭제하고 원래 상태로 복구하여 문제를 해결했다..!

퍼블릭 서브넷 라우팅테이블
프라이빗 서브넷 라우팅테이블

OpenVPN 구성

여기까지 AWS 상에서 네트워크 설정을 마치면 OpenVPN 세팅을 위해 SSH 로 서버에 접속한다. 
이때 AWS에서 제공하는 연결 방식에서 root 계정이 아닌 openvpnas 계정으로 접속해야한다.
-> ssh -i "[pem키]" openvpnas@[퍼블릭ip]

대략 이런 화면이 뜨면서 환경을 구성하게 된다.

중간에 주의할 부분은

인바운드에서 허용해줬던 포트와 일치하는지 확인하고,

어드민 ID, Password를 잘 확인한다.

여기까지 완료되면 OpenVPN 어드민 페이지 (https://[OpenVPN의 public IP]:943/admin) 으로 접속해서 사용자 계정을 생성해야 한다. 

 

사용자 계정 생성 

페이지 접속 후

다음과 같이 사용자 계정을 생성한다. 

사용 방법

1) https://[openVpn 퍼블릭 ip]:943 접속한 뒤 어드민 계정에서 생성한 사용자계정 ID & Password 입력 후 접속

2) 로그인 후 OS에 맞게 OpenVPN Access Server 설치하기.
    만약 이미 설치된 경우 Profiles Management 클릭 후 ovpn 파일을 다운받는다.

3) 설치한 OpenVPN Access Server 실행 후 Upload File 탭에서 ovpn 파일 업로드하기

4) Connect 누르고 패스워드 입력하기