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

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

SSH 를 사용하여 접속

  • EC2와 RDS 를 같은 VPC 망으로 사용한다면 EC2의 SSH를 사용하여 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는 구로 에 있는느낌