home
SAA-C03

[network] 라우트 테이블

같은 서브넷인데 왜 어떤 건 인터넷이 되고 어떤 건 안 될까. 그 답은 트래픽의 이정표, 라우트 테이블에 있습니다.

One-Line Summary

Route Table은 "이 목적지(IP 대역)로 가는 트래픽은 저 장치로 보내라"는 경로 규칙의 모음이다. 서브넷마다 하나의 라우트 테이블이 연결되고, 그 규칙에 따라 트래픽이 VPC 내부(local)·인터넷(IGW)·NAT·피어링·Transit Gateway 등으로 흘러간다. 서브넷이 public이냐 private이냐를 실제로 결정하는 것도 바로 이 라우트 테이블이다.

Why It Exists

VPC 안에는 인터넷으로 나가야 하는 트래픽, VPC 내부끼리 도는 트래픽, 다른 VPC나 온프레미스로 가야 하는 트래픽이 섞여 있다. 각 트래픽을 목적지에 따라 어디로 보낼지 정하는 규칙이 없으면 통신이 성립하지 않는다.

Route Table이 그 교통정리를 한다.

라우트 규칙이 없으면
  -> 트래픽이 어디로 가야 할지 몰라 통신 실패

Route Table
  -> "목적지 CIDR → 보낼 대상(target)" 규칙으로 경로 결정
  -> 서브넷에 연결되어 그 서브넷의 트래픽 흐름을 통제

시험 감각:

"통신이 안 된다 / 인터넷이 안 된다" 문제의 절반은 라우트 테이블에 경로가 없어서다.

Abbreviations

약어풀네임의미
RouteRoute목적지(CIDR) → 대상(target) 한 줄 규칙
DestinationDestination트래픽의 목적지 IP 범위(CIDR)
TargetTarget그 트래픽을 보낼 대상(local, igw, nat 등)
Main Route TableMain Route Table명시적 연결이 없는 서브넷이 기본으로 쓰는 테이블
locallocal routeVPC 내부 통신용, 자동 생성·삭제 불가
BlackholeBlackhole대상이 사라져 더 이상 유효하지 않은 경로
Route PropagationRoute PropagationVGW/DX 경로를 라우트 테이블에 자동 반영

라우트 테이블의 구조 — 규칙 한 줄씩

라우트 테이블은 여러 개의 route(규칙) 로 이루어진다. 각 route는 목적지(Destination) → 대상(Target) 형태다.

예시 (public 서브넷용):

DestinationTarget의미
10.0.0.0/16localVPC 내부(10.0.0.0/16)로 가는 트래픽은 VPC 안에서 처리
0.0.0.0/0igw-xxxx그 외 모든 목적지(=인터넷)는 Internet Gateway로
  • 0.0.0.0/0은 "나머지 전부(=인터넷)"를 뜻하는 기본 경로(default route).
  • local은 VPC를 만들면 자동으로 생기고 삭제할 수 없다. 덕분에 VPC 안 모든 서브넷은 별도 설정 없이 서로 통신 가능하다.

라우트 테이블과 서브넷의 연결 규칙 (중요)

규칙내용
서브넷 : 라우트 테이블서브넷 하나는 정확히 하나의 라우트 테이블에 연결된다
라우트 테이블 : 서브넷하나의 라우트 테이블은 여러 서브넷에 연결될 수 있다
명시적 연결이 없으면그 서브넷은 VPC의 Main Route Table을 자동으로 따른다
Main Route TableVPC 생성 시 자동 생성. 어떤 테이블을 main으로 할지 변경 가능
VPC
├── Main Route Table (기본)   ← 명시적 연결 없는 서브넷이 사용
├── Custom RT-public          ← public 서브넷들 연결 (0.0.0.0/0 → igw)
└── Custom RT-private         ← private 서브넷들 연결 (0.0.0.0/0 → nat)

실무 팁: Main Route Table은 되도록 건드리지 말고(안전을 위해 인터넷 경로 없이 두고), public/private용 커스텀 라우트 테이블을 따로 만들어 명시적으로 연결하는 것이 안전한 관례다. 새 서브넷이 실수로 main을 따라 의도치 않게 노출/차단되는 사고를 막는다.

Public / Private를 결정하는 것이 라우트 테이블

앞선 노트(IGW, VPC)에서 반복된 핵심을 라우트 테이블 관점으로 정리한다.

서브넷 성격라우트 테이블 핵심 경로
Public0.0.0.0/0 → igw-xxxx (인터넷 양방향)
Private (아웃바운드 필요)0.0.0.0/0 → nat-xxxx (아웃바운드만)
Isolated (완전 격리, 예: DB 전용)local만 존재 (외부 경로 없음)
Public RT      : 10.0.0.0/16 -> local , 0.0.0.0/0 -> igw
Private RT     : 10.0.0.0/16 -> local , 0.0.0.0/0 -> nat
Isolated RT    : 10.0.0.0/16 -> local

대상(Target) 종류 — 어디로 보낼 수 있나

라우트의 Target으로 지정할 수 있는 대표 대상들. "이 목적지는 저 장치로" 를 정할 때 쓴다.

Target언제 쓰나
localVPC 내부 통신(자동)
Internet Gateway (igw)인터넷 양방향 (public 서브넷)
NAT Gateway (nat)private 서브넷의 아웃바운드 인터넷
Egress-only IGW (eigw)IPv6 아웃바운드 전용
VPC Peering (pcx)피어링된 다른 VPC의 CIDR로
Transit Gateway (tgw)TGW 허브를 통해 다수 VPC/온프렘으로
Virtual Private Gateway (vgw)Site-to-Site VPN / Direct Connect로 온프레미스
Gateway VPC Endpoint (pl-xxxx)S3·DynamoDB로 인터넷 안 거치고(프리픽스 리스트)
Network Interface (eni) / instance특정 인스턴스로(예: NAT 인스턴스, 방화벽 어플라이언스)

경로 우선순위 — Longest Prefix Match (빈출)

목적지에 매칭되는 route가 여러 개면, 가장 구체적인(prefix가 긴) 경로가 이긴다. 이를 longest prefix match라 한다.

예: 목적지 172.31.5.10으로 가는 패킷

DestinationTarget채택?
0.0.0.0/0igw✕ (덜 구체적)
172.31.0.0/16pcx-A
172.31.5.0/24pcx-B가장 구체적
  • local 경로는 항상 최우선(VPC 내부 대역은 무조건 local로).
  • 그래서 VPC CIDR과 겹치는 대역을 다른 곳으로 보내는 것은 불가능(피어링/VPN 설계 시 CIDR 겹치면 안 되는 이유).

정적 경로 vs 전파된 경로 (Route Propagation)

구분내용
정적(static) 경로사용자가 직접 추가한 경로
전파(propagated) 경로VGW(VPN/DX) 에서 학습한 온프레미스 경로를 BGP로 라우트 테이블에 자동 반영

Route Propagation을 켜면 온프레미스 네트워크가 알려주는 대역이 자동으로 라우트 테이블에 들어와, 수동으로 일일이 추가할 필요가 없다.

Blackhole 경로

route의 Target이 삭제되거나 분리되면(예: NAT Gateway 삭제) 그 경로는 blackhole 상태가 되어 트래픽이 버려진다.

"설정은 그대로인데 갑자기 통신이 끊겼다" → 라우트가 blackhole인지(대상 리소스가 삭제됐는지) 확인.

실제 사용 예 — 3-Tier에서의 라우트 테이블

[Public Subnet]  RT-public   : local , 0.0.0.0/0 -> igw
   (ALB, NAT Gateway 위치)
[Private App]    RT-private  : local , 0.0.0.0/0 -> nat
   (EC2 앱: 인바운드는 ALB 통해서만, 아웃바운드는 NAT로)
[Private DB]     RT-db       : local 만
   (RDS: 외부 경로 아예 없음, VPC 내부에서만 접근)
계층라우트 테이블효과
Public0.0.0.0/0 → igw인터넷과 양방향
App(Private)0.0.0.0/0 → nat아웃바운드만(패치·외부 API)
DB(Private)local만완전 격리, 최고 수준 보호

Common Wrong Directions

오답 방향왜 부족한가
IGW만 붙이면 인터넷 된다고 생각라우트 테이블에 0.0.0.0/0 → igw가 있어야 함
서브넷 하나에 라우트 테이블 여러 개 연결서브넷은 정확히 하나의 라우트 테이블에만
명시적 연결 안 한 서브넷은 인터넷 되는 줄Main Route Table을 따름 → main에 인터넷 경로 없으면 안 됨
local 경로를 지우거나 다른 곳으로 우회local은 삭제/오버라이드 불가(VPC 대역은 항상 내부)
피어링/VPN인데 CIDR이 겹침local이 최우선이라 겹친 대역은 외부로 못 감
통신 끊김 원인을 SG만 의심라우트 blackhole(대상 삭제)도 흔한 원인
여러 경로 중 default(0.0.0.0/0)가 항상 쓰인다고 생각longest prefix match — 더 구체적 경로가 우선

Exam Triggers

문제에서 이런 표현이 나오면떠올릴 것
"instance in public subnet can't reach internet"라우트 테이블 0.0.0.0/0 → igw 확인
"private subnet needs outbound internet"라우트 0.0.0.0/0 → nat
"which makes a subnet public vs private"Route Table의 IGW 경로 유무
"traffic between peered VPCs not working"양쪽 라우트 테이블에 상대 CIDR → pcx 필요
"route to on-premises via VPN/DX"vgw 대상 + Route Propagation
"most specific route is chosen"longest prefix match
"route shows blackhole / suddenly no connectivity"대상 리소스 삭제 여부
"S3 access without internet"Gateway Endpoint 프리픽스 리스트 경로

Memory Sentence

라우트 테이블 = "목적지 CIDR → 대상" 규칙 모음. 서브넷은 라우트 테이블 하나에만 연결(없으면 Main을 따름), 하나의 테이블은 여러 서브넷에. local은 자동·삭제불가로 VPC 내부 통신을 보장하고, 0.0.0.0/0 → igw면 public·→ nat면 private·local만이면 격리. 경로가 겹치면 가장 구체적인 것(longest prefix match)이 이긴다.

References

댓글

아직 댓글이 없습니다.