ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • VPC :: Virtual Private Cloud
    Back-end Developer/Cloud 2021. 4. 9. 17:29

    VPC란 AWS 계정 내에 구성되는 사설 IP 기반 가상 네트워크 서비스입니다.

    VPC에 우리가 사용할 인스턴스 등 다양한 IT 서비스 및 인프라를 구성할 수 있습니다.

    단, Cloud Front, S3 등은 VPC 외부에 배치됩니다.


    VPC

    VPC는 AWS 클라우드의 논리적으로 분리된 섹션을 *프로비저닝 하여 사용자에게 가상 프라이빗 클라우드를 제공하는 상용 클라우드 컴퓨팅 서비스

     

     

    VPC의 특징

    • Subnet을 통해 서비스 계층에 따라 분리하고 외부 통신 및 내부 통신이 가능
    • Security Group을 이용해 출입하는 트래픽을 선택적으로 제어
    • 외부(인터넷 / on-premise) 연동 및 방화벽과 같은 접근 제어 설정도 가능
    • 하나의 Region 내에서 여러 AZ에 걸쳐 사용 가능

     

    논리적 개념이기 때문에 머릿속에 잘 떠오르진 않을 수 있습니다.

    따라서, 예시와 그림을 통해 개념들을 하나씩 살펴보며 이해해보겠습니다.

     

     

    일반적으로 OSI 7 계층의 Network 계층에서 제공되는 IP주소는 public/private 두 종류로 나뉩니다.

     

    public(공인) IP는 전 세계 모든 네트워크 공간을 대상으로 합니다.

    예를 들어 제 구글 아이디는 미국에 가도 같은 아이디로 사용할 수 있듯 인터넷 공간에서 유일한 값이죠.

     

    private(사설) IP는 일정 네트워크 범위에서만 통용되는 별도의 격리된 주소 체계입니다.

    군대 전화를 예로 들 수 있겠네요. 군대에선 각 부대끼리 통화를 군용 VoIP 키폰을 이용하죠.

    군용은 일반적인 전화번호와 다른 4자리 번호만 사용해 부대 내에서 통화를 할 수 있습니다.

    핸드폰 번호가 공인 IP라면 이러한 군용 VoIP를 사설 IP라 생각하시면 됩니다.

     

    특히, 해당 부대의 키폰 번호를 알아도 일반적인 방법으로 통화를 걸 수 없는데, 사설 IP도 마찬가지로 생각하시면 됩니다.

    사설 IP 주소에 해당하는 네트워크에 접속해야 가능하겠죠.

     

     

    VPC는 이 사설 IP 대역을 정의해 구성됩니다.

    이렇게 되면 VPC 내부와 외부가 완벽히 분리되며, 내/외부 통신은 *IGW 또는 *VPG와 같은 매개체를 통해 이루어집니다.

     

    그림 1. VPC 구성

     

    일반적인 VPC의 구성은 위와 같이 이루어집니다.

    VPC단일 Region 내에만 존재하며, AZ에 걸쳐서 생성될 수 있습니다.

    또한, VPC 내 subnet단일 VPC 내 단일 AZ에 존재합니다.

    즉, VPC는 VPC subnet의 집합

     

     

    VPC 객체

    위의 그림처럼 VPC에서 사용하는 객체는 Subnet 외에도 여러 가지가 있습니다.

    이에 대해 한 번 알아보겠습니다.

     

    Subnet

    Route Table 객체, Network ACL 하나씩 참조하는 VPC 구성요소

     

    Route Table

    목적지 별 통신할 네트워크 객체 정의

    IGW, VPG, ENI, VPC Endpoint, VPC peering, NAT Gateway 등 정의 가능

     

    Network ACL

    subnet 단위로 동작하는 방화벽 객체

    해당 VPC subnet으로 패킷이 출입 시 접근 제어 규칙 정의 가능

     

    ENI (Elastic Network Interface)

    EC2 인스턴스에 붙여 사용, 사설 IP주소의 정보를 갖고 있는 객체

    EC2에 여러 개의 ENI를 붙여 사용할 가능. 즉, 두 개 이상의 사설 IP를 매핑해 사용 가능

    ENI 객체 단위로 Security Group(방화벽) 객체를 참조

    최대 1 : 5 매핑 가능

     

     

    그리고, VPC subnet은 public, private으로 나뉘며,

    Route Table에 IGW로 가는 Routing rule의 존재 여부로 public/private을 구분할 수 있습니다.

    이를 도식화하면 아래와 같습니다.

     

    그림 2. internet <-> subnet 통신

    그림에 따른 각 Route-Table 구성은 아래와 같습니다.

    private Subnet Route-Table
    Destination Target
    1.0.0.0/16 local
    public Subnet Route-Table
    Destination Target
    1.0.0.0/16 local
    0.0.0.0/0 IGW

     

     

    VPC에서 인터넷과 통신하는 방식은 꽤 많지만 여기선 2가지만 소개해보려 합니다.

    외부 사설 네트워크와 통신을 할 땐 VPG를 사용합니다.

     

    1. 위와 같이 public Subnet에 존재하는 ENI객체가 public IP를 갖고 있다면 IGW를 통해 바로 internet 통신
    2. NAT Gateway나 NAT 용도로 설정된 EC2 인스턴스를 proxy로 두고 internet 통신

     

    물론 2번의 경우도 1번과 마찬가지로 NAT Gateway 또는 EC2가 public IP를 갖고 public subnet에 위치해야 합니다.

    이후 인터넷 통신이 필요한 private subnet의 Route-Table의 target에 EC2 또는 NAT Gateway의 ENI를 추가합니다.

     

     

    VPC 서비스

    마지막으로 VPC는 3가지 서비스를 제공합니다. 각 서비스가 지원하는 것과 특징에 대해 알아보고 마무리하겠습니다.

     

    VPC peering

    그림 3. VPC peering

    서로 다른 두 VPC 객체가 사설 IP를 통해 간단히 통신할 수 있도록 돕는 서비스

    peering 구성

    1. 한쪽에서 VPC peering 신청
    2. 각 subnet Route-Table 객체에 상대 주소를 목적지로 하는 룰 추가

     

    peering 조건

    • 두 VPC가 동일한 Region에 위치
    • 두 VPC의 사설 IP주소 대역이 겹치지 않는 경우

     

    NAT Gateway

    그림 4. NAT Gateway

    private subnet의 객체를 인터넷 또는 기타 AWS 서비스에 연결하는 한편 가용성 및 네트워크 대역폭 등의 관리를 자동으로 해주는 서비스

    NAT Gateway 구성

    1. NAT Gateway에서 사용할 Elastic IP 객체 생성
    2. public Subnet 위치에 NAT Gateway 생성
    3. private Subnet 객체가 사용하는 Route-Table 객체에 NAT-Gateway로 가는 rule 추가

     

    VPC Endpoint

    public 구간에 위치한 AWS 서비스(Cloud Front/Watch, S3 등)를 private Subnet에서 접근할 때 사용

     

     

    추가로 위에서 방화벽 관련된 객체(서비스)가 두 가지 존재했습니다.

     

    Security GroupNetwork ACL인데요.

    가장 큰 차이점은 Security Group은 EC2 ENI 계층Network ACL은 private Subnet 계층을 대상으로 한다는 점입니다.

    다른 차이점도 존재하지만 여기선 따로 언급하진 않겠습니다.

     

     

     

     

    VPC는 분명 중요한 요소지만, AWS 이용하면서 제대로 사용해본 적이 없네요.

    EC2 생성 후 VPC Security Group으로 RDS와 하나의 주소로 묶어서 구성했던 기억은 납니다.

    다음에 사용하게 된다면, 가장 신경 써야 할 부분 중 하나인 것은 분명합니다.. ㅎㅎ

     

    무작정 EC2의 사용법을 아는 것보다 이렇게 하나씩 해내가는 것이 훨씬 중요하다는 것이 또 느껴지네요.

    물론, 다음번엔 EC2를 이야기해보려 합니다.ㅎㅎ

     

     

     

     

     

     

     

     

     

     

     

     

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

    * IGW(Internet Gateway): 확장 및 가용성이 높은 VPC 구성 요소, VPC와 인터넷 간에 통신 지원

    • 공용 IPv4 주소가 할당된 인스턴스에 대해 NAT(네트워크 주소 변환)을 수행
    • Internet-Routable traffic에 대한 VPC route 테이블의 target을 제공

    * VPG(Virtual Private Gateway): 관리자가 임의로 정의한 목적지로 traffic을 routing

     

     

    참고 자료

    Wikipedia - VPC

    AWS - IGW

    AWS - VPC peering

    AWS - NAT Gateway

    AWS - VPC Endpoint

    반응형

    'Back-end Developer > Cloud' 카테고리의 다른 글

    EC2 :: Elastic Compute Cloud  (0) 2021.05.03
    Cloud Computing  (0) 2021.04.07

    댓글

Designed by minchoba.