프로그래밍/Infra

[AWS] Amazon Web Services - (4) Amazon VPC

Churnobyl 2023. 5. 4. 22:59
728x90
반응형

Chapter 05.  Amazon Virtual Private Cloud (Amazon VPC)

Amazon VPC

 

 Virtual Private Cloud(VPC) 즉, 가상 사설 클라우드는 개인 혹은 기관 만의 작은 가상 데이터 센터를 구축(내 나와바리 만들기)하는 것이라고 생각하면 쉽다. VPC가 없었던 시절, 우리가 EC2 인스턴스들을 만들면 우리도 모르는 아마존 서버 어딘가에 인스턴스들이 여기저기 퍼져 있었다고 한다. 즉 AWS를 이용하던 회사A의 인스턴스와 회사B의 인스턴스가 같은 네트워크를 사용하고 있었다는 말이다. 그러다 2009년 VPC 서비스를 출시하고 난 이후부터 회사A와 회사B가 서로 완전히 격리된 독자적인 네트워크 시스템을 사용할 수 있게 되었다. 현재는 EC2 인스턴스를 생성할 때 아래와 같이 VPC와 서브넷을 함께 꼭 설정해주어야 한다.

EC2 인스턴스 생성 화면 - Network settings

 

 우리만의 데이터센터인 VPC는 어떤 한 Region안에만 존재할 수 있다. 다만 필요에 따라 로컬 영역까지 확장할 수 있다. 그 Region에 속해 있는 각각의 AZ(Availability Zone)에 따라 사용할 IP주소 범위를 지정서브넷(Subnet)들을 설정하고 그 안에 EC2 인스턴스나 DB등을 모아놓을 수 있다.

한개의 VPC의 대략적인 구조

 VPC 그리고 그 안의 서브넷에 우리의 컴퓨터인 인스턴스를 위치시키는 게 완료되었다면 이제 가상 데이터 센터를 인터넷 등의 외부와 연결하기 위한 문이 필요한데 그게 VPC의 게이트웨이다. 게이트웨이는 VPC를 다른 네트워크와 연결하고자 할 때 사용하는 일종의 문이라고 생각하면 되는데 이를테면 인터넷 게이트웨이는 인터넷과 VPC를 연결하기 위한 가상의 라우터이다. VPC에는 인터넷 게이트웨이 뿐만 아니라 또 다른 VPC와 통신할 수 있는 게이트웨이나 IPSec AWS Site-to-Site VPN연결을 사용해 회사 내 물리적 사설망과 연결시킬 수 있는 기능들도 있다.

 

 

 


VPC의 기능

 

  • VPC
더보기

 회사가 운영하는 자체 데이터 센터의 네트워크와 유사하게 행동하는 가상 네트워크 시스템. 

 

  • 서브넷(Subnet)
더보기

 VPC가 위치한 리전 내의 각 AZ에 지정하는 소분화된 서버들의 묶음이다. 서브넷 단위로 IP주소 범위를 설정하고 보안이나 접속 포트를 따로 설정해 줄 수 있다. 또한 서브넷 IP주소 범위는 VPC로 지정한 IP주소 범위 내에서 설정해야 한다. 예를 들어 VPC의 IP주소 범위를 172.16.0.0/16으로 설정했다면, 서브넷의 IP주소 범위는 172.16.2.0/24처럼 설정해야 한다는 것이다.

 중요한 데이터들을 담고 있는 데이터베이스같이 외부로 유출되면 안되는 서버들의 경우에는 서브넷1처럼 VPC 내부에서만 사내IP처럼 이용할 수 있도록 할 수 있고, 외부와 통신해야 하는 인스턴스들에는 서브넷2처럼 해당 서브넷에만 통로를 열어줄 수 있다.

 

  • IP 주소 지정
더보기

 위의 서브넷 설명에서 언급했듯이 VPC라는 큰 IP 범위를 지정해주었다면 다시 서브넷 단위로 조금 더 작은 IP범위를 지정해주어야 한다. AWS에서는 IP주소를 표현하는 방식으로 CIDR(Classless Inter-Domain Routing, 사이더)라는 국제 표준 방식을 이용한다. 사이더는 A.B.C.D/N 형태로 구성되며 N은 0~32까지의 숫자로 이루어진다.

