Cloud/AWS Cloud Computing

[AWS] VPC 정리 1. AWS VPC 개념 및 용어 정리

스파이디웹 2023. 2. 8. 11:31
728x90

이번 포스트에는 VPC와 관련된 용어, 개념을 정리하고

2편에서는 관련된 용어와 사용 예시에 대해 정리하겠습니다.

3편에서는 직접 VPC를 만들고 확인해보는 실습을 해보겠습니다.

 

VPC 2편 link ↓

https://spidyweb.tistory.com/442

 

함께 보면 좋을 public, private subnet 나누기 페이지는 아래의 링크를 참조해주세요.

2022.11.01 - [Network & Server] - [Network] Bastion Server(Host)란? 아키텍처 및 특징,실습하기 (feat. VPC)

 

[Network] Bastion Server(Host)란? 아키텍처 및 특징,실습하기 (feat. VPC)

1. Bastion Server(Host)란? Bastion(수호자, 보루, 요새) 배스천 호스트(Bastion Host)란 침입 차단 소프트웨어가 설치되어 내부와 외부 네트워크 사이에서 일종의 게이트 역할을 수행하는 호스트(외부와 통

spidyweb.tistory.com


1. VPN(Virtual Private Network)

VPC는 VPN의 개념으로부터 나온 용어이므로, VPN부터 알아야 VPC를 이해할 수 있습니다.

 

1) 정의

VPN은 가상사설망이라는 뜻으로, 실제 사설망이 아닌 가상의 사설망

 

2) 사용하는 이유(장점)

보안에 강하다

보안상의 이유로 네트워크를 분리하고 싶을 때, 네트워크A와 네트워크B가 실제로 같은 네트워크상에 있지만 논리적으로 다른 네트워크인것처럼 동작함


2. VPC(Virtual Private Cloud)

1) VPC가 없는 구조라면?

VPC가 없는 구조는 시스템의 복잡도가 높고, EC2인스턴스가 추가될 때마다 다른 모든 인스턴스를 수정해야 하는 상황이 발생합니다.

VPC가 적용된 구조


2) VPC란?

Amazon Virtual Private Cloud(VPC)를 사용하면 AWS 클라우드에서 논리적으로 격리된 공간을 프로비저닝하여 고객이 정의하는 가상 네트워크에서 AWS 리소스를 시작할 수 있습니다. IP 주소 범위 선택, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등 가상 네트워킹 환경을 완벽하게 제어할 수 있습니다. VPC에서 IPv4와 IPv6를 모두 사용하여 리소스와 애플리케이션에 안전하고 쉽게 액세스할 수 있습니다

VPC의 구성요소

계정을 처음 만들었을 때, 자동으로 하나의 리전에서 만들어지는 리소스목록

  • 1 VPC
  • n 서브넷Subnet(n은 사용할 수 있는 가용영역의 개수)
  • 1 라우트 테이블Route Table
  • 1 네트워크 ACLNetwork ACL
  • 1 시큐리티 그룹Security Group
  • 1 인터넷 게이트웨이Internet Gateway
  • 1 DHCP 옵션셋DHCP options set
*가용영역(Available Zone, AZ) vs 리전(Region)
[가용영역]
1개 이상의 물리 데이터센터를 묶은 논리적인 데이터센터.
가용역역은 1개의 데이터센터일 수도 있고, 2개 이상의 데이터센터를 묶어놓은 것일 수도 있지만, 개념적으로는 하나의 가상 데이터센터
가용영역 간에는 독립적인 전원, 냉온습, 물리적 보안 등의 시설을 갖추게 되며, 물리적으로 떨어져 있기 때문에 데이터센터의 장애가 발생하더라도 가용영역 간에 영향을 미치지 않음

[리전]
가용영역이 2개 이상 구성된 지리적(물리적) 영역.
리전 내의 가용영역의 일종의 클러스터처럼 묶여있으며 많은 서비스들이 리전을 기반으로 해서 제공
신규 서비스의 경우 특정 리전만 제공되다가 확대되기도 함.
리전 내의 가용영역 간에는 높은 대역폭과 지연 시간이 매우 짧은 네트워크로 연결되어 고가용성은 물론 빠른 서비스 응답을 제공할 수 있음

