개발이 취미인 사람

[AWS] VPC 가상 사설망 개념 본문

백앤드(Back-End)/AWS

[AWS] VPC 가상 사설망 개념

RyanSin 2021. 3. 9. 13:52
반응형

- 개요

안녕하세요. 이번 시간에는 AWS VPC 서비스에 대해 알아보겠습니다.

 

VPC는 어떤 서비스일까요?

 

VPC는 Virtual Private Cloud = 한국어로 "가상 사설망"으로 해석이 가능합니다.

실제 사설망이 아닌 가상의 사설망을 제공하는 겁니다.

 

2011년 8월에 처음 릴리스 되었으며 현재는 AWS에서 제공되는 대부분의 서비스가 VPC에 의존적입니다.

VPC를 의식하지 않고도 AWS를 사용할 수 있지만, 그 뒤에는 아마존 웹 서비스에서 계정 생성 시 함께 생성되는 기본 VPC(Default VPC)를 사용합니다.

 

공식 홈페이지 자료

 

위 글에서 논리적으로 격리된 공간을 프로비저닝(provisioning)한다는 내용을 주목해야 합니다.

 

* 프로비저닝(provisioning) : 사용자의 요구에 맞게 시스템 자원을 할당, 배치, 배포해 두었다가 필요시 시스템을 즉시 사용할 수 있는 상태로 미리 준비해 두는 것을 말합니다.

 

여기서 우리는 VPC가 왜 중요한지 알아야 합니다.

 

실제 아마존 웹 서비스는 각 나라마다 영역을 나누고, 나눠진 영역에서 여러 고객들이 "공용 환경"을 사용합니다.

 

Ex) 대한민국이라는 지역에서 EC2 인스턴스나 RDS 데이터베이스를 비롯한 다양한 서비스들을 생성해서 사용한다

 

여기서 하나의 계정에서 EC2와 RDS 서비스들만의 격리된 네트워크를 만들어 주는 기능이 바로 VPC이다.

 

VPC를 사용하면 특정 사용자의 리소스들이 논리적으로 격리된 네트워크에서 생성되기 때문에 다른 사람들이 접근하는 것이 불가능하다.

 

- 기본구조

하나의 계정을 생성하면 지역마다 VPC의 기본 구성요소들이 생성된다.

 

  1. 1 VPC(1 = Default VPC)
  2. N 서브넷(N = 사용할 수 있는 가용 존의 개수)
  3. 1 라우트 테이블 (Route Table)
  4. 1 네트워크 ACL(Network ACL)
  5. 1 시큐리티 그룹(Security Group)
  6. 1 인터넷 게이트웨이(Internet Gateway)
  7. DHCP 옵션 셋(DHCP options set)

위와 같은 기본구조가 생성되며 아래 이미 와 같은 형태를 취할 수 있다.

 

- 상세 설명

VPC : VPC(Virtual Private Cloud) 가장 기본이 되는 가상 사설망

IP 범위는 CIDR(Classless Inter-Domain Routing) 방식을 사용해서 범위를 지정한다.

 

CIDR 블록은 IP 주소와 슬래시(/) 뒤에 따라오는 넷마스크 숫자로 구성된다.

Ex) 192.168.0.0/24라면 192.168.0.0을 가리킨다.

 

범위는 지정된 IP부터 2^(32-n) 개가 된다.

Ex) 192.168.0.0/24 라면 2^(32-24) = 256개의 IP 주소를 의미한다.

 

크기 : 하나의 VPC의 최대 크기는 16이다. 이경우 2^(32-16) = 65536개의 IP를 사용할 수 있다.(이보다 큰 VPC는 생성할 수 없다.)

 

SubNet : 실제로 리소스가 생성되는 무리적인 공간인 가용 존(Available Zone)과 연결된다.

VPC가 논리적인 범위를 의미한다면, 서브넷은 VPC안에서 실제로 리소스가 생성될 수 있는 네트워크 영역이라고 생각할 수 있다.

하나의 VPC는 N개의 서브넷을 가질 수 있다.

 

서브넷의 넷마스크 범위는 16(65536) ~ 28(16)을 사용할 수 있으며, VPC CIDR 블록 범위에 속하는 CIDR 블록을 지정할 수 있다.

 

리젠에 따라서 사용 가능한 가용 존의 개수는 다르다.

Route Table : SubNet에서 요청과 응답을 관리하는 라우터

서브넷에서 네트워크를 이용할 때는 이 라우트 테이블을 사용해서 목적지를 찾게 된다.

라우트 테이블은 서브넷과 연결되어 있지만 VPC를 생성할 때 만들어지고 VPC에도 연결되어 있다.

 

하나의 라우트 테이블은 VPC에 속한 다수의 서브넷에서 사용할 수 있다. 자동 생성되는 라우트 테이블에는 한 가지 룰만이 정의된다.

 

Network ACL / Security Group : 접근 제어 관리

Network ACL은 주고(OutBound) 받는(InBound) 트래픽을 제어하는 가상 방화벽입니다.

하나의 네트워크 ACL은 다수의 서브넷에서 재사용할 수 있습니다.

 

Security Group은 EC2 인스턴스와 같은 서비스 앞단에서 트랙픽을 제어하는 가상 방화벽입니다.

 

* Network ACL은 서브넷 앞단에서 트래픽을 제어한다면, Security Group은 EC2 인스턴스와 같은 서비스 앞단에서 트래픽을 제어한다.

Internet Gateway : VPC에서 요청과 응답을 관리하는 라우터

VPC는 기본적으로 격리된 네트워크 환경이다. 따라서 VPC에서 생성된 리소스들은 기본적으로 인터넷을 사용할 수 없다.

인터넷을 연결하기 위해서는 인터넷 게이트웨이가 필요함!!

 

라우팅 테이블에 인터넷 게이트웨이를 향하는 적절한 규칙을 추가해주면 특정 SubNet이 인터넷과 연결된다.

하지만 SubNet과 Internet Gatway를 연결하는 것 만으로는 인터넷을 사용할 수 없다.

 

인터넷을 사용하고자 하는 리소스는 Public IP를 가지고 있어야 한다.

DHCP Options Set : TCP/IP 네트워크 상의 호스트로 설정 정보를 전달하는 DHCP 표준

이 기능을 사용하면 도메인 네임 서버, 도메인 네임, NTP 서버, NetBIOS 서버 등의 정보를 설정할 수 있습니다.

 

일반적으로 VPC 생성 시 만들어지는 DHCP Options Set을 그대로 사용합니다.

 

 

이번 시간에는 AWS VPC에 대해 알아봤습니다.

 

실제 서비스에서 통신망을 나눠서 관리하는 부분을 직접 구현하게 되면 정말 어렵고 귀찮은 일이지만 AWS를 사용한다면 이런 서비스를 활용해서 가상망을 나눌 수 있어 편리합니다. :)

 

다음 시간에는 직접 설정하는 방법에 대해 알아보겠습니다. :)