NAT Gateway 란?
NAT Gateway는 Network Address Translation의 약자로, 프라이빗 네트워크의 리소스가 인터넷과 통신할 수 있도록 IP 주소를 변환해주는 관리형 네트워크 서비스입니다. 주로 프라이빗 서브넷의 인스턴스들이 외부 인터넷에 접근할 수 있게 하면서도, 외부에서 직접적인 인바운드 연결은 차단하는 역할을 합니다.
NAT의 기본 개념
NAT (Network Address Translation)
NAT는 IP 패킷의 송신지 또는 목적지 IP 주소를 변환하는 기술입니다.
프라이빗 IP → NAT → 퍼블릭 IP |
NAT가 필요한 이유
IPv4 주소 고갈 문제 해결
- 제한된 퍼블릭 IP 주소를 효율적으로 사용
- 하나의 퍼블릭 IP로 여러 프라이빗 IP 리소스 관리
보안 강화
- 내부 네트워크 구조 은닉
- 외부에서 직접 접근 차단
유연한 네트워크 구성
- 내부 IP 체계를 자유롭게 설계
- 외부 네트워크 변경 시 내부 영향 최소화
NAT Gateway vs NAT Instance
NAT Gateway
AWS, GCP 등 클라우드 제공업체가 관리하는 관리형 서비스
장점:
- 높은 가용성 (자동 이중화)
- 자동 확장 (최대 45Gbps)
- 관리 부담 없음
- 보안 그룹 불필요
단점:
- 시간당 과금
- 데이터 전송량 과금
- 보안 그룹 미지원
- Bastion Host로 사용 불가
NAT Instance
사용자가 직접 관리하는 EC2 인스턴스
장점:
- 비용 절감 가능 (소규모의 경우)
- 보안 그룹 사용 가능
- Bastion Host로 활용 가능
- 커스터마이징 가능
단점:
- 관리 부담 (패치, 업데이트)
- 가용성 직접 관리 필요
- 성능 제한 (인스턴스 타입에 따라)
- Single Point of Failure 위험
AWS NAT Gateway 아키텍처
기본 구성
┌─────────────────────────────────────────────────┐ |
라우팅 테이블 구성
Public Subnet 라우팅 테이블:
Destination Target |
Private Subnet 라우팅 테이블:
Destination Target |
NAT Gateway 동작 방식
아웃바운드 트래픽 흐름
- 프라이빗 인스턴스 → 인터넷
1. Private Instance (10.0.2.10) → 외부 서버 (93.184.216.34)
Source: 10.0.2.10:50000
Dest: 93.184.216.34:443
2. NAT Gateway에서 주소 변환
Source: 52.1.2.3:10000 (NAT Gateway Public IP)
Dest: 93.184.216.34:443
3. 외부 서버로 전송
4. 응답 수신
Source: 93.184.216.34:443
Dest: 52.1.2.3:10000
5. NAT Gateway에서 역변환
Source: 93.184.216.34:443
Dest: 10.0.2.10:50000
6. Private Instance로 전달
인바운드 트래픽 차단
NAT Gateway는 아웃바운드 연결만 허용하고, 외부에서 시작되는 인바운드 연결은 자동으로 차단됩니다.
❌ Internet → NAT Gateway → Private Instance (불가능) |
NAT Gateway 고가용성 구성
Multi-AZ 구성
┌─────────────────────────────────────────────────────┐ |
각 가용 영역(AZ)마다 NAT Gateway를 배치하여 고가용성을 확보합니다.
NAT Gateway 설정 (AWS 예시)
1. NAT Gateway 생성
# AWS CLI를 통한 NAT Gateway 생성 |
2. 라우팅 테이블 설정
# 라우팅 테이블 생성 |
3. Terraform 설정 예시
# Elastic IP 생성 |
NAT Gateway 사용 사례
1. 데이터베이스 서버의 외부 통신
프라이빗 서브넷의 RDS → NAT Gateway → 외부 API |
- 보안 패치 다운로드
- 외부 API 호출
- 백업 데이터 전송
2. 프라이빗 컴퓨팅 리소스의 인터넷 접근
Lambda (VPC 내부) → NAT Gateway → 외부 서비스 |
3. 소프트웨어 업데이트 및 패키지 설치
# 프라이빗 EC2에서 패키지 설치 |
4. 마이크로서비스 아키텍처
Private Subnet: |
NAT Gateway vs Internet Gateway
| 특징 | NAT Gateway | Internet Gateway |
|---|---|---|
| 위치 | Public Subnet | VPC 레벨 |
| 주요 역할 | Private → Internet | Public ↔ Internet |
| IP 변환 | 수행 (Private → Public) | 수행하지 않음 |
| 인바운드 | 차단 | 허용 |
| 아웃바운드 | 허용 | 허용 |
| 비용 | 시간당 + 데이터 전송량 | 무료 (데이터 전송량만) |
비용 최적화 방법
1. NAT Gateway 통합
여러 프라이빗 서브넷이 하나의 NAT Gateway를 공유하도록 설정
Multiple Private Subnets → Single NAT Gateway |
2. VPC Endpoint 활용
AWS 서비스 접근 시 NAT Gateway 대신 VPC Endpoint 사용
# S3 VPC Endpoint |
비용 절감:
Before: Private Instance → NAT Gateway → S3 (데이터 전송 비용 발생) |
3. 데이터 전송 최소화
- 불필요한 외부 API 호출 줄이기
- 캐싱 활용
- 배치 처리로 요청 횟수 감소
4. NAT Instance 고려
트래픽이 적은 개발/테스트 환경에서는 NAT Instance 사용 검토
모니터링 및 트러블슈팅
CloudWatch 메트릭
# NAT Gateway 모니터링 |
일반적인 문제 해결
1. 프라이빗 인스턴스가 인터넷 접근 불가
체크리스트:
- NAT Gateway가 Public Subnet에 있는지 확인
- Elastic IP가 NAT Gateway에 연결되어 있는지 확인
- Private Subnet의 라우팅 테이블에 NAT Gateway가 설정되어 있는지 확인
- 보안 그룹과 Network ACL 확인
# 라우팅 테이블 확인 |
2. 연결 타임아웃
# NAT Gateway 상태가 'available'인지 확인 |
3. 포트 할당 오류
NAT Gateway는 하나의 IP에서 약 55,000개의 동시 연결 지원. 초과 시:
- 여러 NAT Gateway 사용
- 연결 풀링 최적화
- 불필요한 연결 종료
보안 모범 사례
1. Network ACL 설정
Inbound Rules (Private Subnet): |
2. 최소 권한 원칙
프라이빗 리소스는 필요한 외부 엔드포인트만 접근하도록 제한
3. VPC Flow Logs 활성화
resource "aws_flow_log" "nat_gateway" { |
4. 정기적인 모니터링
- 비정상적인 트래픽 패턴 탐지
- 비용 이상 증가 알림 설정
- 연결 실패 로그 검토
NAT Gateway의 장단점
장점
- 높은 가용성: 자동으로 이중화되어 단일 장애 지점 제거
- 확장성: 자동으로 최대 45Gbps까지 확장
- 관리 편의성: 패치, 업데이트 불필요
- 보안: 외부에서 시작되는 연결 자동 차단
- 성능: 높은 대역폭과 낮은 지연시간
단점
- 비용: 시간당 요금 + 데이터 전송 비용
- 유연성 제한: 커스터마이징 불가
- 보안 그룹 미지원: Network ACL만 사용 가능
- 포트 포워딩 불가: 인바운드 연결 설정 불가