본문 바로가기
[AWS]/AWS SAA EXAMTOPICS

[AWS][SAA] 2. VPC

by METAVERSE STORY 2022. 6. 13.
반응형

VPC (Virtual Private Cloud)

 

VPC란?

Amazon VPC는 EC2의 네트워크 계층이고, EC2 인스턴스를 비롯 여러 AWS 서비스에 네트워크 리소스를 담을 수 있는 가상 네트워크이다. 모든 VPC는 기본적으로 다른 모든 네트워크와 격리돼 있지만, 필요할 때는 인터넷 및 다른 VPC 등과 연결할 수 있다.

VPC는 한 AWS 리전 안에서만 존재할 수 있으며, 한 리전에서 만든 VPC는 다른 리전에서는 보이지 않는다. 하나의 계정에 여러 VPC를 둘 수 있고 단일 리전에 여러 VPC를 만들 수 있다.

 

VPC CIDR 블록

VPC는 하나 이상의 연속적 IP 주소 범위로 구성되며, CIDR(Classlsess Inter Domain Routing) 블록으로 표시한다. VPC에서 허용된 CIDR 접두사 길이는 /16 부터 /28 까지이며, 다음의 사설망 RFC 1918 규격 내에서 VPC CIDR 블록을 지정하는 것이 좋다. 

  • 10.0.0.0 - 10.255.255.255 (10.0.0.0/8)
    • VPC는 /16 이하여야 한다. (ex: 10.0.0.0/16)
  • 172.16.0.0 - 172.31.255.255 (172.31.0.0/12)
    • VPC는 /16 이하여야 한다. (ex: 172.31.0.0/16)
  • 192.168.0.0 - 192.168.255.255 ( 192.168.0.0/16)
    • VPC는 더 작을 수 있다. (ex: 192.168.0.0/20)

 

보조 CIDR 블록

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

 

서브넷

서브넷은 VPC 내에 있는 논리 컨테이너로 EC2 인스턴스를 배치하는 장소이다. 서브넷을 통해 인스턴스를 서로 격리하고 인스턴스 간 트래픽 흐름을 제어하고, 인스턴스를 기능별로 모아둘 수 있다.

  • 각 서브넷은 단일 가용 영역과 매핑된다.
  • 생성한 모든 서브넷은 VPC의 메인 라우팅 테이블에 자동으로 매핑된다.

서브넷 트래픽이 인터넷 게이트웨이로 라우팅 되는 경우 해당 서브넷을 퍼블릭 서브넷이라고 한다. 반대로 인터넷 게이트웨이로 라우팅 되지 않는 서브넷을 프라이빗 서브넷이라고 한다.

 

서브넷 CIDR 블록

서브넷의 CIDR은 VPC CIDR의 일부이며, VPC 내에서 고유해야 한다. AWS는 모든 서브넷에서 처음 4개 IP 주소와 마지막 IP 주소를 예약하며 이 주소는 인스턴스에 할당할 수 없다. VPC는 보조 CIDR을 가질 수 있지만 서브넷에는 하나의 CIDR만 있다. VPC에 기본 CIDR와 보조 CIDR가 있는 경우, 그 중 하나에서 서브넷 CIDR를 생성할 수 있다.

 

Default 서브넷

기본 서브넷은 메인 라우팅 테이블이 인터넷 게이트웨이로 서브넷의 요청을 보내기 때문에 기본적으로 public 서브넷이다. 인터넷 게이트웨이로 향하는 기본 destination인 0.0.0.0/0 라우팅을 제거하고 private 서브넷으로 만들 수 있다.

기본 서브넷에서 시작한 EC2 인스턴스는 public IPv4 주소와 private IPv4 주소를 모두 받을 수 있고 반대로 기본 VPC 안의 일반 서브넷에서 시작한 인스턴스는 public 주소를 받지 못한다. 단 일반 서브넷에서 인스턴스 시작 마법사로 인스턴스를 생성하면 예외적으로 public 주소를 지정할 수 있다.

 

가용 영역

서브넷은 하나의 가용 영역(AZ, Availability Zone)내에서만 존재할 수 있다. AWS 리전의 가용 영역들은 서로 프라이빗하게 연결 돼 있으며, 한 가용 영역에 장애가 발생하더라도 다른 영역에 장애의 영향이 미치지 않도록 설계되어 있다. 서로 다른 가용 영역에 서브넷을 하나씩 만든 후 인스턴스를 각각 서브넷에 분산해서 만들면, 애플리케이션은 복원성을 확보할 수 있다. 애플리케이션의 가용성을 높이는 대표적인 방법이다. 

 

탄력적 네트워크 인터페이스(ENI, Elastic Network Interface)

탄력적 네트워크 인터페이스를 사용하면 인스턴스가 AWS 서비스, 다른 인스턴스, 온프레미스 서버, 인터넷 등 다른 네트워크 리소스와 통신할 수 있게 된다. 모든 인스턴스에는 기본 ENI가 있어야 하며 이 인터페이스는 하나의 서브넷에만 연결된다.

