본문 바로가기

Develop/AWS

[AWS] VPC 이해하기

반응형

다루는 내용

AWS를 사용하기 위해 필수적으로 이해가 필요한 Virtual Private Cloud (VPC)와 관련된 개념들을 다루었습니다.

  • VPC, Amazon VPC
  • Subnet, Amazon VPC의 Subnet
  • Routing Table
  • Internet Gateway
  • Regions
  • Availability Zones
  • CIDR

들어가기에 앞서

아래의 다이어그램은 VPC의 예시입니다. VPC에는 리전의 각 가용성 영역에 하나의 서브넷이 있고, 각 서브넷에 EC2 인스턴스가 있고, VPC의 리소스와 인터넷 간의 통신을 허용하는 인터넷 게이트웨이가 있습니다. 이 다이어그램에 나온 개념들에 대해 하나씩 정리해 보도록 하겠습니다.

Amazon VPC 예시

 

VPC (Virtual Private Cloud)

VPC 정의

가상 개인 클라우드 VPC는 Virtual Private Cloud의 약자로, 클라우드 컴퓨팅 환경에서 사용자가 독립적으로 운영하고 관리하는 가상화, 개인화된 클라우드 환경입니다. VPC는 가상 서버, 스토리지 등의 리소스와 가상 네트워크 등을 사용하여 자체적으로 클라우드 인프라를 구축하고 관리할 수 있습니다.

 

VPC에 반대되는 개념인 공용 클라우드는 여러 사용자가 리소스를 공유하지만, VPC는 사용자에게 독립적으로 할당되는 환경입니다. 이는 사용자가 더 높은 제어와 격리를 요구할 때 사용하는 옵션입니다.

Amazon VPC

Amazon VPC는 Amazon에서 제공하는 VPC로, 사용자는 이를 사용하여 논리적으로 격리된 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. 리소스 배치, 연결 및 보안을 포함하여 가상 네트워킹 환경을 완전히 제어할 수 있습니다. 

 

AWS에서 자신만의 가상 개인 클라우드를 만들기 위해 일반적으로 아래와 같은 작동 방식을 따릅니다.

  1. VPC를 설정하여 시작합니다. (VPC 생성)
  2. EC2, RDS와 같은 리소스들을 VPC에 추가합니다. (서비스 등록)
  3. 계정, 가용 영역 (AZ) 또는 AWS 리전에서 서로 통신하는 법을 정의합니다. (AWS 물리적 통신 정의)

VPC 예시

위 다이어그램은 리전 1 안에서 네트워크 트래픽이 가용 영역 1의 VPC와 가용 영역 2의 VPC 간에 공유되는, 가능한 구성을 보여줍니다. 동일한 아키텍처가 리전 2에도 표시되어 있습니다. 이 예제에서 리전 1과 2의 VPC는 서로 연결할 수 없습니다.

 

Amazon VPC는 다음과 같은 기능 등을 포함하고 있습니다. 모든 내용은 Amazon 공식 홈페이지에서 확인할 수 있습니다.

  • 흐름 로그
  • IP 주소 관리자 (IP 주소 계획, 추적, 모니터링)
  • IP 주소 지정 (VPC의 리소스가 인터넷을 통해 서로 통신하고 리소스와 통신)
  • 보안 그룹 (EC2 인스턴스에 대한 방화벽 역할하도록 보안 그룹을 생성하여 인스턴스 수준에서 인바운드, 아웃바운드 트래픽 제어. 그룹을 지정하지 않은 경우, VPC의 기본 그룹에 자동 연결)
  • ...

Subnet

Subnet 정의

서브넷은 IP주소 공간의 부분 집합으로, 더 작은 네트워크 세그먼트를 나타냅니다. 대규모 네트워크를 관리하고 분할하는데 사용됩니다.

Amazon VPC에서의 Subnet

서브넷 다이어그램 예시

위 다이어그램에서는 한 리전에 있는 2개의 VPC를 보여줍니다. 각 VPC에는 퍼블릭 및 프라이빗 서브넷과 인터넷 게이트웨이가 있습니다. 다이어그램에 표시된 대로 필요에 따라 로컬 영역에 서브넷을 추가할 수 있습니다. 로컬 영역(AWS Local Zones)은 컴퓨팅, 스토리지 및 데이터베이스 서비스를 최종 사용자에게 더 가깝게 배치하는 AWS 인프라 배포입니다. 

정의

Amazon VPC에서의 서브넷 subnet은 VPC 내에서 IP 주소 범위를 분할한 네트워크 서브넷을 의미합니다. VPC 내에서 네트워크 리소스를 배치하고 통제하는 데 사용됩니다. 

 

서브넷은 VPC의 IP 주소 범위를 더 작은 서브넷으로 분할하는 방법입니다. VPC의 IP 주소 범위를 서브넷으로 분할함으로써, 더 작은 네트워크 세그먼트를 생성하고 서브넷 간에 트래픽을 분리할 수 있습니다. 각 서브넷은 고유한 IP 주소 범위를 가지며, AWS 리전 내에서 한 개 이상의 가용 영역에 배치될 수 있습니다.

 

