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$
결론
- 이렇게 구성하는게 제일 좋을듯 하다
과정
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 에서 인증서 등록하기
- Easy-RSA를 사용하여 서버, 클라이언트 인증서 발급
- 발급 과정 완료하면
pki
폴더 들가서ca.crt
,issued/
,private/
확인 - 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 구성하기
- VPC생성 & 해당 VPC 서브넷 생성 (원래꺼 있으면 그거 써도 상관없음)
- 해당 VPC에 인터넷 게이트웨이 생성
- 라우팅 테이블 → 서브넷 연결 → 서브넷 연결 편집 → 생성한 서브넷 연결
- 라우팅 테이블 → 라우팅 → 라우팅 편집 → 라우팅 추가
- 1번 대상 =
0.0.0.0/0
- 2번 대상 = 인터넷 게이트웨이 & 생성한 인터넷 게이트웨이
- 1번 대상 =
- 보안그룹 → 같은 VPC 보안그룹 선택 → 인바운드, 아웃바운드 모두
- TCP/UDP 모두, 모든포트,
0.0.0.0/0
으로 모든 포트 허용 시키기
- TCP/UDP 모두, 모든포트,
클라이언트 VPN 엔드포인트 생성하기
클라이언트 IPv4 CIDR
:- VPC와 다른
CIDR
로 설정 (예: 10.0.0.0/22)
- VPC와 다른
서버 인증서 ARN
:- 서버측으로 생성된 ARN 선택
상호 인증 사용
체크:클라이언트 인증서 ARN
: 클라이언트 측으로 생성된 ARN 선택
DNS 서버
:- 보통은 구글로 할듯 (8.8.8.8, 8.8.4.4)
전송 프로토콜
:- TCP로
분할 터널 활성화
체크해제:- 활성화 하면 외부요청은 VPN 거치지 않고 요청되고
내부 요청만 VPN 거치게끔 설계가능함
- 활성화 하면 외부요청은 VPN 거치지 않고 요청되고
VPC
:- 생성한 VPC 선택
보안그룹
:- VPC랑 같은거 선택
클라이언트 VPN 엔드포인트 구성하기
- 대상 내트워크 연결
- VPC, 서브넷 맞는거 설정
- 권한 부여 규칙 → 권한 부여 규칙 추가
- 액세스를 활성화할 대상 네트워크 = 0.0.0.0/0
- 클라이언트 VPN 엔드포인트 내 라우팅 테이블 → 경로 생성
- 경로대상 =
0.0.0.0/0
- 대상 네트워크 연결을 위한 서브넷 ID =
위 선택한 서브넷과 동일한 서브넷
- 경로대상 =
OpenVpn 으로 접속하기
- VPC 탭 → 클라이언트 VPN 엔드포인트 → 클라이언트 구성 다운로드
- 다운로드 받은
.ovpn
파일에 해당</ca>
다음 부분에 추가<cert> client1.domain.tld.crt 키 파일 네용 </cert> <key> client1.domain.tld.key 키 파일 내용 </key>
- 해당 구성 파일을
OpenVpn
에 등록하여 VPN 실행
VPC
VPC 서브넷 종류
퍼블릭 서브넷
- 인터넷 게이트웨이(IGW)로 라우팅 되어있는 서브넷
- 인터넷과 직접 소통이 가능하다
- EC2 나 이런거 쓸때 외부 연결 하고 싶으면 해당 서브넷 으로 해야한다
프라이빗 서브넷
- 인터넷 게이트웨이(IGW)로 라우팅 되어있지 않은 서브넷
- 인터넷이 끊겨 있어 내부망 통신밖에 하지 못한다
- 공인 IP 주소를 할당받은 퍼블릭 NAT 게이트웨이에 라우팅 하면 인터넷 연결이 가능하다
가용역역
- 이건 한 지역에 다른데이터 센터 그룹임
- 가령 서울 리전이라고 치면 A는 강남에 있는거고 B는 구로 에 있는느낌