ENI는 인스턴스와 독립적으로 존재할 수 있는데 ENI 생성을 한 후 인스턴스에 연결할 수 있다. 기본 ENI를 가져와 기존 인스턴스에 보조 ENI로 연결할 수 있으며, 장애가 있는 인스턴스에서 ENI를 분리해 작동하는 다른 인스턴스에 연결하면 트래픽을 장애 인스턴스에서 정상 인스턴스로 전환할 수 있다. ENI는 인스턴스가 stopped 상태가 되더라도 분리되지 않는다.

 

 

VPC Peering Connection

VPC Peering Connection은 서로 다른 두 VPC 간에 트래픽을 라우팅할 수 있도록 하는 네트워킹 연결이다. VPC Peering Connection은 원활한 데이터 전송에 많은 도움이 된다. 만약 AWS 계정이 두개 이상인 경우 이들 계정을 대상으로 VPC를 Peering하여 파일 공유 네트워크를 만들 수 있다. VPC Peering Connection을 사용하여 다른 VPC가 사용자의 VPC 중 하나에 있는 리소스에 액세스 하도록 허용할 수 있다.

Peering Connection이 항상 가능한 것은 아니다. 다음과 같은 상황에서는 Peering 구성이 지원되지 않는다.

  • 겹치는 CIDR 블록
    • 중첩되는 CIDR 블록이 있으면 VPC Peering Connection을 만들 수 없다.
  • 전이적인 Peering (transitive peering)
    • A - B - C 로 연결이 되 어 있을때, 가운데에 위치한 VPC B를 통해 VPC A가 VPC C로 직접 패킷을 라우팅 할 수 없다.
  • 게이트웨이 또는 private 연결을 통한 엣지 간 라우팅
    • A - B 연결에서 B에 인터넷 게이트웨이를 통한 인터넷 연결, AWS Dircet Connect 연결, 프라이빗 서브넷에서 NAT 디바이스를 통한 인터넷 연결 등이 있는경우, A에서 해당 외부 연결에 있는 리소스에 액세스 할 수 없다.

 

보안 그룹 (Security Group)

보안 그룹은 EC2 인스턴스에 대한 방화벽 역할을 한다. 어떤 IP에서 오는 트래픽을 통과시킬지, 인스턴스 수준에서 인바운드 트래픽과 아웃바운드 트래픽을 모두 제어하는 일종의 규칙 집합이다. 

  • 인스턴스 레벨에서 운영된다
  • 허용 규칙만 지원한다
  • 상태 저장: 규칙에 관계없이 반환 트래픽이 자동으로 허용된다.
  • 트래픽 허용 여부를 결정하기 전 모든 규칙을 전부 평가한다
  • 인스턴스 시작 시 누군가 보안 그룹을 지정하거나, 추후 보안 그룹을 인스턴스와 연결하는 경우 인스턴스에 적용된다.

 

Network  ACL

보안 그룹보다 좀 더 큰 개념으로 Network ACL이 있다. 보안 그룹이 인스턴스 레벨에서 제어하는 규칙이라면 ACL은 서브넷 간 통신 규칙을 관리한다. 보안 그룹과 동작 방식이 다르기 때문에 비교해서 정확히 알아두어야 한다.

  • 서브넷 레벨에서 운영된다.
  • Allow(허용) 및 Deny(거부) 규칙을 모두 지원한다.
  • 상태 비저장: 반환 트래픽이 규칙에 의해 명시적으로 허용 되어야 한다.
  • 트래픽 허용 여부를 결정할 때 번호가 가장 낮은 규칙부터 순서대로 규칙을 처리한다.
  • 연결된 서브넷의 모든 인스턴스에 자동 적용(보안 그룹 규칙이 지나치게 허용적일 경우 추가 보안 계층을 제공한다)

 

VPC 엔드포인트 

VPC와 AWS 서비스를 private 연결할 수 있도록 하는 서비스

  • 엔드 포인트 서비스 (AWS PrivateLink)
    • VPC에 있는 자체 애플리케이션이다. 다른 AWS 보안 주체는 VPC에서 사용자의 엔드포인트 서비스로 이어지는 연결을 생성할 수 있다. 
    • AWS PrivateLink는 VPC와 서비스 간의 모든 네트워크 트래픽을 Amazon 네트워크로 제한한다. 인터넷 게이트웨이 NAT 디바이스 또는 가상 프라이빗 게이트웨이가 필요 없다. 
  • 게이트웨이 엔드포인트
    • 특정 AWS 서비스로 전달되는 트래픽에 대해 라우팅 테이블에서 경로 대상으로 지정하는 게이트웨이이다. 두 가지의 AWS 서비스가 지원된다.
      • Amazon S3
      • DynamoDB
  • 인터페이스 엔드포인트
    • 프라이빗 IP 주소를 가진 ENI이며, 지원되는 서비스로 전달되는 트래픽에 대한 진입점 역할을 하는 서브넷의 IP 주소 범위에 있다. 인터페이스 엔드포인트는 AWS PrivateLink로 지원하며, 이 기술을 통해 프라이빗 IP 주소를 사용하여 서비스에 비공개로 액세스 할 수 있다. 

 

