실습 1-9 — NAT Gateway: 프라이빗의 '나가는 길' 완성 & 리소스 정리
프라이빗 서버는 외부에서 못 들어오지만, 자기가 먼저 나가는 것(패키지 다운로드 등) 은 필요합니다. 그 출구가 NAT 게이트웨이입니다. 이번 편으로 전체 아키텍처가 완성되고, 마지막에 비용을 막기 위한 정리(삭제) 까지 합니다.
📌 이번 편 한눈에
질문 답
| NAT GW가 왜 필요? | 프라이빗 서버의 아웃바운드 전용 출구 |
| 어디에 두나? | 퍼블릭 서브넷 (IGW 경로가 있는 곳) |
| 필수 준비물 | EIP(고정 공인 IP) |
| 마지막에? | 반드시 삭제 — NAT GW는 시간당 과금 |
개념 — NAT GW는 '단방향 출구'
IGW 편에서 IGW는 양방향이라 했습니다. NAT GW는 다릅니다.
- NAT GW = 아웃바운드 전용: 내부가 먼저 시작한 연결만 내보내고, 응답을 되돌려줍니다. 외부가 먼저 들어오는 건 불가.
- 그래서 프라이빗 서버는 NAT GW로 나갈 수만 있고, 외부 노출은 막힙니다.
- NAT GW는 출발지 IP를 자신의 EIP로 변환(SNAT) 해 내보냅니다.
⚠️ NAT GW는 반드시 퍼블릭 서브넷에 둡니다. NAT GW 자신이 인터넷으로 나가려면 0.0.0.0/0 → IGW 경로가 있는 서브넷(=퍼블릭)에 있어야 하기 때문입니다.
01~02. NAT 게이트웨이 생성
VPC → NAT 게이트웨이 → NAT 게이트웨이 생성.
🖼️ [이미지] NAT 게이트웨이 목록(비어 있음)
설정값:
항목 값 설명
| 이름 | My-NAT-GW | |
| 가용성 모드 | 영역별(Zonal) | 특정 AZ 내 세분화 제어 |
| 서브넷 | Public-Subnet | NAT GW가 살 곳(퍼블릭!) |
| 연결 유형 | 퍼블릭 | 인터넷 아웃바운드용 |
| 탄력적 IP 할당 ID | 탄력적 IP 할당 클릭 | EIP 새로 발급·연결 |
가용성 모드 — 영역별 vs 리전별
- 영역별(Zonal): 지정한 단일 AZ에서 동작(전통 방식). 여러 AZ에 HA가 필요하면 AZ마다 NAT GW를 따로 둡니다.
- 리전별(Regional, 신규): 리전 내 AZ에 자동 확장되어 다중 AZ 관리를 간소화.
🖼️ [이미지] NAT 게이트웨이 설정 화면 + 생성 직후 상태 Pending → Available
생성 직후 상태는 Pending, 잠시 후 Available 이 됩니다.
03. EIP(탄력적 IP) 확인
NAT GW에 붙은 EIP를 확인합니다. VPC → 탄력적 IP → 태그 My-EIP 추가.
🖼️ [이미지] EIP 상세 — My-EIP(13.124.116.211) / NAT 게이트웨이 ID = My-NAT-GW

이 EIP가 프라이빗 서버들이 밖으로 나갈 때의 공통 출발지 주소가 됩니다. 고정이라 외부에서 보면 항상 같은 IP로 보입니다.
04. Private-RT에 NAT 경로 추가
NAT GW를 만들어도, "외부로 갈 땐 NAT로 가라"는 이정표가 없으면 소용없습니다. Private-RT에 경로를 넣습니다.
VPC → 라우팅 테이블 → Private-RT → 라우팅 탭 → 라우팅 편집.
🖼️ [이미지] Private-RT 라우팅 — 현재 10.9.0.0/16 → local 하나뿐

