home
SAA-C03

[network] NAT 게이트웨이

안에서 밖으로는 나가야 하지만, 밖에서 안으로는 막고 싶다. 프라이빗 서버의 이 딜레마를 NAT가 풀어줍니다.

One-Line Summary

NAT Gateway프라이빗 서브넷의 리소스가 인터넷(또는 외부)으로 나갈 수는 있지만, 인터넷에서 먼저 들어오는 접속은 막는 관리형 아웃바운드 관문이다. 프라이빗 서버가 OS 패치·외부 API 호출은 해야 하지만 외부에 노출되면 안 될 때 쓴다. public 서브넷에 놓고 Elastic IP를 붙이며, private 서브넷의 라우트 테이블이 이 NAT를 가리킨다.

Why It Exists

프라이빗 서브넷의 서버는 보안상 인터넷에서 직접 접근하지 못하게 막는다. 그런데 이 서버도 소프트웨어 업데이트를 받거나 외부 API를 호출하려면 인터넷으로 나가야 한다. "나가는 건 되고, 밖에서 먼저 들어오는 건 안 되는" 비대칭 통신이 필요하다.

NAT Gateway가 이 역할을 한다.

프라이빗 서버가 직접 인터넷에 나가려면
  -> 공인 IP가 필요하고, 그 순간 외부에서 접근 가능해짐(위험)

NAT Gateway 경유
  -> 프라이빗 서버는 사설 IP만 유지(외부에서 못 봄)
  -> 아웃바운드는 NAT의 공인 IP로 대신 나감
  -> 그 응답만 돌아오고, 외부가 먼저 시작하는 연결은 차단

시험 감각:

"프라이빗 인스턴스가 아웃바운드 인터넷만 필요, 인바운드는 막아라" = NAT Gateway.

Abbreviations

약어풀네임의미
NATNetwork Address Translation사설 IP ↔ 공인 IP 주소 변환
NAT GWNAT GatewayAWS 관리형 NAT 서비스
EIPElastic IPNAT Gateway에 붙이는 고정 공인 IPv4
IGWInternet GatewayVPC의 인터넷 관문(NAT도 최종적으로 이걸 통해 나감)
AZAvailability Zone가용 영역 (NAT Gateway는 AZ 단위 리소스)
Egress-only IGWEgress-only Internet GatewayIPv6 아웃바운드 전용(NAT 대응)

동작 원리

            Internet
               ▲
           ┌───┴───┐
           │  IGW  │
           └───▲───┘
               │  (public 라우트: 0.0.0.0/0 ─► IGW)
┌─ VPC ───────┼───────────────┐
│ ┌───────────┴───────┐       │
│ │ public subnet     │       │
│ │ NAT Gateway (EIP) │       │   ← 출발지를 NAT 공인 IP로 치환
│ └───────────────────┘       │
│       ▲                     │
│       │ 0.0.0.0/0 ─► NAT GW │   (private 라우트)
│ ┌──────────────────────┐    │
│ │ private subnet       │    │
│ │ App EC2 (private IP) │    │   ← 아웃바운드만, 외부 시작 연결은 차단
│ └──────────────────────┘    │
└─────────────────────────────┘
단계내용
1프라이빗 EC2가 외부로 요청 → 라우트 테이블이 NAT Gateway로 보냄
2NAT가 출발지 사설 IP를 자신의 공인 IP(EIP)로 치환해 IGW로 전달
3인터넷에서 온 응답은 NAT가 다시 사설 IP로 되돌려 EC2에 전달
4외부에서 먼저 시작하는(inbound-initiated) 연결은 NAT가 받지 않음 → 차단

배치·구성 요건 (빈출)

NAT Gateway가 동작하려면 아래가 모두 갖춰져야 한다.

#요건설명
1Public 서브넷에 배치NAT 자신이 인터넷으로 나가야 하므로 IGW 경로가 있는 서브넷에 둔다
2Elastic IP 연결NAT Gateway는 고정 공인 IP(EIP)를 가진다
3VPC에 IGW 부착NAT의 트래픽도 결국 IGW를 통해 인터넷으로
4Private 서브넷 라우트private RT에 0.0.0.0/0 → nat-xxxx 추가

흔한 실수: NAT Gateway를 private 서브넷에 놓는 것. NAT는 자기가 인터넷에 나가야 하므로 반드시 public 서브넷에 있어야 한다. private에 두면 NAT 자체가 인터넷에 못 나가 동작하지 않는다.

고가용성(HA) — AZ 단위 리소스라는 점이 핵심 (빈출)

NAT Gateway하나의 AZ 안에서만 이중화·고가용으로 동작한다. 즉 AZ 단위 리소스다. 그 AZ가 통째로 장애나면 그 NAT도 함께 죽는다.

[나쁜 구성 - 단일 NAT]
AZ-a private ─┐
AZ-c private ─┴─► NAT(AZ-a)   ← AZ-a 장애 시 AZ-c도 인터넷 끊김 + 교차 AZ 요금