Internet Gateway (IGW)

인터넷 게이트웨이는 퍼블릭 IP 주소를 할당받은 인스턴스가 인터넷과 연결돼서 인터넷으로부터 요청을 수신하는 기능을 제공한다. VPC에는 하나의 게아ㅣ트웨이만 연결할 수 있다.

인터넷 게이트웨이는 관리형 IP 주소나 네트워크 인터페이스가 없는 대신, 식별을 위해서 AWS 리소스 ID가 할당된다. 리소스 ID는 igw-로 시작하며 그 뒤에 영숫자 문자열이 온다.

 

NAT 디바이스

네트워크 주소 변환은 인터넷 게이트웨이에서 이뤄지지만, 다음 두 가지 서비스도 네트워크 주소 변환을 수행한다. 

  • NAT 게이트웨이
  • NAT 인스턴스

AWS는 이를 NAT 디바이스라고 하며, 인스턴스가 인터넷에 액세스 할 수 있게 하면서 인터넷상의 호스트에서는 인스턴스에 직접 도달하지 못하게 할 때 사용한다. 이 기능은 인스턴스가 업데이트 패치를 받거나 데이터를 업로드 할 때 인터넷에 연결할 필요는 있지만, 클라이언트 요청에 응답할 필요는 없을 때 유용하다. 

 

NAT 게이트웨이

NAT 게이트웨이는 AWS에서 관리하는 NAT 디바이스이며, 인터넷 게이트웨이처럼 하나의 NAT 게이트웨이로 어떠한 용량의 요청도 처리할 수 있다. 보통 NAT 디바이스를 사용해야 한다면 NAT 게이트웨이로 구성한다.

NAT 게이트웨이를 생성할 때 EIP도 함께 할당해서 연결해야 하고, 퍼블릭 서브넷 한 곳에 배포해서 인터넷에 액세스 할 수 있도록 해야한다.

 

NAT 인스턴스

NAT 인스턴스는 사전 구성된 Linux 기반 AMI를 사용하는 일반적인 EC2 인스턴스이며, 여러 면에서 NAT 게이트웨이처럼 작동하지만 몇가지 중요한 다른 점이 있다. 

NAT 게이트웨이와 달리 NAT 인스턴스는 대역폭 요구가 증가하더라도 자동으로 확장되지 않는다. 따라서 적절한 성능을 갖춘 인스턴스 유형을 선택하는 것이 중요하고 대역폭 요구가 증가하면 더 큰 인스턴스 유형으로 업그레이드 해야한다.

만약 인스턴스나 가용 영역에 장애가 발생한다면 다른 NAT 인스턴스로 확장하는 정도로는 간단히 대처할 수 없는데 이는 기본 라우팅에 여러 NAT 인스턴스를 대상으로 경로를 지정할 수 없기 때문이다.

그리고 NAT 인스턴스에는 ENI가 있으므로 보안 그룹을 적용해야 하고 퍼블릭 IP 주소도 할당해야 한다.

NAT 인스턴스의 한 가지 이점은 배스천 호스트(Bastion Host, 또는 점프 호스트)로 사용해 퍼블릭 IP가 없는 인스턴스에 연결할 수 있다는 점이며 NAT 게이트웨이로는 이 작업을 수행할 수 없다. 

 

VPN 연결

VPN 연결 옵션을 사용해 Amazon VPC를 원격 네트워크 및 사용자에 연결할 수 있다.

  • AWS Site-to-Site VPN
    • VPC와 원격 네트워크 사이에 IPsec(IP Security) VPN 연결을 생성할 수 있다.
  • AWS Client VPN
    • AWS 리소스 또는 온프레미스 네트워크에 안전하게 액세스 할 수 있또록 하는 관리형 클라이언트 기반 VPN 서비스
    • 사용자가 연결할 수 있는 엔드포인트를 구성하여 보안 TLS VPN 세션을 설정할 수 있다.
  • AWS VPN CloudHub
    • 원격 네트워크가 두 개 이상인 경우(지사 사무실이 여러곳인 경우), 가상 프라이빗 게이트웨이를 통해 AWS Site-to-Site VPN 연결을 생성할 수 있다.
  • 타사 소프트웨어 VPN 어플라이언스
    •  타사 소프트웨어 VPN 어플라이언스를 실행 중인 VPC에서 EC2 인스턴스를 사용하여 VPN 연결을 생성할 수 있다.

 

출처: https://wbluke.tistory.com/55?category=418851 

 

[AWS SAA] 2. VPC

AWS SAA SAA-C02 자격증 합격 후기에 이어 공부했던 내용들을 간단하게 다시 정리하고 있습니다. 두 번째로는 VPC에 대해서 정리해 보겠습니다. VPC (Virtual Private Cloud) 소개 Amazon VPC는 EC2의 네트워크..

wbluke.tistory.com

 

반응형

댓글