본문으로 이동
메뉴 여닫기
환경 설정 메뉴 여닫기
개인 메뉴 여닫기
로그인하지 않음
지금 편집한다면 당신의 IP 주소가 공개될 수 있습니다.
Amazon Virtual Private Cloud; Amazon VPC; 아마존 VPC
AWS 클라우드 안에 논리적으로 격리된 가상 네트워크를 만들고 IP 주소 범위, 서브넷, 라우팅, 게이트웨이, 보안 규칙을 직접 정하는 AWS의 네트워킹 서비스

아마존 Virtual Private Cloud(아마존 VPC)는 AWS 계정 전용의 가상 네트워크를 제공한다. 사용자는 VPC의 IP 주소 범위를 정하고, 그 범위를 서브넷으로 나누고, 라우팅 테이블과 게이트웨이로 트래픽이 어디로 나가고 들어올지를 결정한다. EC2 인스턴스, RDS DB 인스턴스, 로드 밸런서, Lambda 함수의 VPC 연결 같은 대부분의 리소스가 VPC의 서브넷 안에 배치된다.

VPC는 리전 단위 리소스로, 리전 안의 여러 가용 영역에 걸쳐 만들 수 있다. 반면 서브넷은 반드시 하나의 가용 영역에 속하며 여러 가용 영역에 걸칠 수 없다. 그래서 가용 영역 장애에 견디려면 같은 역할의 서브넷을 가용 영역마다 하나씩 만들고 리소스를 나눠 배치한다. 클라우드 일반 개념으로서의 가상 사설 클라우드는 VPC 문서를 참고한다.

두 가용 영역의 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 게이트웨이 엔드포인트로 이루어진 VPC
구성 요소 설명
VPC 리전 안에 만드는 격리된 가상 네트워크. 기본 IPv4 CIDR 블록이 반드시 하나 있어야 한다
서브넷(subnet) VPC 주소 범위를 나눈 구간. 하나의 가용 영역에 속한다
라우팅 테이블 목적지 주소별로 트래픽을 어느 대상(게이트웨이, 네트워크 인터페이스, 연결)으로 보낼지 정한 규칙 집합
인터넷 게이트웨이 VPC와 인터넷 사이의 양방향 통신 통로. 서브넷을 퍼블릭으로 만드는 핵심 요소
NAT 게이트웨이 프라이빗 서브넷의 리소스가 밖으로 나가는 연결만 할 수 있게 해 주는 관리형 NAT
보안 그룹 리소스(네트워크 인터페이스)에 붙는 상태 저장 방화벽
네트워크 ACL 서브넷 경계에 적용되는 상태 비저장 방화벽
VPC 엔드포인트 인터넷이나 NAT를 거치지 않고 AWS 서비스에 사설로 접근하는 통로
VPC 흐름 로그 네트워크 인터페이스를 오가는 IP 트래픽 정보를 기록하는 기능

CIDR 블록과 서브넷

편집 원본 편집
  • VPC를 만들 때 IPv4 CIDR 블록을 지정한다. 허용 크기는 /16(65,536개 주소)부터 /28(16개 주소)까지이다.
  • 사설 IP 대역(RFC 1918의 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)에서 고르는 것이 권장된다.
  • 만든 뒤에 보조 IPv4 CIDR 블록을 추가할 수는 있지만, 이미 있는 CIDR 블록의 크기를 늘리거나 줄일 수는 없다. 나중에 VPC 피어링이나 온프레미스 연결이 필요할 수 있으므로 처음부터 다른 네트워크와 겹치지 않는 넉넉한 범위를 잡는 것이 좋다.
  • IPv6 CIDR 블록은 선택 사항으로 추가 연결할 수 있다.
  • 서브넷의 IPv4 CIDR 크기도 /16에서 /28 사이이며, 같은 VPC 안의 서브넷끼리는 범위가 겹칠 수 없다.

서브넷마다 예약되는 IP 주소

편집 원본 편집

각 서브넷 CIDR 블록의 처음 4개와 마지막 1개, 모두 5개의 주소는 AWS가 예약하므로 리소스에 할당할 수 없다. 10.0.0.0/24 서브넷을 예로 들면 다음과 같다.

주소 용도
10.0.0.0 네트워크 주소
10.0.0.1 VPC 라우터용으로 AWS가 예약
10.0.0.2 DNS 서버용으로 AWS가 예약(VPC 기본 범위 +2 주소)
10.0.0.3 향후 사용을 위해 AWS가 예약
10.0.0.255 네트워크 브로드캐스트 주소. VPC는 브로드캐스트를 지원하지 않지만 예약한다

