AWS VPC(Virtual Private Cloud) 1탄.

앙금빵·2021년 5월 9일
1

AWS Compute Service

목록 보기
3/9
post-thumbnail

1. VPC 개요

VPC 서비스는 2011년 8월에 처음 Release가 되었으며 현재 AWS에서 제공되는 대부분의 서비스가 VPC에 의존적이다. 그만큼 VPC는 AWS에서 가장 중요한 서비스중 하나이며 AWS 서비스를 한다면 반드시 짚고 넘거가야할 개념이다.

VPC 서비스가 탄생하게 된 이유를 알아보자.

EC2 Classic

  • 과거 EC2-Classic 네트워크 환경은 다른 사람들과 함께 사용하는 공용 공간이였다.

  • AWS 클라우드를 사용하는 굉장히 많은 고객들의 인스턴스가 랜덤하게 위치되어 있다.

  • 만약 여러 인스턴스들을 이용중에 있는 고객이면 System 복잡도는 더욱 올라가고 새로운 인스턴스를 추가를 할 때 모든 인스턴스에 대한 라우팅 정보를 변경을 해야 했었다.

  • AWS에서 VPC 서비스를 출시로 같은 네트워크 선상에서 독립적으로 네트워크를 구성할 수 있게 되었으며 이는 마치 가상의 데이터 센터를 사용할 수 있도록 하였다.

  • 과거에 EC2 클래식과 EC2-VPC 네트워크 환경을 선택해서 사용할 수 있었으나, 2013.12.04 이후 생성된 AWS 계정에서는 EC2-Classic 네트워크 환경을 더 이상 이용할 수 없다.

With VPC

  • 사용자가 EC2 인스턴스 하나를 만들기 위해 사용자가 직접 네트워크 환경을 직접 구축해야 한다면 불편하고 복잡하다. → 이에, AWS에서는 AWS 계정을 생성할 때 리전별로 기본 VPC를 함께 생성해 준다.
  1. 기본 VPC를 사용하면 아마존 VPC를 크게 의식하지 않더라도, EC2-Classic Network를 사용하듯이 쉽게 AWS에서 제공하는 서비스들을 이용할 수 있다.
  2. 기본 VPC를 사용하더라도 EC2-Classic과 달리 격리된 네트워크 환경의 장점을 누릴 수 있다.

2. Virtual Private Cloud(VPC) 정의

Amazon Virtual Private Cloud(VPC)를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을

프로비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있다.

  • Public Cloud 환경 위에서 Private Cloud Computing environment 제공.
  • 높은 수준까지 구성할 수 있는 네트워크 환경이며 EC2나 RDS 인스턴스를 호스팅하기 위해 설계
  • InBound 및 OutBound Network Access나 Instance간 Network Access를 세밀하게 제어
  • 논리적으로 격리된 공간을 Provisioning 하기에 다른 사람들은 접근하는 것은 물론 보는 것도 불가능

3. VPC 구성요소

  • 서브넷
  • IGW(Internet Gateway)
  • NAT

3.1.1 서브넷

  • 클래스 단위로 분류를 하게 되면 적절한 네트워크의 크기로 구분할 수 없다.
    따라서 서브넷으로 분할하여 사용한다.
  • 서브넷(Subnet)이라는 것은 하나의 네트워크가 분할되어 나눠진 작은 네트워크이다.
  • 네트워크를 분할하는 것을 서브네팅(Subnetting)이라고 한다.

3.1.2 서브넷 필요한 이유

[낭비되는 IP주소 자원을 최소화]

각 클래스로 나눠진 네트워크를 운영중인 서비스의 규모에 맞게 분할하여 사용하기 위한 기술이다. 따라서 이런 기술을 통해서 A Class 네트워크와 같은 매우 큰 네트워크를 작게 나눠서 사용하면서, 낭비되는 IP주소 자원을 최소화하려는 것이 주된 목적이다.

[동시다발적 데이터 전송용도]

다른 이유로는 브로드 캐스팅을 사용할 때이다. 이 기술은 특정 네트워크에 연결된 모든 기기에 하나의 메시지로 동시에 데이터를 보내는 것이다. 이를 사용할 때 연결된 호스트 디바이스가 많다면, 당연히 성능의 저하가 올 수 있다. 따라서 네트워크의 규모를 줄여서 브로드 캐스팅으로 인한 부하를 줄일 수 있는 것이다.

3.2 Internet Gateway

3.2.1 Gateway 정의

참조: https://brownbears.tistory.com/195

  • Gateway는 '관문'이나 '출입구' 라는 의미로 다양한 분야에서 일반적으로 사용되는 용어이다.
  • 컴퓨터 네트워크에서 Gateway란 한 네트워크에서 다른 네트워크로 이동하기 위하여 반드시 거쳐야 하는 지점이다.

Gateway 역할
(1) 컴퓨터가 네트워크 상에서 서로 연겨뢰려면 동일한 통신 프로토콜을 사용해야 한다.
(2) 프로토콜이 다른 네트워크 상의 컴퓨터와 통신하려면 두 프로토콜을 적절히 변환해주는 변환기가 필요하다.
(3) Gateway 가 이러한 변환기 역할을 한다.

3.2.2 Internet Gateway

  • 기본적으로 생성되는 VPC 주소는 인터넷과 연결이 불가능한 Private IP 대역을 가지고 있다.
  • Internet Gateway는 AWS의 VPC와 Internet 환경을 연결해주는 하나의 관문이다.

3.3 NAT (Network Address Translate)

  • NAT는 Network Address Translation의 약자로, 외부 네트워크에 알려진 것과 다른 IP 주소를 사용하는 내부 네트워크에서, 내부 IP 주소를 외부 IP주소로 변환하는 작업을 수행하는 서비스이다.

  • IP 패킷의 TCP/UDP 포트 숫자와 소스 및 목적지의 IP 주소 등을 재기록하면서 라우터를 통해 네트워크 트래픽을 주고 받는 기술을 말한다.

  • 패킷에 변화가 생기기 때문에 IP나 TCP/UDP의 체크섬(checksum)도 다시 계산되어 재기록해야 한다.

  • NAT를 이용하는 이유는 대개 사설 네트워크에 속한 여러 개의 호스트가 하나의 공인 IP 주소를 사용하여 인터넷에 접속하기 위함입니다

NAT를 사용하는 목적

[인터넷의 공인 IP 주소를 절약]

  • 인터넷의 공인 IP주소는 한정되어 있기 때문에 가급적 이를 공유할 수 있도록 하는 것이 필요
  • NAT를 이용하면 사설 IP주소를 사용하면서 이를 공인 IP주소와 상호변환할 수 있도록 함
  • 공인 IP주소를 다수가 함께 사용할 수 있도록 함으로써 이를 절약할 수 있다.

[고유한 사설망을 침입자들로부터 보호]

  • 공개된 인터넷과 사설망 사이에 방화벽(Firewall)을 설치하여 외부 공격으로부터 사용자의 통신망을 보호하는 기본적인 수단으로 활용할 수 있다.
  • 외부 통신망 즉 인터넷망과 연결하는 장비인 라우터에 NAT를 설정할 경우 라우터는 자신에게 할당된 공인 IP주소만 외부로 알려지게 하고, 내부에서는 사설 IP주소만 사용하도록 하여 필요시에 이를 서로 변환시켜 준다.
  • 외부 침입자가 공격하기 위해서는 사설망의 내부 사설 IP주소를 알아야 하기 때문에 공격이 불가능해지므로 내부 네트워크를 보호할 수 있게 됩니다.

3.3 CIDR (사이더)

VPC는 프라이빗 클라우드를 만드는데 가장 기본이 되는 리소스이다. 논리적인 독립 네트워크를 구성하는 리소스와 IPv4 CIDR 블록을 필수적으로 가진다.

3.3.1 VPC CIDR 블록

