[AWS] VPC(Virtual Private Cloud) 사용하기

반응형

이번 글에서는 AWS의 VPC 개념에 대해 이해하고, 서비스에 적용해보도록 하겠습니다.

0. VPC(Virtual Private Cloud)란?

AWS 계정 전용 가상 네트워크입니다.

VPC는 AWS 클라우드에서 다른 가상 네트워크와 '논리적'으로 분리되어 있습니다. EC2 인스턴스와 같은 AWS 리소스를 VPC에서 실행할 수 있습니다.

사용자는 용도에 따라 VPC를 생성할 수도 있고, VPC 안에는 여러 서브넷을 추가할 수 있습니다. 서브넷을 여러 개로 나누면 네트워크를 격리할 수 있으며, 각 서브넷 간에 접근제어(ACL)를 설정할 수 있습니다.

예를 들어 인터넷에 접근해야 하는 웹 서버는 공개 서브넷(Public Subnet)에 만들고, 외부 접근이 필요 없는 데이터베이스 서버는 사설 서브넷(Private Subnet)으로 만들 수 있습니다.

VPC와 서브넷은 'CIDR 표기법'으로 IP 대역을 설정합니다.

자세한 내용은 아래의 책을 참고하시길 바랍니다.

 

아마존 웹 서비스를 다루는 기술:실무에서 알아야 할 기술은 따로 있다!

COUPANG

www.coupang.com

1. CIDR 표기법이란?

CIDR의 사전적 정의는 다음과 같습니다.

CIDR 은 클래스 없는 도메인 간 라우팅 기법으로 1993년 도입되기 시작한, 최신의 IP 주소 할당 방법이다. 사이더는 기존의 IP 주소 할당 방식이었던 네트워크 클래스를 대체하였다. 사이더는 IP 주소의 영역을 여러 네트워크 영역으로 나눌 때 기존방식에 비해 유연성을 더해준다.

😅 이해가 되질 않습니다.. https://gompro.postype.com/post/2491387#responses 이 블로그의 내용을 참고 해 다시 해석해보겠습니다.

먼저 IP에 대해 이해할 필요가 있습니다.

IP란 "네트워크를 이용하는 여러 기기(컴퓨터, 스마트폰 등)들 간에 서로를 구별하기 위해 부여되는 식별자-아이디"라고 할 수 있습니다. 이러한 IP는 Public IP와 Private IP로 구분됩니다. 우리가 쉽게 접하는 123.456.789.001 형식이 기존의 IP주소 할당방식 입니다.

예를들어 기존의 IP 주소할당 방식이 아래와 같이 하나씩 각각 IP주소를 할당했다고 한다면

image.png

CIDR 은 여러 IP가 모인 거대한 블락을 여러 네트워크로 나누는 서브네팅(Subnetting)을 통해 작은 블락으로 나눠 IP주소들을 할당합니다. (ex 123.456.789.123/24)

image.png

특정 대역의 IP 주소 모음 (ex 123.456.789.001 ~ 123.456.789.254)은 너네가 사용해! 라고 이해하시면 될 것 같습니다.

좀더 깊게 들어가보겠습니다.

130.211.0.0/16 는 CIDR 표기법으로 작성한 IP 대역입니다. 앞서 CIDR은 IP 주소모음이라고 했습니다. 결론을 먼저 말씀드리면 130.211.0.0/16은 총 65534개의 IP주소의 모음을 표현한 것입니다.

그러면 위의 CIDR 표기법을 어떻게 해석해야 될까요?

CIDR 표기법은 네트워크 접두어(Network Prefix)와 호스트 구분자(Host Identifier)로 구성되어있습니다. 여기서 '/16'는 위의 '130.211.0.0'을 이진법으로 변환하였을때 어느 정도의 비트를 네트워크 접두어(Network Prefix)에 할당할 것인가를 의미합니다.

130.211.0.0을 이진법으로 변경하면 아래와 같습니다.

10000010.11010011.00000000.00000000

'/16' 이므로 왼쪽부터 16개의 비트(1000010.11010011)는 네트워크 접두어(Network Prefix)가 되고 호스트 구별자(Host Identifier)는 (00000000.00000001 ~ 11111111.11111110)가 됩니다. 호스트 구별자의 가장 첫번째 값(00000000.00000000)과 마지막 값(11111111.11111111)은 제외합니다.

