RDS 퍼블릭 엑세스 끄고 외부 환경에서 접속하기

  • 2024년 2월 이후로 IPv4 주소 유료화에 따라 RDS 퍼블릭엑세스에 사용되는 ipv4 주소는 더 이상 무료가 아니다. (EC2에 사용되는 IP는 프리티어면 공짜다)
  • 따라서 퍼블릭 엑세스를 끈 상태에서 접속을 시도해야 한다

SSH 를 사용하여 접속

  • EC2RDS 를 같은 VPC 망으로 사용한다면 EC2SSH를 사용하여 RDS 에 접속이 가능하다.
  • DataGrap이나 기타 DB관리 IDE 등은 대부분 SSH 접속을 허용한다.
  • SSH 호스트, EC2 계정 이름, PPK 파일을 EC2와 동일하게 설정해주면 된다.

EC2 RDS 연결

https://velog.io/@whytili/AWS-RDS%EC%99%80-EC2-%EC%97%B0%EB%8F%99%ED%95%98%EA%B8%B0

EC2로 VPN 만들기

  • 제일 저렴한 t4g.nano 인스턴스 No-ip DDNS 서비스를 사용하여 OpenVPN 서버 구축

요금

  • t4g.nano 인스턴스 요금
    • 시간당: 0.0054$
    • 24시간 1달: 3.8$
  • Pubilc IP 요금
    • 시간당: 0.005$
    • 24시간 1달: 3.6$
  • 종합:
    • 시간당: 0.0104$
    • 24시간 1달: 7.4$

결론

  • 이렇게 구성하는게 제일 좋을듯 하다

과정

VPN 서버 구성 & 비교

VPC로 VPN 만들기

VPC 기능중에 클라이언트 VPN 엔드포인트를 사용하여 VPN을 구현할 수 있다

  • 원래 이 기능은 Pubilc ip 할당 안한 aws 서비스들을 vpn 터널링 하여 접근 할 수 있도록 하는게 목적이다
  • 하지만 인터넷을 연결 시켜서 우리가 보편적으로 생각하는 vpn을 만들 수 있다
  • 대부분에 VPN 서비스는 정액제로 받기 때문에 내가 안쓰고 있을때도 요금이 나가는 문제가 있는데 이거를 커버 치기 위해서 이짓거리를 한번 해봤다

전략

  • 사용하지 않을 때는 대상 네트워크 연결 탭 가서 서브넷 연결 해제 시키자
    • 서브넷과 연결시켜두기만 해도 요금이 바사삭
  • 다시 사용할때
    • 다시 같은 정보로 연결
    • 클라이언트 VPN 엔드포인트 내 라우팅 테이블 다시설정

요금

  • AWS Client VPN 엔드포인트 연결

    네트워크 연결이 되어있는 상태에 부과 (서브넷이 연결되있는 상태)

    • 시간당: 0.15$
    • 24시간 1달: 108$
  • AWS Client VPN 연결

    VPN 사용자 수 x 시간당요금 으로 책정

    • 시간당: 0.05$
    • 24시간 1달: 36$

결론

  • 단순 유지만 하더라도 달에 10만원 이상이 나옴으로 안쓸때는 네트워크를 해제 시켜야 할꺼같다
  • 생각보다 비싼 요금과 번거로움 때문에 차라리 저렴한 EC2에 VPN 서버 설치해서 하는게 나을듯
  • 어차피 EC2 VPN도 안쓸때 잠깐 정지해놓으면 거의 요금 안나오니까 말이다

과정

추가 가이드

AWS Certificate Manager 에서 인증서 등록하기

  1. Easy-RSA를 사용하여 서버, 클라이언트 인증서 발급
  2. 발급 과정 완료하면 pki 폴더 들가서 ca.crt, issued/, private/ 확인
  3. AWS Certificate Manager 탭 가져오기 클릭해서 인증서 등록하기
    • 서버측, 클라이언트측 두 개가 필요하기 때문에 두개를 등록해야함
    • 서버측 파일:
      • 인증서 본문 = server.crt
      • 인증서 프라이빗 키= server.key
      • 인증서 체인 = ca.crt
    • 클라이언트측 파일
      • 인증서 본문 = client1.domain.tld.crt
      • 인증서 프라이빗 키= client1.domain.tld.key
      • 인증서 체인 = ca.crt
    • YML 형태로된 파일이 있을 수 있는데 YML 문법 제외하고 이렇게 생긴부분 부터 복사
      -----BEGIN PRIVATE KEY----- 
      -----END PRIVATE KEY-----

