이번 장은 VPC를 다룬다.
VPC는 Virtual Private Cloud의 약자다.
AWS 안에 내가 소유한 가상 네트워크다.
EC2, RDS 등 대부분의 리소스는 VPC 안에서 돈다.
네트워크를 이해하지 못하면 AWS 아키텍처를 제대로 설계할 수 없다.
이 장의 목표는 다음과 같다.
- VPC, 서브넷, 라우팅 테이블의 관계를 잡는다.
- 퍼블릭/프라이빗 서브넷을 구분한다.
- IGW와 NAT의 역할을 이해한다.
1. VPC와 CIDR
VPC를 만들 때 IP 주소 범위를 정한다. 이것을 CIDR 블록이라고 한다.
예를 들어 10.0.0.0/16으로 만들면 10.0.0.0부터 10.0.255.255까지 약 6.5만 개 IP를 쓸 수 있다.
/16 뒤의 숫자가 작을수록 범위가 넓다.
사설 IP 대역(10.x, 172.16~31.x, 192.168.x)을 쓰는 게 관례다.
2. 서브넷 — VPC를 나누기
서브넷(Subnet)은 VPC를 더 작게 쪼갠 구획이다.
각 서브넷은 하나의 AZ에 속한다.
서브넷을 나누는 이유는 두 가지다.
첫째, 여러 AZ에 걸쳐 배포해 고가용성을 확보한다.
둘째, 인터넷에 노출할 것과 감출 것을 나눈다.
- 퍼블릭 서브넷: 인터넷과 직접 통신한다. 웹 서버, 로드밸런서를 둔다.
- 프라이빗 서브넷: 인터넷에서 직접 접근 못 한다. DB, 내부 서버를 둔다.
3. 라우팅 테이블
라우팅 테이블(Route Table)은 "이 목적지로 가려면 어디로 보내라"는 지도다.
서브넷마다 라우팅 테이블이 연결된다.
퍼블릭 서브넷과 프라이빗 서브넷의 차이는 사실 라우팅 테이블에 있다.
- 퍼블릭 서브넷의 라우팅 테이블에는 인터넷 게이트웨이(IGW)로 가는 경로가 있다.
- 프라이빗 서브넷에는 그 경로가 없다.
기본 예시:
| 목적지 | 대상 |
|---|---|
| 10.0.0.0/16 | local (VPC 내부) |
| 0.0.0.0/0 | igw-xxxx (인터넷) |
0.0.0.0/0은 "그 외 모든 곳", 즉 인터넷을 뜻한다.
4. 인터넷 게이트웨이 (IGW)
IGW(Internet Gateway)는 VPC와 인터넷을 잇는 문이다.
VPC에 하나 붙이고, 퍼블릭 서브넷의 라우팅 테이블이 0.0.0.0/0 → IGW를 가리키게 한다.
인스턴스가 인터넷과 통신하려면 세 가지가 모두 필요하다.
- 퍼블릭 IP(또는 탄력적 IP)
- IGW로 가는 라우팅
- 트래픽을 허용하는 보안그룹
5. NAT 게이트웨이
프라이빗 서브넷의 서버도 가끔 인터넷에 나가야 한다.
예를 들어 소프트웨어 업데이트를 받을 때다.
하지만 인터넷에서 그 서버로 들어오는 건 막고 싶다.
이때 NAT 게이트웨이를 쓴다.
NAT는 프라이빗 서버가 밖으로 나가는 것만 허용하고, 밖에서 들어오는 연결은 막는다.
구성은 이렇다.
- NAT 게이트웨이는 퍼블릭 서브넷에 둔다.
- 프라이빗 서브넷의 라우팅 테이블이
0.0.0.0/0 → NAT를 가리킨다.
NAT 게이트웨이는 시간당 요금과 데이터 처리 요금이 있으니 비용을 염두에 둔다.
6. 보안그룹 vs NACL
VPC 안에는 두 겹의 방화벽이 있다.
| 구분 | 보안그룹 | NACL |
|---|---|---|
| 적용 대상 | 인스턴스(ENI) | 서브넷 |
| 규칙 | 허용만 | 허용 + 거부 |
| 상태 | 상태 저장(stateful) | 상태 비저장(stateless) |
보안그룹은 3장에서 봤듯 상태 저장이라 응답이 자동으로 나간다.
NACL은 상태 비저장이라 인바운드와 아웃바운드를 각각 열어야 한다.
보통은 보안그룹으로 대부분 제어하고, NACL은 서브넷 단위의 넓은 차단에만 쓴다.
정리
- VPC는 내 가상 네트워크, 서브넷은 그 안의 구획이다.
- 퍼블릭/프라이빗의 차이는 라우팅 테이블(IGW 경로 유무)에 있다.
- IGW는 인터넷 문, NAT는 프라이빗 서버의 아웃바운드 전용 통로다.
- 보안그룹(인스턴스, 상태 저장)과 NACL(서브넷, 상태 비저장)을 구분한다.
다음 장에서는 데이터를 담는 관리형 데이터베이스를 다룬다.
댓글 0
댓글은 운영자만 작성할 수 있어요.