라우팅 추가 → 대상 0.0.0.0/0 → 대상 리소스 NAT 게이트웨이 → My-NAT-GW → 변경 사항 저장.
🖼️ [이미지] 라우팅 편집(0.0.0.0/0 → nat-…(My-NAT-GW)) + 저장 후 라우팅(2)
저장하면 Private-RT가 0.0.0.0/0 → My-NAT-GW / 10.9.0.0/16 → local 두 개가 됩니다. (NAT GW 생성 + 이 경로 추가가 항상 짝입니다)
05. 검증 — PrivateEC2에서 ping
Bastion(PublicEC2)을 거쳐 PrivateEC2에 접속한 뒤:
ping -c 3 www.google.com
🖼️ [이미지] ip-10-9-2-241에서 ping 성공 — 0% packet loss
0% packet loss로 응답이 오면, 공인 IP가 없는 프라이빗 서버가 NAT GW를 통해 외부로 나갔다가 돌아온 것입니다. 아웃바운드 격리 구조가 정상 동작함을 확인했습니다.
💡 외부에서 PrivateEC2로 직접 ping/접속은 여전히 불가합니다. NAT는 아웃바운드 전용이니까요. "나가는 건 되고, 들어오는 건 안 된다"가 핵심입니다.
IX. 실습 정리 — 리소스 삭제 (★비용 주의)
⚠️ NAT GW와 EIP는 그냥 두면 계속 과금됩니다. NAT GW는 시간당 요금 + 데이터 처리 요금, EIP는 미사용 시 요금. 실습이 끝나면 반드시 삭제하세요.
종속성 때문에 순서가 중요합니다.
- EC2 인스턴스 종료 — PublicEC2, PrivateEC2 모두 선택 → 인스턴스 상태 → 인스턴스 종료(삭제)
- NAT 게이트웨이 삭제 — My-NAT-GW → 작업 → NAT 게이트웨이 삭제
- EIP 릴리즈 — My-EIP → 작업 → 탄력적 IP 주소 릴리즈 (안 풀면 과금 지속)
- VPC 삭제 — My-VPC → 작업 → VPC 삭제 (서브넷·RT·IGW·SG 등 종속 리소스가 함께 정리됨)
💡 삭제 순서의 원리 — "안에 든 것(EC2) → 비싼 것(NAT GW·EIP) → 컨테이너(VPC)" 순. VPC는 내부 리소스가 남아 있으면 삭제가 막히므로 마지막입니다.
마치며 — 전체 아키텍처 완성
이로써 퍼블릭/프라이빗 분리 + Bastion + NAT 의 표준 구조를 직접 손으로 완성했습니다.
인터넷 ─ IGW ─ 퍼블릭 서브넷(Bastion, NAT GW)
│
프라이빗 서브넷(PrivateEC2) ─ NAT GW로 아웃바운드만
기억할 한 줄:
"들어오는 문(IGW)과 나가는 문(NAT GW)은 다르다. 그리고 실습이 끝나면 비싼 문부터 닫는다."
VPC부터 NAT까지 한 바퀴를 돌며, "퍼블릭/프라이빗은 라우팅이 정한다", "방화벽은 NACL(서브넷)+SG(인스턴스) 2중", "NAT는 아웃바운드 전용" 이라는 핵심을 직접 확인했습니다. 수고하셨습니다!
NAT GW의 아웃바운드 전용 특성, 퍼블릭 서브넷에 두는 이유, 가용성 모드(영역별/리전별), NAT 경로는 GW 생성과 짝, 그리고 삭제 순서와 비용 경고를 강조했습니다. 이미지 자리 8곳에 캡처를 넣고 ID·IP는 실제 값으로 바꿔주세요. 시리즈 완결편이라 마지막에 전체 구조를 요약했습니다.
'클라우드 컴퓨팅 > AWS' 카테고리의 다른 글
| 실습 2-2 _ ELB 실습 ②편 — ALB (0) | 2026.06.08 |
|---|---|
| 실습 2-1_ ELB 실습 ①편 — 환경 구성 (0) | 2026.06.08 |
| 실습 1-8 _ Private EC2 (0) | 2026.06.06 |
| 실습 1-7 _ Private Subnet & Private RT (0) | 2026.06.06 |
| 실습 1-6 _ EC2 (0) | 2026.06.06 |