서브넷은 다음과 같은 목적으로 사용됩니다.

  1. IP 주소 관리: 서브넷을 사용하여 VPC의 IP 주소 범위를 분할하여 IP 주소를 효율적으로 관리할 수 있습니다.
  2. 가용 영역 분리: VPC의 각 서브넷은 한 개 이상의 가용 영역에 배치될 수 있습니다. 서브넷은 가용 영역 간에 독립적으로 운영되며, 한 가용 영역에서 장애가 발생하더라도 다른 가용 영역의 서브넷은 정상적으로 동작할 수 있습니다.
  3. 보안 그룹 및 네트워크 ACL 적용: 서브넷은 보안 그룹 및 네트워크 액세스 제어 목록과 연결될 수 있습니다. 이를 통해 서브넷 간의 트래픽을 제어하고 보안 정책을 적용할 수 있습니다.

서브넷 라우팅

각 서브넷은 서브넷 외부로 나가는 아웃바운드 트래픽에 대해 허용된 경로를 지정하는 라우팅 테이블이 연결되어 있어야 합니다. 생성된 각 서브넷은 자동으로 VPC의 기본 라우팅 테이블에 연결됩니다.

서브넷 유형

서브넷 유형은 서브넷에 대한 라우팅을 구성하는 방법에 따라 결정됩니다.

  • 퍼블릭 서브넷: 서브넷에 인터넷 게이트웨이로 직접 연결되는 경로가 있습니다. 퍼블릭 서브넷의 리소스는 퍼블릭 인터넷에 액세스할 수 있습니다.
  • 프라이빗 서브넷: 서브넷에 인터넷 게이트웨이로 직접 연결되는 경로가 없습니다. 프라이빗 서브넷의 리소스에는 퍼블릭 인터넷에 액세스하기 위해 NAT 디바이스가 필요합니다.
  • VPN 전용 서브넷: 서브넷에 가상 프라이빗 게이트웨이를 통해 Site-to-Site VPN으로 연결되는 경로가 있습니다. 서브넷에는 인터넷 게이트웨이에 대한 경로가 없습니다.
  • 격리된 서브넷: 서브넷에 VPC 외부 대상에 대한 경로가 없습니다. 격리된 서브넷의 리소스는 동일한 VPC의 다른 리소스와만 서로 액세스할 수 있습니다.

서브넷 보안

보안 그룹은 EC2 인스턴스와 같은 관련 리소스에 대한 인바운드 및 아웃바운드 트래핏을 허용합니다. 네트워크 ACL은 서브넷 수준에서 인바운드 및 아웃바운드 트래픽을 허용하거나 제어합니다. 대부분의 경우 보안 그룹은 사용자의 요구사항을 충족시키지만, 추가 보안 계층을 원하는 경우 네트워크 ACL을 사용할 수 있습니다.

 

각 서브넷에는 네트워크 ACL이 연결되어 있어야 합니다. 생성하는 모든 서브넷은 VPC의 기본 네트워크 ACL과 자동으로 연결됩니다. 기본 네트워크 ACL은 인바운드와 아웃바운드 트래픽을 모두 허용합니다.

Routing Table

라우팅 테이블에는 서브넷 또는 게이트웨이의 네트워크 트래픽이 전송되는 위치를 결정하는 라우팅이라는 규칙 세트가 포함되어 있습니다.

  • 기본 라우팅 테이블: VPC와 함께 자동으로 제공되는 라우팅 테이블. 다른 라우팅 테이블과 명시적으로 연결되지 않은 모든 서브넷의 라우팅을 제어함.
  • 사용자 지정 라우팅 테이블: VPC에 대해 생성하는 라우팅 테이블
  • Destination: 트래픽을 이동할 대상의 IP 주소(대상 CIDR)의 범위
  • Target: 대상 트래픽을 전송할 때 사용할 게이트웨이, 네트워크 인터페이스
  • 라우팅 테이블 연결 (Route table association): 라우팅 테이블과 서브넷, 인터넷 게이트웨이 또는 가상 프라이빗 게이트웨이 간의 연결
  • 서브넷 라우팅 테이블: 서브넷과 연결된 라우팅 테이블
  • 로컬 라우팅: VPC 내 통신을 위한 기본 라우팅
  • ... 다양한 개념을 포함하고 있습니다. 모든 개념은 AWS 공식 홈페이지에서 확인할 수 있습니다.

모든 라우팅 테이블은 VPC 내부 통신을 위한 로컬 라우팅이 포함되어 있습니다. 

Internet Gateway 

공식 문서 링크

 

인터넷 게이트웨이는 수평 확장되고 가용성이 높은 중복 VPC 구성 요소로, VPC와 인터넷 간에 통신할 수 있게 해줍니다. IPv4 트래픽 및 IPv6 트래픽을 지원합니다. 리소스에 퍼블릭 주소가 있는 경우 인터넷 게이트웨이를 사용하면 퍼블릭 서브넷의 리소스가 인터넷에 연결할 수 있습니다. 인터넷 게이트웨이는 VPC 라우팅 테이블에서 인터넷 라우팅 가능 트래픽에 대한 대상을 제공합니다.