따라서 /24 서브넷에서 실제로 쓸 수 있는 주소는 251개, /28 서브넷에서는 11개이다. "서브넷에 인스턴스 N개를 넣으려면 최소 몇 비트가 필요한가" 같은 계산 문제에서 이 5개를 빼는 것을 잊지 않아야 한다.

퍼블릭 서브넷과 프라이빗 서브넷

편집 원본 편집

서브넷 자체에 퍼블릭·프라이빗 속성이 있는 것이 아니라 연결된 라우팅 테이블이 성격을 정한다.

구분 퍼블릭 서브넷 프라이빗 서브넷
기본 경로(0.0.0.0/0) 인터넷 게이트웨이로 향함 인터넷 게이트웨이로 가는 경로 없음. 필요하면 NAT 게이트웨이로 향함
인터넷에서 들어오는 연결 퍼블릭 IP나 탄력적 IP가 있으면 가능 불가
주로 두는 리소스 인터넷 연결 로드 밸런서, NAT 게이트웨이, 베스천 호스트 애플리케이션 서버, 데이터베이스, 내부 서비스

라우팅 테이블

편집 원본 편집
  • VPC를 만들면 기본 라우팅 테이블이 생기고, 명시적으로 연결하지 않은 서브넷은 이 테이블을 따른다. 서브넷 하나는 한 번에 라우팅 테이블 하나와만 연결된다.
  • 모든 라우팅 테이블에는 VPC CIDR 범위를 대상 local로 보내는 경로가 들어 있어 VPC 안의 서브넷끼리는 기본적으로 통신할 수 있다.
  • 경로가 여러 개 겹치면 가장 구체적인 경로(최장 접두사 일치)가 선택된다.

예를 들어 10.0.0.0/16 VPC의 퍼블릭 서브넷과 프라이빗 서브넷 라우팅 테이블은 다음처럼 구성한다.

라우팅 테이블 대상 주소 대상
퍼블릭 10.0.0.0/16 local
퍼블릭 0.0.0.0/0 인터넷 게이트웨이(igw-...)
프라이빗 10.0.0.0/16 local
프라이빗 0.0.0.0/0 NAT 게이트웨이(nat-...)

인터넷 게이트웨이

편집 원본 편집

인터넷 게이트웨이(internet gateway)는 VPC와 인터넷 사이의 통신을 가능하게 하는 구성 요소이다. 수평 확장되고 이중화된 고가용성 구성 요소라서 사용자가 가용성이나 대역폭 병목을 신경 쓸 필요가 없다. IPv4와 IPv6를 모두 지원하며, IPv4 통신에서는 인스턴스의 사설 주소와 퍼블릭 주소 사이의 주소 변환도 수행한다.

  • 사용하려면 VPC에 연결(attach)하고 서브넷 라우팅 테이블에 경로를 추가해야 한다. VPC 하나에는 인터넷 게이트웨이를 한 번에 하나만 연결할 수 있다.
  • 인터넷 게이트웨이 자체에는 요금이 없고, 이를 통해 나가는 데이터 전송에 요금이 붙는다.
  • IPv6에서 나가는 통신만 허용하고 들어오는 연결은 막으려면 송신 전용 인터넷 게이트웨이(egress-only internet gateway)를 쓴다. IPv4의 NAT 게이트웨이와 비슷한 역할이다.

NAT 게이트웨이

편집 원본 편집

프라이빗 서브넷의 인스턴스가 패치 다운로드나 외부 API 호출처럼 밖으로 나가는 연결만 해야 할 때는 퍼블릭 서브넷에 NAT 게이트웨이를 두고 프라이빗 라우팅 테이블의 기본 경로를 그쪽으로 보낸다. 가용 영역별 배치, 리전 NAT 게이트웨이, NAT 인스턴스와의 차이는 NAT 게이트웨이 문서에 정리했다.

보안 그룹과 네트워크 ACL 요약

편집 원본 편집
구분 보안 그룹 네트워크 ACL
적용 위치 인스턴스(네트워크 인터페이스) 수준 서브넷 수준
규칙 종류 허용 규칙만 허용과 거부
상태 상태 저장(응답 트래픽 자동 허용) 상태 비저장(응답 트래픽도 규칙 필요)
평가 방식 모든 규칙을 종합해 판단 번호가 낮은 규칙부터 순서대로, 처음 일치한 규칙 적용

자세한 비교와 규칙 예시는 보안 그룹과 네트워크 ACL 문서를 본다.

VPC 흐름 로그

편집 원본 편집

VPC 흐름 로그(VPC Flow Logs)는 VPC 안 네트워크 인터페이스를 오가는 IP 트래픽의 정보를 수집한다.

  • VPC, 서브넷, 네트워크 인터페이스 단위로 만들 수 있다. VPC나 서브넷에 만들면 그 안의 모든 네트워크 인터페이스가 대상이 된다.
  • 수집할 트래픽 유형으로 허용된 트래픽, 거부된 트래픽, 모든 트래픽 중 하나를 고른다.
  • 게시 대상은 아마존 CloudWatch Logs, 아마존 S3, 아마존 Data Firehose 중에서 고른다. S3에 쌓은 로그는 아마존 아테나로 조회할 수 있다.
  • 패킷 내용이 아니라 출발지·목적지 주소, 포트, 프로토콜, 허용·거부 여부 같은 메타데이터를 기록한다.
  • 트래픽 경로 밖에서 수집되므로 네트워크 처리량이나 지연 시간에 영향을 주지 않는다. 실시간 스트림은 아니며 게시까지 몇 분이 걸릴 수 있다.
  • 보안 그룹 규칙이 지나치게 막고 있는지 진단하거나, 인스턴스로 들어오는 트래픽을 감시하는 데 쓴다.

각 리전에는 바로 쓸 수 있는 기본 VPC가 준비되어 있다.

  • IPv4 CIDR 172.31.0.0/16
  • 가용 영역마다 /20 크기의 기본 서브넷 하나. 기본 서브넷은 모두 퍼블릭 서브넷이다
  • 인터넷 게이트웨이가 연결되어 있고, 기본 라우팅 테이블에 0.0.0.0/0 → 인터넷 게이트웨이 경로가 있다
  • 기본 보안 그룹과 기본 네트워크 ACL이 함께 만들어진다

빠른 시험용으로는 편하지만, 운영 환경에서는 주소 범위와 서브넷 구조를 직접 설계한 VPC를 쓰는 것이 일반적이다.

3계층 VPC 예시

편집 원본 편집

10.0.0.0/16 VPC를 두 가용 영역에 걸쳐 웹·애플리케이션·데이터베이스 3계층으로 나눈 예시이다.

계층 서브넷(AZ a / AZ c) 기본 경로 배치 리소스 인바운드 허용 원천
퍼블릭 10.0.0.0/24 / 10.0.1.0/24 인터넷 게이트웨이 Application Load Balancer, NAT 게이트웨이 0.0.0.0/0의 HTTPS(443)
애플리케이션(프라이빗) 10.0.10.0/24 / 10.0.11.0/24 같은 AZ의 NAT 게이트웨이 EC2 Auto Scaling 그룹, 컨테이너 로드 밸런서 보안 그룹
데이터(프라이빗) 10.0.20.0/24 / 10.0.21.0/24 없음(local만) RDS 다중 AZ, ElastiCache 애플리케이션 보안 그룹의 DB 포트

보안 그룹 규칙에서 IP 대역 대신 앞 계층의 보안 그룹을 원천으로 지정하면 인스턴스가 늘거나 줄어도 규칙을 고칠 필요가 없다. 데이터 계층은 인터넷으로 가는 경로 자체를 두지 않고, S3나 DynamoDB 접근이 필요하면 VPC 엔드포인트를 쓴다.

다른 네트워크와 연결

편집 원본 편집
요구 쓰는 기능
VPC 두 개를 사설로 연결 VPC 피어링
다수 VPC와 온프레미스를 중앙에서 연결 AWS Transit Gateway
인터넷을 거쳐 암호화된 사이트 간 연결 AWS Site-to-Site VPN
전용 물리 회선으로 일관된 성능 AWS Direct Connect
AWS 서비스나 다른 계정 서비스에 사설 접근 VPC 엔드포인트(AWS PrivateLink)
  • 퍼블릭 서브넷은 "라우팅 테이블에 인터넷 게이트웨이로 가는 경로가 있는 서브넷"이다. 인스턴스가 인터넷에 안 붙는 문제는 경로, 퍼블릭 IP, 보안 그룹, 네트워크 ACL 순으로 점검한다.
  • 서브넷은 하나의 가용 영역에 속한다. 고가용성 요구에는 가용 영역마다 서브넷을 두고 리소스를 분산한다.
  • 서브넷마다 5개의 IP가 예약된다. 주소 계산 문제에서 자주 함정이 된다.
  • VPC CIDR은 나중에 크기를 바꿀 수 없고 보조 CIDR 추가만 가능하다. 피어링·하이브리드 연결을 고려해 겹치지 않게 설계한다.
  • 데이터베이스는 프라이빗 서브넷에 두고 앞 계층 보안 그룹만 허용하는 것이 정석 답이다.
  • 거부된 트래픽을 확인하거나 네트워크 감사를 해야 하면 VPC 흐름 로그를 켜고 CloudWatch Logs나 S3로 보낸다.