기존 네트워크와 마찬가지로 VPC는 하나 이상의 연속적 IP주소 범위로 구성되며, CIDR(Classless Inter Domain Routing) 블록으로 표시한다.

VPC 내 인스턴스를 비롯한 리소스에 할당되는 IP주소는 CIDR 블록으로 결정되며, 생성할 때 기본 CIDR 블록을 할당해야 한다. (IP 주소를 구성하는 32개 이진 비트 중 첫 비트부터의 개수를 말한다.)

CIDR 172.16.0.0/16 -> 172.16.0.0 ~ 172.16.255.255 까지 216^{16} = 65,536 개

  • CIDR는 급격히 부족해지는 IPv4 주소를 보다 효율적으로 사용하게 함
  • CIDR 표기법은 IP 주소범위를 나타내는 여러 방법중 가장 짧게 표현하는 방법
  • CIDR 블록은 IP 범위를 지정하는 방식이다. CIDR 블록은 IP 주소와 슬래시(/) 뒤에 따라오는 넷마스크 숫자로 구성되어 있다. 이 숫자는 IP 범위를 나타내며 2(32N)^{(32-N)} 개가 된다.
  • VPC를 온프레미스 네트워크나 다른 VPC등 다른 네트워크에 연결하려면 사용할 VPC CIDR이 다른 네트워크에서 이미 사용하는 주소와 중복되지 않도록 해야 한다.
  • 기본 CIDR 블록은 변경할 수 없으므로 만들기 전 주소 요구 사항을 신중히 검토해야한다.

3.3.2 보조 CIDR 블록

VPC를 만든 후에도 보조 CIDR 블록을 지정할 수 있다. 보조 CIDR 블록은 기본 CIDR 주소 범위나 퍼블릭에서 라우팅이 가능한 범위 내에서 생성돼야 하고, 기본 블록 또는 다른 보조 블록과 겹치지 않아야 한다.

EX) VPC 기본 CIDR이16.0.0/16 일 때 보조 CIDR을 172.17.0.0/16 으로 지정할 수 있지만, 192.168.0.0/16을 지정할 수는 없다.

→ 보조 VPC의 CIDR은 기본 VPC의 CIDR와 같은 클래스 내에 있어야 한다. 즉, B클래스 기본 CIDR 172.16.0.0/16에는 C클래스인 192.168.0.0/16을 보조 CIDR로 설정할 수 없다.

3.3.3 VPC 생성시 고려할

  • VPC 생성시 IPv4 CIDR/16 블록에 해당하는 VPC를 만들어진다.

  • 사설 IP에서 인터넷 연결가능한 IP 대역으로 설정하여 문제가 생기는 일을 방지하기 위함이다.
    RFC1918 규약에서의 사설망은 아래와 같은 대역을 사용한다.
    참조: https://brownbears.tistory.com/195

  • VPC는 독립된 네트워크 환경으로 구성되기 때문에 CIDR이 같거나 겹치더라도 생성가능.
    그러나 추후 다수 VPC를 함께 사용하는 경우 IP대역이 겹치면 문제가 발생할 수 있다.

※ VPC를 생성하기는 쉽지만, 한번 만들고 난 후 기존 CIDR을 변경하는 것은 불가능 ※

  • 문제가 생겨 VPC 내부 모든 자원을 이동하는 것은 매우 힘든 일 -> VPC 제약사항들을 충분히 이해하고 CIDR을 정하는 것이 좋다.
    기본 VPC의 CIDR 블록은 172.31.0.0/16 이다.

참고

https://blog.naver.com/sehyunfa/221821380431

https://www.youtube.com/watch?v=R1UWYQYTPKo&t=204s&ab_channel=AmazonWebServicesKorea

https://www.44bits.io/ko/post/understanding_aws_vpc

https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098

https://pjh3749.tistory.com/283

https://hyoje420.tistory.com/32

https://jwprogramming.tistory.com/30

profile
Cloud 관련 개인 공부 지식들을 기록하는 공간입니다.

0개의 댓글