VPC란 — 내 전용 네트워크
VPC(Virtual Private Cloud)는 AWS 위에 내 전용 네트워크를 만드는 서비스입니다. 마치 회사 사무실에 전용 LAN을 깔듯, AWS 데이터센터 안에 나만의 가상 네트워크 대역을 그립니다.
EC2, RDS, Lambda 등 대부분의 AWS 서비스는 VPC 안에서 동작합니다. VPC를 이해하면 "왜 EC2에서 RDS로 연결이 안 되는지", "왜 프라이빗 서브넷의 서버가 인터넷에 못 나가는지"가 바로 이해됩니다.
VPC = 회사 건물 전체 네트워크 대역
서브넷 = 층별 네트워크 (1층=퍼블릭, 지하=프라이빗)
라우팅 테이블 = 엘리베이터 안내판 (어디로 갈 수 있는지)
인터넷 게이트웨이 = 건물 정문
NAT Gateway = 내부에서 외부로만 나갈 수 있는 쪽문
사설망과 CIDR — /16, /24가 뭔가
VPC를 만들 때 IP 대역을 지정합니다. 예: 10.0.0.0/16. 이 표기법을 CIDR(Classless Inter-Domain Routing)이라 합니다.
10.0.0.0 ~ 10.0.255.255
VPC 크기로 적합
10.0.1.0 ~ 10.0.1.255
서브넷 크기로 적합
정확히 그 IP만
보안 그룹 소스에 사용
사설 IP 대역
VPC는 인터넷에서 쓰지 않는 사설 IP 대역을 사용합니다. AWS 권장 대역:
| 대역 | 범위 | 권장 VPC CIDR |
|---|---|---|
10.0.0.0/8 | 10.0.0.0 ~ 10.255.255.255 | 10.0.0.0/16 |
172.16.0.0/12 | 172.16.0.0 ~ 172.31.255.255 | 172.31.0.0/16 |
192.168.0.0/16 | 192.168.0.0 ~ 192.168.255.255 | 192.168.0.0/16 |
퍼블릭 서브넷 vs 프라이빗 서브넷
VPC 안의 IP 대역을 쪼갠 조각이 서브넷입니다. 차이는 단 하나 — 라우팅 테이블에 인터넷 게이트웨이(IGW)로 가는 길이 있느냐 없느냐입니다.
⚖️ ALB
🔧 내부 API
| 구분 | 퍼블릭 서브넷 | 프라이빗 서브넷 |
|---|---|---|
| 인터넷 접근 | 가능 (IGW 경유) | 불가 (직접) |
| 외부에서 접근 | 가능 | 불가 |
| 내부→외부 통신 | 가능 | NAT Gateway 경유로 가능 |
| 배치 서비스 | ALB, Bastion Host, NAT GW | EC2 앱 서버, RDS, ElastiCache |
라우팅 테이블 · IGW · NAT Gateway
라우팅 테이블
서브넷의 트래픽이 어디로 가야 하는지 정하는 규칙표입니다.
| 대상 | 타깃 | 의미 |
|---|---|---|
10.0.0.0/16 | local | VPC 내부 통신 (항상 있음) |
0.0.0.0/0 | igw-xxx | 나머지 모든 트래픽 → 인터넷 (퍼블릭) |
0.0.0.0/0 | nat-xxx | 나머지 모든 트래픽 → NAT GW (프라이빗) |
인터넷 게이트웨이 (IGW)
VPC와 인터넷을 연결하는 관문입니다. VPC당 하나만 붙이고, 가용성 99.99% · 대역폭 무제한 · 과금 없음입니다.
NAT Gateway
프라이빗 서브넷의 EC2가 소프트웨어 업데이트나 외부 API 호출을 할 때 씁니다. 내부 → 외부는 가능, 외부 → 내부는 불가합니다.
NAT Gateway는 시간당 약 $0.059 + 데이터 처리량 GB당 $0.059로 꽤 비쌉니다. 학습 중에 만들었다 잊어버리면 하루 $1.4+가 나옵니다. 실습 후 반드시 삭제하세요.
보안 그룹 vs NACL
VPC에는 두 겹의 방화벽이 있습니다.
| 구분 | 보안 그룹 | 네트워크 ACL (NACL) |
|---|---|---|
| 적용 단위 | 인스턴스(ENI) | 서브넷 |
| 상태 | Stateful (응답 자동 허용) | Stateless (인바운드·아웃바운드 별도 설정) |
| 규칙 방식 | 허용만 가능 (Deny 없음) | 허용 + 거부 모두 가능 |
| 규칙 평가 | 모든 규칙 평가 후 결정 | 번호 순서대로 평가 (낮은 번호 우선) |
| 기본값 | 모든 인바운드 차단 | 모든 트래픽 허용 |
| 주로 쓰는 곳 | 대부분의 접근 제어 | 서브넷 단위 IP 차단 (DDoS 대응) |
NACL은 Stateless라 인바운드를 허용해도 아웃바운드 규칙을 별도로 열어야 합니다. 관리가 복잡해서, 특정 IP를 서브넷 단위로 차단해야 하는 경우가 아니면 보안 그룹만 씁니다.
Bastion Host — 프라이빗 서버 접속 방법
프라이빗 서브넷의 EC2에는 직접 SSH가 안 됩니다. 인터넷에서 접근할 수 없으니까요. 이때 퍼블릭 서브넷에 Bastion Host(점프 서버)를 두고, 거기를 거쳐서 접속합니다.
퍼블릭 서브넷
프라이빗 서브넷
CH02에서 배운 Session Manager를 쓰면 Bastion Host 없이 프라이빗 EC2에 접속할 수 있습니다. SSH 포트 22를 열 필요도 없어서 더 안전합니다. ISMS-P 감사에서도 유리합니다.
VPC Endpoint — 인터넷 없이 AWS 서비스 접근
프라이빗 서브넷의 EC2에서 S3나 DynamoDB를 쓰려면 원래 NAT Gateway를 거쳐 인터넷으로 나갔다가 들어와야 합니다. VPC Endpoint를 쓰면 인터넷을 거치지 않고 AWS 내부 네트워크로 직접 연결됩니다.
| 종류 | 대상 서비스 | 과금 |
|---|---|---|
| 게이트웨이 엔드포인트 | S3, DynamoDB | 무료 |
| 인터페이스 엔드포인트 | 대부분의 AWS 서비스 | 시간당 + 데이터 전송량 |
S3를 많이 쓰는 환경에서 게이트웨이 엔드포인트를 붙이면 NAT Gateway 데이터 전송 비용을 크게 줄일 수 있습니다. 무료이니 붙이지 않을 이유가 없습니다.
VPC 직접 만들기
- VPC 생성: VPC 콘솔 → VPC 생성 → 이름
my-vpc, CIDR10.0.0.0/16 - 퍼블릭 서브넷: 서브넷 생성 → VPC 선택 → AZ: ap-northeast-2a → CIDR
10.0.1.0/24 - 프라이빗 서브넷: 서브넷 생성 → AZ: ap-northeast-2a → CIDR
10.0.2.0/24 - IGW 생성 및 연결: 인터넷 게이트웨이 → 생성 → VPC에 연결
- 퍼블릭 라우팅 테이블: 라우팅 테이블 → 생성 →
0.0.0.0/0 → IGW추가 → 퍼블릭 서브넷 연결 - 퍼블릭 IP 자동 할당: 퍼블릭 서브넷 선택 → 서브넷 설정 편집 → 퍼블릭 IP 자동 할당 활성화
- EC2 생성 테스트: 새 VPC의 퍼블릭 서브넷에 EC2 생성 → SSH 접속 확인
시간당 $0.059 과금입니다. 개념만 이해하고 넘어가세요. 실제로 필요한 건 CH10 종합 실습 때입니다.