AWS

AWS 클라우드 따라잡기 6장

VPC 네트워킹 — 서브넷, 라우팅, IGW, NAT

이번 장은 VPC를 다룬다.

AWS 6장 개념도

VPC는 Virtual Private Cloud의 약자다.

AWS 안에 내가 소유한 가상 네트워크다.

EC2, RDS 등 대부분의 리소스는 VPC 안에서 돈다.

네트워크를 이해하지 못하면 AWS 아키텍처를 제대로 설계할 수 없다.

이 장의 목표는 다음과 같다.

  • VPC, 서브넷, 라우팅 테이블의 관계를 잡는다.
  • 퍼블릭/프라이빗 서브넷을 구분한다.
  • IGW와 NAT의 역할을 이해한다.

1. VPC와 CIDR

VPC를 만들 때 IP 주소 범위를 정한다. 이것을 CIDR 블록이라고 한다.

예를 들어 10.0.0.0/16으로 만들면 10.0.0.0부터 10.0.255.255까지 약 6.5만 개 IP를 쓸 수 있다.

/16 뒤의 숫자가 작을수록 범위가 넓다.

사설 IP 대역(10.x, 172.16~31.x, 192.168.x)을 쓰는 게 관례다.

2. 서브넷 — VPC를 나누기

서브넷(Subnet)은 VPC를 더 작게 쪼갠 구획이다.

각 서브넷은 하나의 AZ에 속한다.

서브넷을 나누는 이유는 두 가지다.

첫째, 여러 AZ에 걸쳐 배포해 고가용성을 확보한다.

둘째, 인터넷에 노출할 것과 감출 것을 나눈다.

  • 퍼블릭 서브넷: 인터넷과 직접 통신한다. 웹 서버, 로드밸런서를 둔다.
  • 프라이빗 서브넷: 인터넷에서 직접 접근 못 한다. DB, 내부 서버를 둔다.

3. 라우팅 테이블

라우팅 테이블(Route Table)은 "이 목적지로 가려면 어디로 보내라"는 지도다.

서브넷마다 라우팅 테이블이 연결된다.

퍼블릭 서브넷과 프라이빗 서브넷의 차이는 사실 라우팅 테이블에 있다.

  • 퍼블릭 서브넷의 라우팅 테이블에는 인터넷 게이트웨이(IGW)로 가는 경로가 있다.
  • 프라이빗 서브넷에는 그 경로가 없다.

기본 예시:

목적지 대상
10.0.0.0/16 local (VPC 내부)
0.0.0.0/0 igw-xxxx (인터넷)

0.0.0.0/0은 "그 외 모든 곳", 즉 인터넷을 뜻한다.

4. 인터넷 게이트웨이 (IGW)

IGW(Internet Gateway)는 VPC와 인터넷을 잇는 문이다.

VPC에 하나 붙이고, 퍼블릭 서브넷의 라우팅 테이블이 0.0.0.0/0 → IGW를 가리키게 한다.

인스턴스가 인터넷과 통신하려면 세 가지가 모두 필요하다.

  1. 퍼블릭 IP(또는 탄력적 IP)
  2. IGW로 가는 라우팅
  3. 트래픽을 허용하는 보안그룹

5. NAT 게이트웨이

프라이빗 서브넷의 서버도 가끔 인터넷에 나가야 한다.

예를 들어 소프트웨어 업데이트를 받을 때다.

하지만 인터넷에서 그 서버로 들어오는 건 막고 싶다.

이때 NAT 게이트웨이를 쓴다.

NAT는 프라이빗 서버가 밖으로 나가는 것만 허용하고, 밖에서 들어오는 연결은 막는다.

구성은 이렇다.

  • NAT 게이트웨이는 퍼블릭 서브넷에 둔다.
  • 프라이빗 서브넷의 라우팅 테이블이 0.0.0.0/0 → NAT를 가리킨다.

NAT 게이트웨이는 시간당 요금과 데이터 처리 요금이 있으니 비용을 염두에 둔다.

6. 보안그룹 vs NACL

VPC 안에는 두 겹의 방화벽이 있다.

구분 보안그룹 NACL
적용 대상 인스턴스(ENI) 서브넷
규칙 허용만 허용 + 거부
상태 상태 저장(stateful) 상태 비저장(stateless)

보안그룹은 3장에서 봤듯 상태 저장이라 응답이 자동으로 나간다.

NACL은 상태 비저장이라 인바운드와 아웃바운드를 각각 열어야 한다.

보통은 보안그룹으로 대부분 제어하고, NACL은 서브넷 단위의 넓은 차단에만 쓴다.

정리

  • VPC는 내 가상 네트워크, 서브넷은 그 안의 구획이다.
  • 퍼블릭/프라이빗의 차이는 라우팅 테이블(IGW 경로 유무)에 있다.
  • IGW는 인터넷 문, NAT는 프라이빗 서버의 아웃바운드 전용 통로다.
  • 보안그룹(인스턴스, 상태 저장)과 NACL(서브넷, 상태 비저장)을 구분한다.

다음 장에서는 데이터를 담는 관리형 데이터베이스를 다룬다.

댓글 0