EC2를 띄웠는데 인터넷이 안 되거나, RDS에 붙으려는데 연결이 안 될 때 원인은 대부분 코드가 아니라 VPC 설계입니다. VPC(Virtual Private Cloud)는 클라우드 안에 만든 내 전용 사설 네트워크입니다. 집을 짓기 전 땅의 경계와 도로를 정하듯, 인스턴스를 띄우기 전에 네트워크의 경계와 길을 먼저 정하는 단계입니다.
VPC를 이루는 4가지 요소
| 요소 | 역할 | 비유 |
|---|---|---|
| VPC | 전체 사설 네트워크 대역(CIDR) | 단지 전체 부지 |
| 서브넷 | VPC를 가용영역별로 쪼갠 구획 | 단지 안의 동(棟) |
| 라우팅 테이블 | "이 목적지는 어디로 보낸다"는 규칙 | 도로 표지판 |
| 게이트웨이 | 외부와의 출입구(IGW/NAT) | 단지 정문 |
예를 들어 VPC를 10.0.0.0/16으로 잡으면 약 6.5만 개의 사설 IP를 쓸 수 있고, 이걸 10.0.1.0/24, 10.0.2.0/24처럼 서브넷으로 나눠 씁니다.
퍼블릭 vs 프라이빗 — 차이는 라우팅 하나
많은 사람이 "서브넷에 퍼블릭/프라이빗 설정값이 따로 있다"고 오해합니다. 실제 차이는 단 하나, 라우팅 테이블이 인터넷 게이트웨이(IGW)를 가리키느냐입니다.
| 서브넷 | 라우팅 규칙 | 용도 |
|---|---|---|
| 퍼블릭 | 0.0.0.0/0 → IGW | 웹 서버, 로드밸런서 |
| 프라이빗 | 0.0.0.0/0 → NAT 또는 없음 | DB, 내부 애플리케이션 서버 |
웹 서버는 퍼블릭 서브넷에 두어 외부 요청을 받고, DB는 프라이빗 서브넷에 숨겨 외부에서 직접 접근하지 못하게 합니다. 프라이빗 서브넷의 서버가 패키지를 받아야 할 때는 NAT 게이트웨이를 거쳐 나가기만(outbound) 하고, 외부에서 들어오는 연결은 막습니다.
흔한 실수와 점검 순서
연결이 안 될 때는 이 순서로 봅니다.
- 라우팅 테이블 — 퍼블릭인데 IGW 경로가 없으면 인터넷이 안 됩니다.
- 보안 그룹 — 인스턴스 단위 방화벽. 인바운드 포트가 열려 있는지 확인.
- 네트워크 ACL — 서브넷 단위 방화벽. 기본값은 허용이지만 커스텀하면 양방향 모두 봐야 합니다.
TEXT
요청 → IGW → 라우팅 테이블 → NACL(서브넷) → 보안 그룹(인스턴스) → EC2
보안 그룹은 상태 저장(stateful)이라 나간 응답이 자동 허용되지만, NACL은 무상태(stateless)라 인바운드·아웃바운드 규칙을 따로 열어야 한다는 점이 자주 발목을 잡습니다.
요점 정리
- VPC = CIDR로 정의한 사설 네트워크, 서브넷으로 가용영역별 분할.
- 퍼블릭/프라이빗을 가르는 건 라우팅 테이블의 IGW 경로 하나뿐.
- 연결 문제는 라우팅 → 보안 그룹 → NACL 순으로 본다.
VPC·서브넷·라우팅을 직접 구성하고 인스턴스 연결을 확인하는 실습은 클라우드 트랙에서 무료로 할 수 있습니다.