인터넷 액세스 활성화

  1. 인터넷 게이트웨이를 생성하여 VPC에 연결
  2. 인터넷 바인딩된 트래픽을 인터넷 게이트웨이로 전달하는 라우팅을 서브넷의 라우팅 테이블에 추가
  3. 서브넷의 인스턴스에 퍼블릭 주소가 있는지 확인
  4. 네트워크 액세스 제어 목록 및 보안 그룹 규칙에서 원하는 인터넷 트래픽이 인스턴스로, 그리고 인스턴스에서 흐르도록 허용되는지 확인

프라이빗 & 퍼블릭 서브넷

서브넷이 인터넷 게이트웨이로 향하는 라우팅이 있는 라우팅 테이블과 연결되는 경우, 이를 퍼블릭 서브넷이라고 합니다. 그렇지 않은 서브넷을 프라이빗 서브넷이라고 합니다.

IP 주소 및 NAT

IPv4 인터넷 통신이 가능하게 하려면, 인스턴스에 퍼블릭 IPv4 주소가 있어야 합니다. 인스턴스에 퍼블릭 IPv4 주소를 자동할당하도록 인스턴스에 탄력적 IP주소를 할당하도록 VPC를 구성할 수 있습니다. 사용자의 인스턴스는 VPC 및 서브넷 내부에서 정의된 프라이빗 IP 주소 공간만 인식합니다. 인터넷 게이트웨이는 사용자의 인스턴스를 대신하여 논리적으로 일대일 NAT를 제공하므로, 트래픽이 VPC 서브넷을 떠나 인터넷으로 이동할 때 회신 주소 필드는 프라이빗 IP 주소가 아니라, 인스턴스의 퍼블릭 IPv4 주소 또는 탄력적 IP 주소로 설정됩니다. 

 

기본 VPC와 기본이 아닌 VPC에 대한 인터넷 액세스는 아래 표에서 확인할 수 있습니다.

 

Regions

AWS는 각 리전마다 격리되도록 설계되어 있습니다. 리전이란 seoul, us-east과 같이 AWS에서 제공하는 클라우드 서비스를 호스팅하는 지역적인 데이터 센터 그룹을 말합니다. AWS는 전 세계에 여러 개의 지역에 데이터 센터를 구축하여 서비스를 제공하고 있습니다. 각 지역은 물리적으로 독립적이며, 고가용성과 내구성을 제공하기 위해 서로 다른 위치에 분산되어 있습니다.

 

각 Region은 하나 이상의 가용 영역(Availability Zone, AZ)으로 구성됩니다. 가용 영역은 독립된 데이터 센터로 구성되어 있으며, 고객의 애플리케이션 및 데이터의 가용성과 내구성을 위해 물리적으로 분리되어 있습니다. 각 AZ은 고유한 식별자("us-east-1a", "eu-west-2b")를 가지며, 서로 다른 가용 영역간에는 격리된 전원, 네트워크 및 시설 인프라가 제공됩니다.

Availability Zones

각 리전마가용 영역 Availability Zone은 하나의 Region 내에서 고가용성과 내구성을 제공하는 단위입니다. 가용 영역은 독립적인 전원, 네트워크 및 물리적 구조를 가지며, 다양한 AWS 서비스(EC2, RDS 등)를 호스팅하고 사용자가 이를 활용할 수 있도록 합니다. 

CIDR (Class Inter-Domain Routing)

CIDR는 Classless Inter-Domain Routing의 약자로, 클래스를 사용하지 않고 도메인간 라우팅을 하는 기법을 의미합니다.

CIDR는 프리픽스를 사용하여 IP주소의 네트워크 영역과 호스트 영역을 나누는 주소 체계입니다.

 

CIDR 기법이 도입되기 전엔, 아래 그림과 같이 앞선 비트 (시작 위치의 비트)에 따라 클래스가 나뉘어져 각 클래스에 맞게 네트워크 영역과 호스트 영역을 구분하는 방법인 네트워크 클래스 기법을 사용했습니다.

그러나, CIDR는 클래스를 사용하지 않음으로써 작은 네트워크에 대해서도 큰 주소 블록을 할당해주어야 한다는 네트워크 클래스 주소 할당 기법의 단점을 해결할 수 있었습니다. 대신, 프리픽스 (접두어)를 사용하여 IP의 네트워크 영역과 호스트 영역을 구분합니다. 이때 서브넷 마스크는 CIDR주소에서 클래시 뒤의 숫자 (프리픽스 길이)를 서브넷 마스크로 변환할 수 있습니다.

 

예시를 들자면, 172.30.1.35/24 와 같은 주소는 CIDR 주소 체계를 사용하여 얻은 것입니다. 

References

반응형