본문 바로가기

DevOps/AWS

Amazo VPC란 무엇일까?

Amazon VPC는 AWS 사용자 전용 가상 네트워크입니다. 가상 네트워크가 무엇인지 자세히 알아보겠습니다.

1. VPC(Virtual Private Cloud)란?

아마존 VPC의 공식 웹페이지에서는 VPC를 다음과 같이 소개합니다.

 💡 Virtual Private Cloud (VPC)는 사용자의 AWS 계정 전용 가상 네트워크입니다. VPC는 AWS 클라우드에서 다른 가상 네트워크와 논리적으로 분리되어 있습니다. Amazon EC2 인스턴스 같은 AWS 리소스를 VPC에서 실행할 수 있습니다. IP 주소 범위와 VPC 범위를 설정하고 서브넷을 추가하고 보안 그룹을 연결한 다음 라우팅 테이블을 구성합니다.

이 소개에서 ‘논리적으로 분리되어 있습니다’라는 말에 주목해주세요. AWS는 기본적으로 다양한 고객들이 공용으로 EC2 인스턴스와 RDS 데이터베이스 등 리소스를 생성하고 사용하는 환경입니다.

클라우드 위에서 생성되는 리소스들은 네트워크를 통해 접근이 가능합니다. 이때 VPC는 AWS 하나의 계정에서 생성하는 리소스들만 격리된 환경을 만들어주는 기능입니다.

 

VPC의 주요 특징

  • Amazon VPC 자체 IP 주소 범위, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 선택 등 가상 네트워킹 환경을 제어할 수 있습니다. 또한 VPC에서 IPv4와 IPv6을 모두 사용하여 리소스와 애플리케이션에 안전하게 이용할 수 있습니다.
  • 보안 그룹 및 네트워크 제어 목록을 포함한 다중 보안 계층을 활용하여 각 서브넷에서 EC2 인스턴스에 대한 액세스를 제어할 수 있습니다.

 

2. VPC의 구성요소

2-1. 프라이빗 IP 주소, 퍼블릭 IP 주소, 탄성 IP 주소

  • 프라이빗(Private) IP 주소 : 인터넷을 통해 연결할 수 없는, VPC 내부에서만 사용할 수 있는 IP 주소입니다. 프라이빗 IP는 VPC에서 시작된 인스턴스 서브넷의 범위에서 자동 할당되며, 동일 네트워크에서 인스턴스 간 통신에 사용할 수 있습니다.
  • 퍼블릭(Public) IP 주소 : 인터넷을 통해 연결할 수 있는 IP 주소입니다. EC2 생성 시 옵션으로 퍼블릭 IP 주소 사용 여부를 선택할 수 있습니다. 인스턴스가 재부팅되면 새로운 퍼블릭 IP 주소가 할당됩니다.
  • 탄성(Elastic) IP 주소 : 동적 컴퓨팅을 위해 고안된 고정 퍼블릭 IP 주소입니다. VPC의 모든 인스턴스와 네트워크 인터페이스에 탄성 IP를 할당할 수 있으며, 다른 인스턴스에 주소를 신속하게 다시 매칭 하여 인스턴스 장애 조치를 수행할 수도 있습니다. 탄력적 IP 주소의 효율적인 활용을 위해 탄력적 IP 주소가 실행 중인 인스턴스와 연결돼있지 않거나, 중지된 인스턴스 또는 분리된 네트워크 인터페이스와 연결된 경우 시간당 과금이 발생합니다.

 

2-2. VPC와 서브넷

  • VPC는 사용자의 AWS 계정을 위한 전용의 가상 네트워크를 말합니다. Amazon EC2 인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있습니다.
  • VPC 내부의 네트워크에서도 서비스 목적에 따라 IP Block으로 나눌 수 있는데, 이렇게 분리된 IP Block의 모음을 서브넷(Subnet)이라고 합니다.
  • VPC는 리전(Region)의 모든 가용 영역(Availabliliy Zone)에 적용되며, 각 가용 영역에 하나 이상의 서브넷을 추가할 수 있습니다. 하지만 서브넷은 단일 가용 영역에서만 생성할 수 있으며, 여러 가용 영역으로 확장할 수 없습니다.

 