VPC가 사용되는 곳

  • EC2
  • ECS
  • RDS
  • AuroraDB
  • Elasticache(redis, memcached,...)
  • lambda
    • 서버리스 환경에서 함수를 실행해주는 AWS 람다AWS Lambda의 경우 생성시에는 별도로 VPC 지정하는 항목이 없지만, 웹 콘솔에서 함수 생성 후 상세 화면을 확인해보면 네트워크를 선택할 수 있는 설정을 찾을 수 있음
    • 람다 함수는 VPC를 지정하지 않고도 실행할 수 있지만, 이 경우 VPC 내부에서만 접근 가능한 리소스를 사용할 수 없음
    • 네트워크 항목에서 특정 VPC를 지정하면, 해당 VPC에서 람다 함수가 실행되므로 같은 네트워크 환경에 있는 리소스를 사용할 수 있음
  • MWAA
  • MSK
  • etc...

3) VPC 관련 용어

subnet

서브넷은 VPC의 IP 주소 범위입니다. 서브넷은 단일 가용 영역에 상주해야 합니다. 서브넷을 추가한 후에는 VPC에 AWS 리소스(RDS, EC2 등) 배포할 수 있습니다.


IP 주소 지정

VPC와 서브넷에 IPv4 주소와 IPv6 주소를 할당할 수 있습니다. 또한 퍼블릭 IPv4 및 IPv6 GUA 주소를 AWS로 가져오고 VPC의 리소스(예: EC2 인스턴스, NAT 게이트웨이, Network Load Balancer(NLB))에 할당할 수 있습니다.

* NLB(Network Load Balancer) - Transport Layer(4계층)
개방형 시스템 간 상호 연결(OSI) 모델의 네 번째 계층에서 작동하는 TCP UDP를 이해하고 활용할 줄 아는 로드벨런서(L4 스위치, L4 로드벨런서), TCP의 3-way handshake를 수행할 줄 알거나 UDP의 특성에 맞춰 데이터를 전송.
초당 수백만 개의 요청을 처리, 로드 벨런서가 연결 요청을 받으면 기본 규칙의 대상 그룹에서 대상을 선택하고, 리스너 구성에 지정된 포트에서 선택한 대상에 대한 TCP 연결을 열려고 시도

Private 및 Public IP를 고정된 IP로 제공(IP를 통한 접근 제어를 수행하고자 하는 경우, 변하지 않는 IP는 중요한 요소)

* ALB(Application load Balancer) - Apllication Layer(7계층)
개방형 시스템 간 상호 연결(OSI) 모델의 일곱 번째 계층에서 작동, L7 스위치, L7 로드벨런서 라고도 함.
HTTP/HTTPS 프로토콜의 헤더를 보고 적절한 패킷으로 전송
SSL 적용이 가능

IP가 끊임없이 변화하기 때문에 ALB의 Public IP를 목적지로 삼아 접근 제어(ACL)를 실시하는 네트워크 장비(방화벽)에겐 취약
-> ALB앞에 NLB를 두어 고정된 IP를 제공
-> client에서 access할 DLB의 DNS NAME을 이용

routing

라우팅 테이블을 사용하여 서브넷 또는 게이트웨이의 네트워크 트래픽이 전달되는 위치를 결정합니다.

public subnet은 public route table이 매핑되며, private subnet에는 private route table이 매핑됩니다.

 

  • 라우터란 목적지이고 라우팅테이블은 각 목적지에 대한 이정표
  • 데이터는 라우터로 향하게되며 네트워크 요청은 각각 정의된 라우팅테이블에따라 작동
  • 서브넷A의 라우팅테이블은 172.31.0.0/16 즉 VPC안의 네트워크 범위를 갖는 네트워크 요청은 로컬에서 찾음
  • 그 이외 외부로 통하는 트래픽을 처리할 수 없음 → 인터넷 게이트웨이 필요


gateway

게이트웨이는 VPC를 다른 네트워크에 연결합니다.

예를 들면, 인터넷 게이트웨이를 사용하여 VPC를 인터넷에 연결합니다. 