따라서 130.211.0.0/16은 65534개의 IP주소 모음으로 해석할 수 있습니다. 즉 '/' 뒤에 오는 숫자의 크기에 따라서 호스트의 갯수가 크고 작아지게 됩니다.

2. 서브네팅(Subnetting)이란?

이번에는 위의 CIDR을 서브네팅(Subnetting)을 통해 각각의 블락으로 나눠보겠습니다.

서브넷을 계산할 떄는 넷마스크라는 것을 사용하는데 넷마스크란 /뒤에 오는 숫자만큼의 비트를 왼쪽에서부터 1로 채우고 나머지는 0으로 채운 값입니다. 130.211.0.0/16의 넷마스크는 다음과 같습니다.

11111111.11111111.00000000.00000000

이제 위의 넷마스크를 사용해 4개의 영역으로 나눠보겠습니다. 4개의 영역으로 나누기 위해선 2개의 비트만 더 사용하면 됩니다. 2개의 비트에서 나올 수 있는 조합은 4개 (00, 01, 10, 11)이므로 가능한 서브넷의 넷마스크는 다음과 같습니다.

• 11111111.11111111.00000000.00000000
• 11111111.11111111.01000000.00000000
• 11111111.11111111.10000000.00000000
• 11111111.11111111.11000000.00000000

결론적으로 130.211.0.0/16의 CIDR을 4개의 블락으로 나누려면 130.211.0.0/18로 조정해 2개의 비트를 더 사용하면됩니다.

위의 경우 각 서브넷 별로 사용가능한 호스트의 수는 16382(000000.00000001 ~ 111111.11111110)개가 됩니다. 이를 통해 CIDR을 총 4개의 영역으로 나눌 수 있습니다.

이렇게 나눈 서브넷 블락들은 블락별로 퍼플릭/프라이빗으로 나눠 사용할 수 있습니다.

130.211.0.0/18 -> 서브넷 A (인터넷 게이트웨이와 연결)

130.211.64.0/18 -> 서브넷 B (RDS mysql 디비에 사용)

130.211.128.0/18 -> 서브넷 C (RDS mysql 디비에 사용)

130.211.192.0/18 -> 서브넷 D (EC2에 사용)

3. VPC 생성하기

자 이제 AWS에서 VPC를 생성해보겠습니다.

VPCYour VPCs 탭의 Create VPC 버튼을 클릭합니다.

image.png

VPC의 이름을 입력하고 사용할 IP 블락을 CIDR 표기법으로 입력합니다. 저는 192.168.0.0/16을 입력했습니다. 생성버튼을 클릭합니다. (192.168.0.0 ~ 192.168.255.255를 사용하게됩니다.)

image.png

아래와 같이 VPC가 생성되었습니다.

image.png

VPC에 서브넷을 추가해보겠습니다.

Subnets 탭의 Create Subnet 버튼을 클릭합니다.

image.png

서브넷 이름을 입력하고, 서브넷팅을 할 VPC를 선택합니다. 이후 가용영역과 CIDR Block을 입력합니다. 서브넷의 IP대역은 VPC에서 설정한 IP 대역 안에 있어야 합니다. 또한 이전에 생성한 서브넷 대역과 IP대역이 겹치지 않아야 합니다. 저는 192.168.0.0/20을 입력했습니다.

VPC는 리전별로, 서브넷은 가용영역(Availability Zone)별로 생성합니다.

image.png

아래와 같이 서브넷이 생성되었습니다.

image.png

이제 새로 생성하는 EC2 인스턴스에서 VPC와 서브넷을 선택할 수 있습니다.

4. Gateway 연결하기

VPC에 속한 서브넷에서 외부 인터넷에 접속하려면 인터넷 게이트웨이가 필요합니다.

Internet Gateways 탭의 Create internet gateway 버튼을 클릭합니다.

image.png

생성할 이름을 입력하고 생성버튼을 클릭합니다.

image.png

아래와 같이 게이트웨이가 생성되었습니다. 이제 이 게이트웨이를 앞서 생성한 VPC에 붙여보겠습니다.

image.png

생성된 게이트웨이를 선택 후 우클릭해 Attach to VPC를 선택합니다.

image.png

앞서 생성한 VPC를 선택하고 Attach 버튼을 클릭합니다.

image.png

이제 VPC에서 생성한 EC2 인스턴스는 외부 인터넷에 접속할 수 있습니다.

5. 결론

서비스별 상황에 맞는 네트워크를 구성하고 싶다면?
-> VPC를 사용하자.


파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY