VPC 설계 (CIDR, 서브넷, 라우팅, NAT Gateway)
VPC CIDR 크기 정하기, 퍼블릭과 프라이빗 서브넷을 AZ 별로 나누는 표준 배치, 라우팅 테이블 읽는 법, 인터넷 게이트웨이와 NAT Gateway(2025-11 의 Regional NAT Gateway 포함)의 비용과 이중화, IPv6, VPC 퍼블릭 액세스 차단과 암호화 통제까지 정리합니다.
표준 배치
대부분의 서비스 VPC 는 아래 그림처럼 생겼습니다. AZ 두 개(운영은 가능하면 세 개)에 같은 모양의 서브넷을 반복하고, 밖에서 들어오는 길은 ALB 하나, 나가는 길은 NAT Gateway 로 모읍니다.
| 서브넷 층 | 들어가는 것 | 기본 경로(0.0.0.0/0) |
|---|---|---|
| 퍼블릭 | ALB, NAT Gateway(존 방식), 배스천(가능하면 없이) | 인터넷 게이트웨이 |
| 프라이빗 앱 | EC2, ECS 태스크, EKS 노드, Lambda ENI | NAT Gateway |
| 프라이빗 데이터 | RDS, Aurora, ElastiCache | 없음(인터넷 불필요) |
"퍼블릭 서브넷" 은 특별한 설정이 아니라 라우팅 테이블에 인터넷 게이트웨이로 가는 경로가 있는 서브넷을 말합니다. 그 서브넷의 인스턴스에 퍼블릭 IP 까지 있어야 인터넷과 직접 통신합니다.
CIDR 크기 정하기
- VPC CIDR 은 /16 부터 /28 까지 가능합니다. 나중에 보조 CIDR 을 붙일 수 있지만, 처음부터 넉넉히 /16 이나 /19 정도로 잡는 편이 편합니다.
- 서브넷마다 5 개 IP 가 예약됩니다(네트워크 주소, VPC 라우터, DNS, 미래용, 브로드캐스트). /24 는 251 개, /28 은 11 개만 씁니다.
- EKS 와 Fargate 는 파드와 태스크마다 IP 를 쓰니 앱 서브넷을 /20 이상으로 크게 잡습니다.
- 회사 네트워크, 다른 VPC 와 겹치지 않게 정합니다. 겹치면 피어링과 Transit Gateway 연결이 안 됩니다. 조직 전체는 VPC IPAM 으로 풀을 만들어 자동 할당하면 충돌이 사라집니다.
aws ec2 create-vpc --cidr-block 10.20.0.0/16 --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=svc-prod}]'
aws ec2 create-subnet --vpc-id vpc-0abc --cidr-block 10.20.32.0/20 --availability-zone-id apne2-az1
라우팅 테이블 읽기
라우팅은 가장 구체적인 경로(가장 긴 접두사) 가 이깁니다. 프라이빗 앱 서브넷의 라우팅 테이블은 보통 이렇습니다.
| 대상 | 다음 홉 | 뜻 |
|---|---|---|
| 10.20.0.0/16 | local | VPC 안은 항상 직접 |
| 10.0.0.0/8 | tgw-0123 | 사내망, 다른 VPC 는 Transit Gateway 로 |
| pl-78a54011 (S3 접두사 목록) | vpce-0456 | S3 는 게이트웨이 엔드포인트로 |
| 0.0.0.0/0 | nat-0789 (같은 AZ) | 나머지 인터넷은 NAT 로 |
local 경로는 지울 수 없습니다. AZ 마다 NAT 를 따로 두는 존 방식이라면, 라우팅 테이블도 AZ 마다 따로 두고 같은 AZ 의 NAT 를 가리키게 합니다.
NAT Gateway
프라이빗 서브넷에서 인터넷(외부 API, 패키지 저장소)으로 나가기만 하려면 NAT Gateway 를 씁니다. 서울 리전 요금은 2026-10 기준 시간당 0.059 USD 와 처리 GB 당 0.059 USD 입니다. 한 달 내내 켜 두면 하나에 약 43 USD 이고, 처리량이 많으면 GB 요금이 훨씬 커집니다.
존 방식과 Regional NAT Gateway
| 방식 | 구조 | 장점 | 주의 |
|---|---|---|---|
| 존(zonal) NAT Gateway | AZ 마다 퍼블릭 서브넷에 하나씩, AZ 별 라우팅 테이블 | 프라이빗 NAT(사설망 주소 변환)도 가능 | AZ 하나에만 두면 그 AZ 장애 때 모두 끊김 |
| Regional NAT Gateway (2025-11) | VPC 에 하나. 워크로드가 있는 AZ 로 자동 확장 | 퍼블릭 서브넷이 필요 없고 라우팅 테이블 하나 | 새 AZ 로 확장에 보통 15~20 분(최대 60 분), 출시 때 프라이빗 연결 미지원 |
Regional NAT Gateway 는 VPC 단위로 붙고, AZ 마다 5 Gbps 에서 최대 100 Gbps 까지 늘며, VPC 당 5 개까지 만들 수 있습니다. 서울 리전 Price List 에도 Regional NAT 의 시간당, GB 당 단가가 존 방식과 같은 0.059 USD 로 올라와 있습니다. 다만 Regional NAT 는 워크로드가 있는 AZ 마다 확장되니 실제 청구 단위는 NAT 요금 페이지에서 확인합니다.
NAT 비용 줄이기
- S3, DynamoDB 는 게이트웨이 엔드포인트로 보냅니다. 무료이고 NAT 처리 요금이 사라집니다.
- ECR, CloudWatch Logs, STS, Secrets Manager 처럼 트래픽이 많은 AWS 서비스는 인터페이스 엔드포인트 비용과 NAT 처리 비용을 비교해 고릅니다.
- 다른 AZ 의 NAT 로 가는 트래픽은 AZ 간 전송 요금(GB 당 0.01 USD)까지 붙습니다. 존 방식이면 AZ 별 라우팅을 지킵니다.
- VPC 흐름 로그로 어떤 목적지가 NAT 를 많이 쓰는지 봅니다. 대개 컨테이너 이미지 풀, 로그 전송, S3 가 주범입니다.
퍼블릭 IPv4 와 IPv6
2024-02 부터 모든 퍼블릭 IPv4 주소(EIP 포함, 쓰지 않는 것도)에 시간당 0.005 USD 가 붙습니다. 인스턴스마다 퍼블릭 IP 를 주던 설계라면 한 대에 월 3.65 USD 가 추가됩니다. 퍼블릭 IP 는 ALB, NAT 처럼 꼭 필요한 곳에만 두고, 관리 접속은 Systems Manager Session Manager 로 바꿉니다.
IPv6 는 주소 요금이 없습니다. VPC 에 IPv6 CIDR 을 붙이고, 프라이빗 서브넷의 IPv6 나가는 길은 송신 전용 인터넷 게이트웨이로 둡니다. 듀얼 스택으로 시작하면 IPv4 고갈과 비용 문제가 줄어듭니다.
조직 단위 보호 장치
- VPC 퍼블릭 액세스 차단(BPA): 계정이나 리전 단위로 인터넷 게이트웨이를 통한 들고 나는 트래픽을 일괄 차단하고, 필요한 VPC, 서브넷만 예외로 둡니다. 선언적 정책으로 조직 전체에 걸 수 있습니다.
- VPC 암호화 통제(Encryption Controls, 2025-11): VPC 안과 VPC 사이 트래픽의 전송 중 암호화 상태를 보여 주고, 평문 트래픽을 허용하는 리소스를 찾아냅니다. 강제 모드로 하드웨어 기반 AES-256 암호화를 켜서 규정 준수 증빙에 씁니다. 무료 Preview 로 시작했고 2026-03-01 부터 유료로 바뀌어, 모니터 또는 강제 모드를 켠 비어 있지 않은 VPC 마다 시간 요금이 붙습니다.
- VPC 흐름 로그: 최소한 운영 VPC 는 켜 두고 S3 로 보내 Athena 로 조회합니다.
자주 하는 실수
- NAT Gateway 를 프라이빗 서브넷에 만듦: 존 방식 NAT 는 퍼블릭 서브넷에 있어야 하고, 그 서브넷 라우팅은 인터넷 게이트웨이로 가야 합니다. 증상과 확인 순서는 EC2 인터넷 연결 트러블슈팅에 있습니다.
- 기본 VPC 를 운영에 사용: 모든 서브넷이 퍼블릭이고 퍼블릭 IP 가 자동으로 붙습니다. 운영은 직접 설계한 VPC 를 씁니다.
- 서브넷을 너무 잘게: /28 서브넷 수십 개는 관리만 어렵고 IP 가 금방 바닥납니다.
- AZ 하나짜리 NAT 와 엔드포인트: 멀티 AZ 라고 생각했는데 실제로는 단일 장애점입니다.