VPC 구성하기

  1. VPC생성 & 해당 VPC 서브넷 생성 (원래꺼 있으면 그거 써도 상관없음)
  2. 해당 VPC에 인터넷 게이트웨이 생성
  3. 라우팅 테이블 서브넷 연결 서브넷 연결 편집 생성한 서브넷 연결
  4. 라우팅 테이블 라우팅 라우팅 편집 라우팅 추가
    • 1번 대상 = 0.0.0.0/0
    • 2번 대상 = 인터넷 게이트웨이 & 생성한 인터넷 게이트웨이
  5. 보안그룹 같은 VPC 보안그룹 선택 인바운드, 아웃바운드 모두
    • TCP/UDP 모두, 모든포트, 0.0.0.0/0 으로 모든 포트 허용 시키기

클라이언트 VPN 엔드포인트 생성하기

  • 클라이언트 IPv4 CIDR:
    • VPC와 다른 CIDR 로 설정 (예: 10.0.0.0/22)
  • 서버 인증서 ARN:
    • 서버측으로 생성된 ARN 선택
  • 상호 인증 사용 체크:
    • 클라이언트 인증서 ARN: 클라이언트 측으로 생성된 ARN 선택
  • DNS 서버:
    • 보통은 구글로 할듯 (8.8.8.8, 8.8.4.4)
  • 전송 프로토콜:
    • TCP로
  • 분할 터널 활성화 체크해제:
    • 활성화 하면 외부요청은 VPN 거치지 않고 요청되고
      내부 요청만 VPN 거치게끔 설계가능함
  • VPC:
    • 생성한 VPC 선택
  • 보안그룹:
    • VPC랑 같은거 선택

클라이언트 VPN 엔드포인트 구성하기

  1. 대상 내트워크 연결
    • VPC, 서브넷 맞는거 설정
  2. 권한 부여 규칙 권한 부여 규칙 추가
    • 액세스를 활성화할 대상 네트워크 = 0.0.0.0/0
  3. 클라이언트 VPN 엔드포인트 내 라우팅 테이블 경로 생성
    • 경로대상 = 0.0.0.0/0
    • 대상 네트워크 연결을 위한 서브넷 ID = 위 선택한 서브넷과 동일한 서브넷

OpenVpn 으로 접속하기

  1. VPC 탭 클라이언트 VPN 엔드포인트 클라이언트 구성 다운로드
  2. 다운로드 받은 .ovpn 파일에 해당 </ca> 다음 부분에 추가
    <cert> 
    client1.domain.tld.crt 키 파일 네용
    </cert> 
    
    <key> 
     client1.domain.tld.key 키 파일 내용
    </key>
    
  3. 해당 구성 파일을 OpenVpn에 등록하여 VPN 실행

VPC

VPC 서브넷 종류

퍼블릭 서브넷

  • 인터넷 게이트웨이(IGW)로 라우팅 되어있는 서브넷
  • 인터넷과 직접 소통이 가능하다
  • EC2 나 이런거 쓸때 외부 연결 하고 싶으면 해당 서브넷 으로 해야한다

프라이빗 서브넷

  • 인터넷 게이트웨이(IGW)로 라우팅 되어있지 않은 서브넷
  • 인터넷이 끊겨 있어 내부망 통신밖에 하지 못한다
  • 공인 IP 주소를 할당받은 퍼블릭 NAT 게이트웨이에 라우팅 하면 인터넷 연결이 가능하다

가용역역

  • 이건 한 지역에 다른데이터 센터 그룹임
  • 가령 서울 리전이라고 치면 A는 강남에 있는거고 B는 구로 에 있는느낌