게이트웨이는 VPC에 매핑이 되며 public subnet의 route target이 게이트웨이로 지정이 됩니다.

  • VPC와 인터넷을 연결해주는 하나의 관문
  • routing table의 0.0.0.0/0 = 모든 트래픽에 대하여 IGA(인터넷 게이트웨이) A로 향함
  • 라우팅테이블은 가장 먼저 목적지의 주소가 172.31.0.0/16에 매칭되는지를 확인한 후 매칭되지 않는다면 IGA A로 보냄
  • Public Subnet은 Internet에 연결된 subnet, Private Subnet은 인터넷에 연결되지 않은 Subnet


endpoint

VPC 엔드포인트는 인터넷 게이트웨이 또는 NAT 장치를 사용하지 않고 AWS 서비스에 비공개로 연결을 가능하게 합니다.


security groups(SG)

연결된 리소스에 도달하고 나갈 수 있는 트래픽을 제어

  • 방화벽과 같은 역할
  • Stateful한 방식으로 동작하는 보안그룹은 모든 허용을 차단하도록 기본설정 되어있으며 필요한 설정은 허용해주어야 됨
  • 각각의 보안그룹별로도 별도의 트래픽을 설정할 수 있으며, 서브넷 및 각각의 EC2에도 적용 가능

 

 

[보안 그룹 규칙]

  • 프로토콜: 허용할 프로토콜. 가장 일반적인 프로토콜은 6(TCP), 17(UDP) 및 1(ICMP)
  • 포트 범위: TCP, UDP 또는 사용자 지정 프로토콜의 경우 허용할 포트의 범위. 단일 포트 번호(예: 22) 또는 포트 번호의 범위(예: 7000-8000)를 지정할 수 있음
  • ICMP 유형 및 코드: ICMP의 경우, ICMP 유형과 코드. 예를 들어 ICMP 에코 요청에 대해 유형 8을 사용하고 ICMPv6 에코 요청에 대해 유형 128을 입력
  • 소스 또는 대상: 허용할 트래픽에 대한 소스(인바운드 규칙) 또는 대상(아웃바운드 규칙)
    • 단일 IPv4 주소. /32 접두사 길이를 사용 예: 203.0.113.1/32.
    • 단일 IPv6 주소. /128 접두사 길이를 사용 예: 2001:db8:1234:1a00::123/128.
    • CIDR 블록 표기법으로 표시된 IPv4 주소의 범위. 예: 203.0.113.0/24.
    • CIDR 블록 표기법으로 표시된 IPv6 주소의 범위. 예: 2001:db8:1234:1a00::/64.
    • 접두사 목록의 ID. 예: pl-1234abc1234abc123. 자세한 정보는 관리형 접두사 목록을 사용하여 CIDR 블록 그룹화를 참조
    • 보안 그룹의 ID(여기에서는 지정된 보안 그룹이라고 함). 예를 들어, 현재 보안 그룹, 동일한 VPC의 보안 그룹 또는 피어링된 VPC에 대한 보안 그룹이 해당 이렇게 하면 지정된 보안 그룹과 연결된 리소스의 프라이빗 IP 주소를 기반으로 하는 트래픽이 허용이 작업은 지정된 보안 그룹의 규칙을 현재 보안 그룹에 추가하지 않음
  • (선택 사항) 설명: 나중에 쉽게 식별할 수 있도록 규칙에 대한 설명을 입력할 수 있음. 설명 길이는 최대 255자 허용되는 문자는 a-z, A-Z, 0-9, 공백 및 ._-:/()#,@[]+=;{}!$*

 

[규칙 예]

* 인바운드 규칙 vs 아웃바운드 규칙
인바운드 규칙 : 다른 컴퓨터(네트워크)에서 자신의 컴퓨터로 네트워크 데이터가 들어올 수 있도록 규칙을 정의.
아웃바운드 규칙 : 자신의 컴퓨터에서 네트워크 데이터가 다른 컴퓨터(네트워크)로 나갈 수 있도록 규칙을 정의.

Network ACLs

VPC 환경에서 한  개 이상의 서브넷에서 트래픽을 제어할 수 있는 방화벽 역할을 수행하는 보안 옵션 계층

  • Stateless하게 작동
  • 모든 트래픽에 대해 기본 설정 되어 있기 때문에 불필요한 트래픽을 막도록 적용해야 함
  • 서브넷 단위로 적용되며 리소스별로는 설정할 수 없음
  • 네트워크ACL과 보안그룹이 충돌한다면 보안그룹이 더 높은 우선순위를 갖음