2-3. VPC와 서브넷 사이즈

  • VPC를 생성할 때 VPC에서 사용하게 될 IP 주소의 범위를 지정하게 되는데 범위를 CIDR 블록 형태로 지정해야 합니다.
  • VPC를 생성하는 경우 10.0.0.0/24로 VPC를 생성하게 되면 256개의 IP 주소를 지원하게 되며, CIDR 블록을 각각 128개의 IP 주소를 지원하는 2개의 서브넷으로 나눌 수 있습니다.
💡 CIDR 블록은 IP의 범위를 지정하는 방식입니다. CIDR 블록은 IP 주소와 슬래시(/) 뒤에 따라오는 넷마스크 숫자로 구성되어있습니다. 이 숫자는 IP 범위를 나타냅니다. 이 숫자가 32이면 앞에 기술된 IP 정확히 하나를 가리킵니다. 예를 들어 192.168.0.0/32는 192.168.0.0을 가리킵니다. 범위는 지정된 IP부터 2^(32-n) 개가 됩니다. 예를 들어 뒤의 숫자가 24라면, 2^(32-24)=256개의 IP 주소를 의미합니다. 예를 들어 192.168.0.0/24는 192.168.0.0에서 192.168.0.255까지의 IP를 의미합니다.

 

2-4. 퍼블릭 서브넷과 프라이빗 서브넷

  • 서브넷 네트워크 트래픽이 인터넷 게이트웨이로 라우팅이 되는 서브넷을 퍼블릭이라고 하며 인터넷 게이트웨이로 라우팅 되지 않은 서브넷을 프라이빗 서브넷으로 합니다.

 

2-5. 라우팅 테이블

  • 각 서브넷은 서브넷 외부로 나가는 아웃바운드 트래픽에 대한 허용된 경로를 지정하는 라우팅 테이블이 연결되어 있어야 합니다.
  • 생성된 서브넷은 자동으로 VPC의 기본 라우팅 테이블과 연결되며, 테이블의 내용을 변경할 수 있습니다.
  • 라우팅 테이블은 VPC의 서브넷 내에서 생성된 네트워크 패킷이 목적지 주소로 이동하기 위해 어떤 경로로 이동되어야 하는지 알려주는 나침반 역할을 합니다.

 

3. VPC의 주요 서비스

3-1. 보안 그룹과(Security Group) 네트워크 액세스 제어 목록(Network ACL)

  • VPC는 네트워크 통신과 트래픽에 대해 IP와 Port를 기준으로 통신을 허용하거나 차단하는 기능을 제공합니다. 이러한 서비스를 보안 그룹과 네트워크 ACL이라 합니다.
  • 보안 그룹과 네트워크 ACL 서비스에 대한 비교는 다음과 같습니다.

 

3-2. VPC 피어링 연결

  • 피어링 연결은 비공개적으로 두 VPC 간에 트래픽을 라우팅 할 수 있게 하기 위한 서로 다른 VPC 간의 네트워크 연결을 제공합니다.
  • VPC Peering을 통해 동일한 네트워크에 속한 것과 같이 서로 다른 VPC의 인스턴스 간에 통신이 가능합니다.

 

3-3. NAT(Network Address Translation) 게이트웨이

  • NAT은 외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서 내부 IP 주소를 외부 IP 주소로 변환하는 작업을 수행합니다.
  • 프라이빗 서브넷의 인스턴스가 VPC 외부의 서비스에 연결할 수 있지만 외부 서비스에서 이러한 인스턴스와의 연결을 시작할 수 없도록 NAT 게이트웨이를 사용할 수 있습니다.
  • 예를 들어 프라이빗 서브넷의 인스턴스가 외부 결제 시스템을 사용하는 경우, 다른 AWS 서비스에 데이터를 전달해야 하는 경우 NAT Gateway를 퍼블릭 서브넷에 두어 통신을 할 수 있습니다.

 

3-4. VPC Endpoint

  • 프라이빗 서브넷이 인터넷과 연결되어 있는 S3, DynamoDB에 연결을 도와줍니다.

 

3-5. VPN 연결

  • 일반적으로 Amazon VPC에서 서비스되는 인스턴스는 On-Premise에 있는 서버나 IDC 내의 시스템과 통신할 수 없습니다.
  • VPN 연결 옵션을 사용하여 Amazon VPC를 원격 네트워크 및 사용자에 연결할 수 있습니다.

 


Amazon VPC를 파고 파도 끝이 없는 듯 합니다..

다음에는 VPC를 실제로 생성해보겠습니다.

    •