해킹공주의 일상
초보자의 Amazon VPC 프라이빗 서브넷 구성하기 본문
개요
퍼블릭을 했으니.. 프라이빗도 해보자.
구성단계
크게 구성 내용은 아래와 같다.
퍼블릭 서브넷 실습에서 사용한 자원을 기반으로 만들 예정이니 전글을 참고 바란다. (전글을 안따라가면 이 글을 따라가기 어렵다...)
1. 사용자 VPC 생성하고 프라이빗 서브넷 구성 (서브넷, 라우팅 테이블, 인터넷 게이트 웨이 생성)
2. EC2 인스턴스를 생성하여 정상적으로 통신되는지 검증( 인스턴스 <-> 인터넷 구간)
구축하려는 서버를 도식화 하면 아래와 같다.
구성시작
순서는 아래와 같다.
1.프라이빗 서브넷 생성 및 라우팅 테이블 생성
2. NAT 게이트웨이 생성(퍼블릭 서브넷에 연결) << 과금발생유의
3. 라우팅 경로 추가
4. EC2 생성 후 검증
1. 프라이빗 서브넷 생성 및 라우팅 테이블 생성
- 서브넷을 생성해주고, 내가 생성한 VPC인 MY-VPC에 연결해준다.
- 서브넷 설정에서 서브넷 이름, 가용영역, IP CIDR을 아래와 같이 설정해준다. (퍼블릭은 10.2.1.0/24 였음)
- 라우팅 테이블 탭에서 아래와 같이 private-rt 라우팅테이블을 생성하고 VPC를 연결해준다.
- 그리고 생성한 private-rt 라우팅 테이블을 PRIVATE-SUBNET 서브넷과 연결해준다.
- 현재까지의 도식화는 아래와 같다.
이제 NAT 게이트웨이를 만들자.
2. NAT 게이트웨이 생성
- NAT 게이트웨이 탭에서 NAT 게이트웨이 생성 버튼을 클릭한다.
- 이름을 설정하고, PUBLIC 서브넷에 위치하도록 퍼블릭 서브넷을 선택한다. 그리고 외부와 통신해야 하므로 퍼블릭으로 연결 유형을 선택하고, 탄력적 IP를 할당받는다.
탄력적 IP주소
자동으로 할당받는 IP 주소가 어떠한 이벤트에도 변경없이 유지되는 유형을 의미. 유료서비스이다.
- 현재까지의 도식화는 아래와 같다. Public subnet에 NAT Gateway가 생성되었다.
3. 라우팅 경로 추가
- 프라이빗 서브넷에서 퍼블릭 서브넷에 있는 NAT Gateway로 향하기 위해서는 프라이빗 서브넷의 라우팅테이블(private-rt)을 수정해주어야한다.
- 라우팅 테이블 메뉴에서 프라이빗 서브넷의 라우팅 테이블(private-rt) 라우팅 편집을 클릭한다.
- 라우팅 추가버튼을 누르고 모든 대상에 대해(0.0.0.0/0) 아까 퍼블릭 서브넷에 생성한 MY-NAT를 향하도록 설정한 후 저장한다.
- 도식화 하면 다음과 같다.
- 아래는 현재까지 생성한 VPC 에 대한 리소스 맵이다. 각각 인터넷 게이트웨이와 nat 게이트 웨이에 연결된것을 확인할 수 있다.
- 이제 프라이빗 서브넷에 서버를 만들어서 실제로 외부접근이 되는지 확인해보자.
4. EC2 생성 및 검증
- EC2를 생성하고 아래와 같이 이름, 그리고 AMI를 골라준다.
(현재 실습에서는 SSH 통신을 통해 자동으로 로그인하는게 필요한데, Amazon Linux 2 AMI 를 사용해야 문제가 없고 다른 운영체제의 경우 별도의 수정이 필요하니 편의상 해당 AMI를 사용하였다)
- 네트워크 설정에서 기존의 VPC(MY-VPC)와 프라이빗 서브넷에 연결해주고, 프라이빗 서브넷이니까 퍼블릭 IP 자동할당은 비활성화 해준다.
프라이빗 서브넷과 퍼블릭 서브넷은 서브넷 설정할때 별도로 옵션이 있는게 아니라, 사용자가 서브넷에 각각 어떤 용도로 사용할지 명시해두고 그 용도에 맞게 구축하는 것이다.
프라이빗 서브넷 설정 예시
- EC2 생성 시, 퍼블릭 IP 자동 할당 비활성화
- 외부 인터넷 사용 시, 퍼블릭 서브넷에 NAT 게이트웨이를 두고 라우팅테이블에 모든 IP 혹은 지정 IP에 대해 NAT 게이트웨이로 향하도록 설정
퍼블릭 서브넷 설정 예시
- EC2 생성 시, 퍼블릭 IP 자동 할당 활성화
- 외부 인터넷 사용 시, 인터넷 게이트웨이를 연결
- 사용자 데이터에는 SSH 접근을 키페어 교환없이 암호 입력만으로 접속하는 명령어를 추가해주었다.
사용자 데이터
EC2가 생성되면서 실행되는 script
- 현재까지의 구성도는 아래와 같다. 프라이빗 서브넷에 EC2가 추가되었다.
- 이제 통신이 가능한지 검증해보자.
1) 외부에서 PRIVATE EC2로의 통신 (외부 -> 내부)
원천적으로 PRIVATE-EC2 로 직접 접근은 퍼블릭 IP가 없으므로 불가하다.
직접 접근은 아니지만, PUBLIC EC2로 접근한 후에, 내부망 통신을 이용해서 PRIVATE EC2의 프라이빗 IP 주소를 통해 PRIVATE EC2로 접근해보겠다. (* 이럴때 사용되는 퍼블릭 서브넷의 EC2를 BASTION HOST 라고 한다.)
- 프라이빗 IP 주소를 먼저 확인한다.
- 퍼블릭 EC2에 SSH로 접근 후, 아래와 같이 ssh로 프라이빗 IP 주소로 붙어준 후, 사전에 스크립트에서 입력한 비밀번호 입력 시 프라이빗 서브넷에 접근할 수 있었다.
[ec2-user@ip-10-2-1-160 ~]$ ssh root@[PRIVATE EC2의 PRIVATE IP]
하지만 위의 과정은 퍼블릭 EC2로의 키페어와 프라이빗 EC2의 내부 IP, 그리고 SSH 접속 암호를 알아야 가능하며, 외부에서의 직접접근이라고 할 수 없다. 프라이빗 서브넷 내의 EC2의 경우 퍼블릭 IP가 존재하지않으므로 외부 직접 접근이 불가하다고 할 수 있다.
1) PRIVATE EC2에서 외부로의 통신 (외부 -> 내부)
- url 명령어를 통해 외부 인터넷 요청 시, 정상적으로 패킷이 날아오는 것을 확인할 수 있다.
- 외부 통신 시 흐름은 아래와 같다.
1. 프라이빗 EC2에서 퍼블릭 EC2에 위치한 NAT 게이트웨이로 이동
2. NAT 게이트웨이에서 프라이빗 EC2의 프라이빗 IP를 퍼블릭 IP로 변경
3. 인터넷 게이트웨이를 통해 외부 인터넷과 연결
이상 프라이빗 서브넷을 알아보았다... 실습 후 반드시 NAT 게이트웨이 삭제와 탄력적 IP 삭제를 해서 과금을 방지하도록 하자..!
'사이드 프로젝트 > 클라우드' 카테고리의 다른 글
AWS VPC Flow Logs 란 (2) | 2023.10.09 |
---|---|
AWS VPC Security Group(보안그룹)과 네트워크 ACL (0) | 2023.10.08 |
초보자의 Amazon VPC로 퍼블릭 서브넷 구성하기 (0) | 2023.10.02 |
Amazon VPC 서비스 개념정리 (0) | 2023.10.01 |
AWS CloudFormation 란 | 간단사용예시 (0) | 2023.10.01 |