[ACL 규칙 항목]

  1. Rule number(규칙번호): 규칙은 가장 낮은 번호 규칙부터 평가되며, 규칙이 트래'픽과 일치하는 즉시 적용 됨
  2. Type(유형): SSH, TCP 등 모든 트래픽 또는 사용자 지정 범위를 지정할 수 있음
  3. Protocol(프로토콜): 표준 프로토콜 번호가 있는 모든 프로토콜을 지정할 수 있음
  4. Port range(포트범위): 트래픽에 대한 수신 포트 또는 범위를 지정할 수 있음
  5. source(소스): 인바운드 규칙 내 CIDR 범위를 지정할 수 있음
  6. target(목적지): 아웃바운드 규칙 내 CIDR 범위를 지정할 수 있음
  7. Allow/Deny(허용/거부): 지정된 트래픽을 허용할지 거부할지 지정할 수 있음
  • 기본 ACL 구성
    • 기본 inbound/outbound 규칙은 아래와 같이 생성되며, 사용자 범위에 맞게 지정이 가능
    • 규칙 번호는 100단위 간격을 추천


DHCP option set

  •  VPC의 EC2 인스턴스가 가상 네트워크를 통해 통신하는 데 사용하는 네트워크 구성 그룹
  • 사용자 지정 DHCP 옵션 세트를 생성하도록 선택하지 않거나 VPC 모든 옵션 세트를 연결 해제하지 않는 한 리전의 각 VPC는 동일한 기본 DHCP 옵션 세트를 사용
  • 기본 DHCP 옵션 세트
    • 도메인 이름(Domain name): 도메인 이름 시스템을 통해 호스트 이름을 확인하는 경우 클라이언트가 사용해야 하는 도메인 이름
    • 도메인 이름 서버(Domain name servers): 네트워크 인터페이스가 도메인 이름 확인에 사용할 DNS 서버
    • 기본 옵션 세트를 사용하는 경우 Amazon DHCP 서버는 기본 옵션 세트에 저장된 네트워크 구성을 사용
    • VPC로 인스턴스를 시작하면 인스턴스는 DHCP 서버(1)와 상호 작용하고, Amazon DNS 서버(2)와 상호 작용하며, VPC의 라우터(3)를 통해 네트워크의 다른 디바이스에 연결
    • 인스턴스는 언제든지 Amazon DHCP 서버와 상호 작용하여 IP 주소 임대 및 추가 네트워크 구성을 가져올 수 있음

  • 사용자 정의 DHCP 옵션 세트
    • 도메인 이름(Domain name): 도메인 이름 시스템을 통해 호스트 이름을 확인하는 경우 클라이언트가 사용해야 하는 도메인 이름
    • 도메인 이름 서버(Domain name servers): 네트워크 인터페이스가 도메인 이름 확인에 사용할 DNS 서버
    • NTP 서버(NTP servers): 네트워크의 인스턴스에 시간을 제공하는 NTP 서버
    • NetBIOS 이름 서버(NetBIOS name servers): Windows OS에서 실행되는 EC2 인스턴스의 경우 NetBIOS 컴퓨터 이름은 네트워크에서 인스턴스를 식별하기 위해 인스턴스에 할당된 이름
      NetBIOS 이름 서버는 NetBIOS를 이름 지정 서비스로 사용하는 네트워크의 NetBIOS 컴퓨터 이름과 네트워크 주소 간의 매핑 목록을 유지 관리
    • NetBIOS 노드 유형(NetBIOS node type): Windows OS에서 실행되는 EC2 인스턴스의 경우 인스턴스가 NetBIOS 이름을 IP 주소로 확인하는 데 사용하는 방법
    • 사용자 지정 옵션 세트를 사용하는 경우 VPC로 시작된 인스턴스는 사용자 지정 DHCP 옵션 세트(1)의 네트워크 구성을 사용하고, 비Amazon DNS, NTP 및 NETBIO 서버(2)와 상호 작용하고, VPC의 라우터(3)를 통해 네트워크의 다른 디바이스에 연결


 

참조:

https://docs.aws.amazon.com/ko_kr/vpc/latest/userguide/what-is-amazon-vpc.html

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://www.44bits.io/ko/post/understanding_aws_vpc

728x90