[권장 구성 - AZ별 NAT]
AZ-a private ─► NAT(AZ-a) ─► IGW
AZ-c private ─► NAT(AZ-c) ─► IGW   ← 각 AZ가 자기 NAT 사용(장애 격리 + 요금 절감)
항목내용
가용성 범위AZ 내부에서만 자동 이중화 (multi-AZ 아님)
HA 설계각 AZ마다 NAT Gateway 1개 배치, 각 AZ의 private 서브넷은 자기 AZ의 NAT로 라우팅
교차 AZ 요금다른 AZ의 NAT를 쓰면 cross-AZ 데이터 전송 요금 발생 → AZ별 배치가 비용에도 유리
성능5 Gbps에서 시작해 자동으로 최대 100 Gbps까지 확장

시험 감각:

"NAT Gateway를 고가용성으로" = AZ마다 하나씩 두고 각 AZ가 자기 NAT를 쓰게 한다.

비용 감각 (빈출)

요금 요소내용
시간당 요금NAT Gateway가 떠 있는 시간만큼
데이터 처리 요금NAT를 통과한 GB당 과금
절감 포인트S3·DynamoDB 트래픽은 Gateway VPC Endpoint로 빼면 NAT 데이터 요금 회피

"프라이빗 서브넷에서 S3로 대량 전송하는데 NAT 비용이 크다" = S3 Gateway Endpoint로 우회(인터넷·NAT 안 거침).

NAT Gateway vs NAT Instance (빈출 비교)

NAT는 원래 EC2로 직접 구성(NAT Instance)했지만, 지금은 관리형 NAT Gateway가 표준이다.

구분NAT GatewayNAT Instance
관리AWS 완전관리사용자가 EC2로 직접 운영
가용성AZ 내 자동 이중화직접 이중화 구성 필요(스크립트 등)
대역폭자동 확장(최대 100 Gbps)인스턴스 타입에 종속
보안 그룹적용 불가(NACL로 제어)적용 가능
Source/Dest Check해당 없음비활성화 필수(안 하면 동작 안 함)
Bastion 겸용불가가능(포트 포워딩 등)
유지보수/패치불필요사용자 책임
권장기본 선택특수 요구(포트포워딩·비용 극한 최적화)일 때만

시험 감각:

특별한 이유가 없으면 NAT Gateway. "관리 오버헤드 최소화" 키워드면 확정.

참고: NAT Gateway엔 Private NAT Gateway 변형도 있다 — 인터넷이 아니라 다른 VPC/온프레미스로 나갈 때(사설 대역 IP 중복 회피 등) 쓰는 특수 케이스다. 시험의 기본값은 인터넷 아웃바운드용 Public NAT Gateway.

IPv6는 NAT Gateway를 쓰지 않는다

IPv6에는 사설/공인 개념이 없어 NAT가 필요 없다. IPv6 리소스의 아웃바운드 전용Egress-only Internet Gateway로 처리한다. (NAT Gateway는 IPv4 전용)

Common Wrong Directions

오답 방향왜 부족한가
NAT Gateway를 private 서브넷에 배치NAT는 인터넷에 나가야 하므로 public 서브넷에 둬야 함
NAT로 인바운드(외부→내부) 접속 허용하려 함NAT는 아웃바운드 전용. 인바운드는 IGW+public 또는 ALB
NAT Gateway 하나로 모든 AZ 커버하며 HA라고 생각AZ 단위 리소스 → AZ마다 하나씩 배치해야 진짜 HA
다른 AZ의 NAT를 공용으로 사용교차 AZ 데이터 요금 + AZ 장애 시 동시 단절
NAT Gateway에 보안 그룹 붙이려 함NAT GW는 SG 미지원(NAT Instance는 지원)
S3 대량 전송 비용을 NAT로 감내Gateway Endpoint로 NAT 데이터 요금 회피
IPv6 아웃바운드에 NAT GatewayIPv6는 Egress-only IGW

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"private instances need outbound internet, block inbound"NAT Gateway
"download updates / call external API from private subnet"NAT Gateway
"make NAT highly available across AZs"AZ마다 NAT Gateway + AZ별 라우팅
"reduce operational overhead of NAT"NAT Gateway(관리형, NAT Instance 아님)
"reduce NAT data cost for S3/DynamoDB"Gateway VPC Endpoint
"NAT with security group / act as bastion / port forwarding"NAT Instance
"IPv6 outbound only"Egress-only Internet Gateway
"outbound to on-prem/other VPC without internet"Private NAT Gateway

Memory Sentence

NAT Gateway는 프라이빗 서브넷의 아웃바운드 전용 관문(인바운드 차단). public 서브넷에 EIP 달아 놓고, private 라우트 테이블이 0.0.0.0/0 → nat을 가리킨다. AZ 단위 리소스라 HA는 AZ마다 하나씩. 관리형이라 NAT Instance보다 기본 선택이고, S3/DynamoDB 대량 트래픽은 Gateway Endpoint로 빼 비용을 아낀다. IPv6는 Egress-only IGW.

References

댓글

아직 댓글이 없습니다.