VPC란?? Virtual Private Cloud의 모든 것

VPC (Virtual Private Cloud)란??

독립적인 가상의 네트워크 공간으로 사용자의 설정에 따라 자유롭게 구성할 수 있는 공간을 의미합니다.

우리가 AWS의 EC2 인스턴스를 생성할 때를 다시한번 생각해볼까요? 아무렇지 않게 아래 그림과 같이 VPC가 default 설정 되어있는 채로 인스턴스를 생성합니다.

 

 

EC2 인스턴스 시작 과정 중 VPC 설정

하지만, 우리는 VPC와 서브넷을 선택하여 EC2 인스턴스를 생성할 수 있습니다. 그렇다면 왜 VPC 구성을 해야할까요??

 

Vitual Private Cloud(VPC)

위 그림과 같이 VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결됩니다.

 

VPC를 적용하면 위 그림과 같이 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있습니다. 또한 각각의 VPC는 완전히 독립된 네트워크처럼 동작합니다.

AWS 사용자는 자기가 원하는대로 IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성등 가상 네트워크 환경을 구성해 VPC를 생성할 수 있습니다.

 

VPC 구축하기

VPC는 각 Region에 종속되며 RFC1918이라는 사설 아이피 대역에 맞추어 구축해야 합니다.

VPC에서 사용하는 사설 IP 대역은 아래와 같습니다.

 

10.0.0.0 ~ 10.255.255.255 (10/8 prefix)

172.16.0.0 ~ 172.31.255.255 (172.16/12 prefix)

192.168.0.0 ~ 192.168.255.255 (192.168/16 prefix)

 

AWS VPC는 On-premise와 동일한 대역의 사설 IP를 이용해 범위 내에서 VPC의 ipv4 CIDR 영역을 설정합니다.

각각의 VPC는 완전히 독립적이기 때문에 만약 VPC간 통신을 원한다면 VPC 피어링 서비스를 고려해볼 수 있습니다.

 

서브넷

VPC의 IP 주소 범위

서브넷은 단일 가용 영역에 상주해야 합니다. VPC가 논리적인 범위를 의미한다면, 서브넷은 VPC안에서 실제로 리소스가 생성될 수 있는 네트워크 영역입니다.서브넷을 추가한 후 VPC 안에 AWS 리소스를 배포할 수 있습니다.

서브넷은 VPC를 잘개 쪼개는 과정입니다. 서브넷은 VPC 안에 존재하기 때문에 더 작은 단위입니다. 즉, 서브넷마스크가 더 높게 되고 IP범위가 더 작은 값을 갖게 됩니다.

 

서브넷을 나누는 이유??

그렇다면, VPC안에서 서브넷으로 나누는 이유는 무엇일까요?? 그 이유는 더 많은 네트워크 망을 만들기 위해서입니다.

172.31.0.0/16의 VPC 안에 VPC를 쪼개서 서브넷을 만든다면 아래와 같습니다.

서브넷 A 172.31.0.0/20
서브넷 B  172.31.16.0/20
서브넷 C  172.31.32.0/20
서브넷 D  172.31.48.0/20

 

주의

AWS는 관리용으로 사용하는 IP가 존재합니다. 아래는 AWS의 관리 IP로서 사용자가 사용할 수 없는 AWS의 예약 주소이니 참고하면 좋을 것 같습니다.

172.31.0.0  네트워크 주소
172.31.0.1  AWS에서 VPC 라우터용으로 예약 (Default Gateway)
172.31.0.2  DNS 서버 주소 (기본 VPC 네트워크 범위에 2를 더한 주소)
172.31.0.3  AWS에서 앞으로 사용하려고 예약한 주소
172.31.0.255  네트워크 BroadCast 주소

 

마치며

AWS 서비스는 VPC를 구성함으로써 이러한 기능을 활용하여 AWS 인프라 내에서 실행되는 리소스에 대한 네트워크 격리, 보안 및 유연성을 보장합니다. VPC는 일반적으로 보안을 위해 AWS 리소스를 위한 가상 네트워크 공간을 제공하여 다른 고객의 리소스와 공용 인터넷과 분리합니다. 또한 VPC를 통해 그룹별로 네트워크를 구성하기 위해 많이 사용합니다.

'CS > 인프라' 카테고리의 다른 글

가상화와 하이퍼 바이저  (0) 2023.08.19
IaaS VS PaaS VS SaaS  (2) 2023.03.30
컨테이너와 가상머신의 차이점 with Docker  (2) 2023.01.26
JenKins 개념 및 기능  (0) 2023.01.12