CIDR

 위 사진의 IP주소 10.10.1.32/27은 점을 기준으로 나눈 값을 각각 2진수 8bit로 나타냈을 때 총 32bit의 값으로 나타낼 수 있다. 그리고 슬래쉬('/') 뒤의 N값은 앞에서부터 N개의 숫자가 고정이라는 것을 나타낸다. 따라서 VPC의 IP범위를 위와 같이 설정해주었다면 고정값이 아닌 나머지 32bit-27bit = 5bit. 즉 32개의 IP주소를 가질 수 있게 된다. 하지만 보통 예시처럼 설정해주진 않고, 주로 VPC를 구성할 때는 주로 192.168.0.0/16처럼 더 큰 범위의 IP주소를 설정해주며, 이렇게 설정하면 총 65,536개의 IP주소를 가질 수 있다.

 VPC의 IP주소 범위를 선택할 때 또 한가지 고려해야 할 사항은 RFC 1918에 명시되어 있는 권고사항을 충족하는 것이다. 외부와 통신하기 위해 Public IP Address를 선택하는 것이 아니라 내부에서 통신하기 위한 Private IP Address를 선택하고자 하는 경우, 아래와 같은 RFC 1918 표준을 따를 것을 권고하고 있다.

RFC 1918 - Private Address Space

  이유는 뭐냐면 RFC 1918에서 지정해 놓은 내부용 IP 범위 이외의 IP를 설정하게 될 경우 외부의 public IP와 겹칠 수가 있다. 그런 일이 발생하게 되면 외부의 public IP로 접속하기 위해 IP주소를 입력해도 내부용 private IP로 혼동해 패킷이 밖으로 나가지 못하고 같은 주소를 가진 내부의 IP주소로 접속된다.

 

  • 라우트 테이블(Route Table)
더보기

 각 서브넷의 IP주소 범위 설정이 완료되었다면 이제 외부 인터넷과 연결할 수 있는 통로를 만들어야 한다. 이 통로가 라우트 테이블이다. 이 테이블들을 만들어서 어떤 서브넷은 외부와 통신할 수 있고, 어떤 서브넷은 외부와 절대 통신할 수 없도록 만들어 줄 수 있다. AWS에서 VPC를 만들면 기본 라우트 테이블이 같이 생성이 된다. 이 기본 라우트 테이블은 한 서브넷 안에 있는 인스턴스끼리 통신할 수 있도록 한다.

 

  • 인터넷 게이트웨이 (Internet Gateway)
더보기

인터넷 게이트웨이는 인터넷과 연결하기 위한 대문을 VPC에 만들어 준다. 만들어 준 인터넷 게이트웨이에다가 라우트 테이블에서 해당 인터넷 게이트웨이로 통로를 설정해 주면 이제 외부 인터넷과 통신할 수 있다.

 

  • Network ACLs(Network Access Control Lists): Stateless firewalls
더보기

서브넷 단위로 적용하는 stateless방식 방화벽

stateless방식 : VPC 내부로 들어오는 request의 상태를 기억하지 않음. 따라서 response를 보내주기 위해서는 다시 보내주는 포트를 열어주어야 함.

 

  • 보안 그룹(Security Groups)
더보기

인스턴스 단위로 적용하는 stateful방식 방화벽. Network ACLs와의 차이는 여기를 참조.

stateful방식 : VPC 내부로 들어오는 request의 포트 등 정보를 기억해 뒀다가 response를 보내줄 때 기억해 둔 정보를 이용해 반환

 

반응형

'프로그래밍 > Infra' 카테고리의 다른 글

[nginx] (2) nginx.conf  (0) 2024.06.30
[nginx] (1) nginx 그리고 기본 역할  (0) 2024.06.26
[AWS] Amazon Web Services - (3) EC2  (0) 2023.05.03
[AWS] Amazon Web Services - (2) IAM  (0) 2023.05.02
[AWS] Amazon Web Service - (1) AWS란?  (0) 2023.05.01