AWS Advanced Networking: VPC와 서브넷 구조 이해하기

VPC 란?

  • Amazon VPC(Virtual Private Cloud)는 “내가 정의한 가상 네트워크” 안에 AWS 리소스(EC2/RDS/ALB 등)를 배치하는 서비스.
  • 온프레미스 네트워크(스위치/라우터/서브넷/방화벽) 구조를 클라우드에서 비슷하게 구현하고, AWS의 확장성을 활용한다.

라우팅 관점: Subnet / Route Table / Internet gateway

Subnet은 “AZ 단위로 쪼갠 네트워크 구간”

  • 서브넷 1개는 반드시 1개 AZ에만 속함.

Route Table은 “트래픽 길 안내 표”

  • 라우트 테이블은 서브넷/VPC로 들어오고 나가는 트래픽의 경로 규칙을 가진다. 
  • VPC에는 Main Route Table이 있고, 서브넷별로 Custom Route Table을 붙일 수도 있다. 
  • 모든 라우트 테이블에는 삭제 불가능한 local route(VPC CIDR → local)가 기본으로 들어있고, 이게 같은 VPC 내 서브넷 간 통신 기반이 된다.

Internet Gateway(IGW)

  • 서브넷이 인터넷과 통신하려면 라우팅에 0.0.0.0/0 → IGW가 필요하다. 
  • “서브넷 A만 인터넷 되게” 하려면: 서브넷 A에 연결된 라우트 테이블에만 0.0.0.0/0 → IGW를 넣고, 다른 서브넷은 해당 라우트 테이블을 따르지 않게 분리한다.

Public Subnet, Private Subnet

Public Subnet

  • “인터넷으로 나가는 라우트(0.0.0.0/0 → IGW)가 있는 서브넷”
  • Public IP가 있는 인스턴스는 인터넷 통신 가능
  • 예: NAT, 웹 서버, 로드밸런서

Private Subnet

  • “인터넷으로 나가는 라우트가 없는 서브넷”
  • 인스턴스는 Private IP만 받음
  • 인터넷 아웃바운드가 필요하면 보통 NAT를 사용
  • 예: DB, App 서버

Subnet의 IPv4 주소: “AWS가 5개 IP 무조건 예약”

서브넷마다 AWS가 처음 4개 + 마지막 1개 IP를 예약해서 인스턴스에 할당 불가. 

예) 10.0.0.0/24일 때 예약:

  • 10.0.0.0 : 네트워크 주소
  • 10.0.0.1 : VPC 라우터용
  • 10.0.0.2 : Amazon 제공 DNS 매핑용
  • 10.0.0.3 : 미래 사용 예약
  • 10.0.0.255 : 브로드캐스트(※ VPC는 broadcast 미지원이라 예약)

VPC에서의 IP 종류: Private / Public / Elastic IP(EIP)

Private IP

  • 서브넷 CIDR 범위에서 할당 (VPC 내부 통신의 기본) 

Public IP

  • AWS의 Public IP 풀에서 할당

Elastic IP(EIP)

  • 내 계정에 할당(allocate)해두고 유지하는 고정 Public IPv4
  • “공인 IP를 고정해야 하는데, 인스턴스가 바뀔 수도 있다” → EIP가 대표 해법

VPC 보안 2대장: Security Group vs Network ACL

Security Group(SG): “인스턴스(ENI) 단위 방화벽”

  • Stateful: 인바운드 허용으로 들어온 트래픽의 리턴은 아웃바운드에 따로 룰 없어도 허용되는 개념 
  • 기본값: Inbound deny, Outbound allow all

Network ACL(NACL): “서브넷 단위 방화벽”

  • Stateless: 인바운드/아웃바운드 각각 룰을 명시해야 함 
  • Allow/Deny 둘 다 가능, 룰 번호 순서대로 평가 
  • “서브넷 레벨에서 특정 IP를 차단” 같은 용도로 좋음 

Private Subnet에서 인터넷 아웃바운드: NAT Gateway / NAT Instance

NAT의 목적

  • Private Subnet 인스턴스가 IGW 없이 인터넷으로 나가게 해주는 장치(패킷이 VPC 밖으로 나갈 때 NAT 수행)

NAT Gateway (관리형)

  • AWS가 관리, AZ 내에서 HA 성격
  • NAT GW는 반드시 Public Subnet에 생성해야 인터넷과 통신 가능 
  • 생성 시 EIP를 붙여서 아웃바운드 출구 IP를 고정 
  • NAT GW 자체에는 SG를 붙이지 않고(관리형), 제어는 주로 서브넷 NACL 등으로 한다는 포인트가 나온다. 
  • Private Subnet 라우팅은 0.0.0.0/0 → NAT GW로 설정

NAT Instance (직접 운영)

  • Public Subnet에 EC2로 NAT 서버를 띄우는 방식
  • 요구사항: Public/EIP 필요, Source/Destination check 비활성화 필수 
  • Private Subnet 라우트 테이블의 기본 경로를 NAT Instance ID로 보냄  (운영/패치/장애조치까지 전부 직접 해야 함)

댓글 남기기