AWS 스터디 - VPC

전재열·2024년 11월 28일

AWS SAA

목록 보기
10/11

사설망

  • 한정된 IP주소를 최대한 활용하기 위해 IP주소를 분할하고자 만든 개념
    • IPv4기준으로 최대 IP갯수는 43억개
      • 43억개의 주소는 너무 부족하다 > 사설망을 사용
    • 사설망
      • 사설망 내부에는 외부 인터넷 망으로 통신이 불가능한 사설 IP로 구성
      • 외부로 통신할 때는 통신 가능한 공인 IP로 나누어 사용
      • 보통 하나의 망에는 사설 IP를 부여받은 기기들과 NAT 기능을 갖춘 Gatewat로 구성

NAT(Network Address Translation)

  • 사설 IP가 공용 IP로 통신 할 수 있도록 주소를 변환해 주는 방법
  • 3가지 종류
    • Dynamic NAT : 1개의 사설 IP를 가용 가능한 공인 IP로 연결
      • 공인 IP 그룹에서 현재 사용 가능한 IP를 가져와서 연결
    • Static NAT : 하나의 사설 IP를 고정된 하나의 공인 IP로 연결
      • AWS Internet Gateway가 사용하는 방식
    • PAT(Port Address Translation): 많은 사설 IP를 하나의 공인 IP로 연결
      • NAT Gateway/NAT Instance가 사용하는 방식

Dynamic NAT

  • 각각의 사설 IP를 NAT Pool에서 가용 가능한 IP를 사용해 연결
  • 공인 IP가 계속 변할 수 있다

Static NAT

  • 사설망에 사용하는 기기수 만큼 공인IP가 필요

PAT

  • 하나의 공인IP를 여러개의 사설IP가 사용
  • PORT 번호를 통해 중계
  • SRC port : 네트워크 통신에서 클라이언트가 사용하는 임시 포트

사설IP의 대역폭

Classless Inter Domain Routing(CIDR)

  • CIDR은 주소의 영역을 여러 네트워크 영역으로 나누기 위해 IP를 묶는 방식
  • 여러 개의 사설망을 구축하기 위해 망을 나누는 방법

CIDR Notation

  • IP 주소의 집합
  • 네트워크 주소와 호스트 주소로 구성
  • 각 호스트 주소 숫자 만큼의 아이피를 가진 네트워크 망 형성 가능
  • A.B.C.D/E 형식
    • A,B,C,D : 네트워크 주소+호스트 주소 표시
    • E : 네트워크 주소가 몇 bit인지 표시

CIDR Block

  • 호스트 주소 비트만큼 IP 주소를 보유 가능
  • ex) 203.0.113.0/27 CIDR 블록의 의미를 설명해주세요
    cidr.xyz

서브넷

  • 네트워크 안의 네트워크
  • 큰 네트워크를 잘게 쪼갠 단위
  • 일정 IP주소의 범위를 보유
    • 큰 네트워크에 부여된 IP범위를 조금씩 잘라 작은 단위로 나눈 후 각 서브넷에 할당

VPC

  • 가상으로 존재하는 데이터센터
  • 원하는 대로 사설망 구축 가능
    • 부여된 IP 대역을 분할하여 사용 가능
  • 리전 단위
  • EC2, RDS, Lambda 등의 컴퓨팅 서비스 실행
  • 보안 설정

VPC 구성 요소

  • 서브넷
  • 인터넷 게이트웨이
  • NACL/보안그룹
  • 라우트 테이블
  • NAT Instance/ NAT Gateway
  • Bastion Host
  • VPC Endpoint

서브넷

  • VPC의 하위 단위로 VPC에 할당된 IP를 더 작은 단위로 분할한 개념
  • 하나의 서브넷은 하나의 가용영역 안에 위치
  • CIDR block range로 IP주소 지정
  • IPv4의 경우 최소 /28 CIDR 이상 ~ 최대 /16
    • AWS IPv4서브넷은 최소한 몇개의 IP를 보유해야 하는가?
  • IPv6의 경우 /44~/64

AWS 서브넷의 IP 갯수

  • AWS의 사용 가능 IP숫자는 5개를 제외하고 계산
  • ex) 10.0.0.0/24
    • 10.0.0.0 : 네트워크 어드레스
    • 10.0.0.1 : VPC Router
    • 10.0.0.2 : DNS Server
    • 10.0.0.3 : 미래에 사용을 위해 남겨 둠
    • 10.0.0.255(마지막번호) : 네트워크 브로드캐스트 어드레스
    • 즉, 총 사용 가능한 IP 갯수는 2^8-5=251

VPC Router

  • VPC에 있는 가상의 라우터로 서브넷에서 오고가는 트래픽을 라우팅
    • 즉, 모든 서브넷의 트래픽은 VPC 라우터를 거쳐서 목적지에 도달
  • VPC 생성시 자동으로 생성되며 별도로 관리할 필요가 없음
    • 별도의 설정은 불가능하며, Routing Table 설정 가능

라우트 테이블

  • VPC라우터에서 트래픽이 어디로 가야 할지 알려주는 이정표
  • VPC 생성시 기본으로 하나 제공
  • 구성 요소
    • Destination : 트래픽이 가고자 하는 주소
    • Target : 트래픽을 실제로 보내줄 대상
      - 논리적 리소스의 아이디로 표현

서브넷의 종류

  • 퍼블릭 서브넷 : 외부에서 인터넷을 통해 연결할 수 있는 서브넷

    • 인터넷 게이트웨이를 통해 외부의 인터넷과 연결되어 있음
    • 안에 위치한 인스턴스에 퍼블릭 IP부여 가능
    • 웹서버, 어플리케이션 서버 등 유저에게 노출되어야 하는 인프라
  • 프라이빗 서브넷 : 외부에서 인터넷을 통해 연결할 수 없는 서브넷

    • 외부 인터넷으로 경로가 없음
    • 퍼블릭 IP 부여 불가능
    • 데이터베이스, 로직 서버 등 외부에 노출 될 필요가 없는 인프라

인터넷 게이트웨이

  • VPC가 외부의 인터넷과 통신할 수 있도록 경로를 만들어주는 리소스
  • 기본적으로 확장성과 고가용성이 확보되어 있음
  • IPv4, IPv6 지원
  • Route Table에서 경로 설정 후에 접근 가능
  • 무료

기본 VPC와 커스텀 VPC

  • 기본 VPC
    • AWS 계정 생성시 자동으로 생성되어 있음
    • 기본적으로 각 가용영역마다 서브넷을 생성
      • 모든 서브넷에 인터넷 접근이 가능함(= 퍼블릭 서브넷)
  • 커스텀 VPC
    • 직접 생성
    • 기본적으로 인터넷에 연결되어 있지 않음
      • 인터넷 게이트웨이와 라우팅 설정 없이 퍼블릭 서브넷 생성 불가능
      • 즉 별도의 조치 없이 인터넷으로 연결 가능한 EC2 생성 불가능

NAT Gateway

  • 프라이빗 서브넷의 리소스가 외부의 인터넷과 통신하기 위한 통로
  • NAT Instance는 단일 EC2 인스턴스 / NAT Gateway는 AWS에서 제공하는 서비스
    • NAT Gateway는 고가용성이 확보된 관리형 서비스
  • NAT Gateway/Instance는 모두 서브넷 단위
    • Public Subnet에 있어야 함
    • 고가용성 확보를 위해서는 두 개 이상의 가용영역 필요
  • 비용 발생 : $0.059/시간, $0.045/1GB 트래픽 처리

  • 위 다이어그램에서 잘못된 점이 무엇일까요?

Bastion Host

  • 프라이빗 서브넷 안의 리소스에 접근하기 위한 EC2 인스턴스
  • 퍼블릭 서브넷에 위치해야 함

보안 그룹

  • Network Access Control List(NACL)와 함께 방화벽의 역할을 하는 서비스
  • Port 허용
    • 기본적으로 모든 포트는 비활성화
    • 선택적으로 트래픽이 지나갈 수 있는 Port와 Source를 설정 가능
    • Deny는 불가능 -> NACL로는 가능
  • 인스턴스 단위
    • 하나의 인스턴스에 하나 이상의 보안그룹 설정 가능
      • 설정된 인스턴스는 설정한 모든 보안그룹의 룰을 적용 받음
    • NACL의 경우 서브넷 단위
  • 기본적으로 VPC 단위 : VPC 안에서 생성하고 관리
    • 단 VPC간 보안그룹 공유 기능으로 여러 VPC에서 사용 가능

Stateful

  • 보안그룹은 stateful
  • Inbound로 들어온 트래픽이 별 다른 Outbound설정 없이 나갈 수 있음
  • NACL은 stateless
  • Ephemeral Port : 클라이언트가 네트워크 통신 시 동적으로 할당하는 임시 포트
  • Well-Known Port : 특정 서비스나 어플리케이션에 고정된 포트 번호

접두사 목록

  • 하나 이상의 CIDR블록의 집합
  • 보안 그룹 혹은 Route Table에서 많은 대상을 참조하기 위해 사용
  • 두 가지 종류
    • 고객 관리형 : 직접 IP주소를 생성/수정/삭제 할 수 있으며 다른 계정과도 공유 가능
    • AWS 관리형 : AWS의 서비스들을 위한 IP목록. 수정, 삭제, 업데이트가 불가능함
      • DynamoDB, S3, CloudFront
  • IPv4, IPv6 둘 다 사용가능, 단 한 접두사 목록에 두 가지 타입을 동시에 사용 불가능
  • 생성 시점에 최대 엔트리 숫자를 지정

네트워크 ACL(NACL)

  • 보안 그룹처럼 방화벽 역할을 담당
  • 서브넷 단위
    • 즉, 인스턴스 단위로 제어 불가능
    • 다양한 서브넷에 연동 가능(1:N)
  • 포트 및 아이피를 직접 Deny 가능
    • 외부 공격을 받는 상황 등 특정 아이피를 블록하고 싶을 때 사용
  • Stateless
    • 들어오는 트래픽과 나가는 트래픽을 구분하지 않음
    • 즉, 일반적으로 Outbound에 Ephemeral Port 범위를 열어 주어야 정상적으로 통신 가능

NACL 규칙

  • 규칙 번호 : 규칙에 부여되는 고유 숫자이며 규칙이 평가되는 순서 (낮은 번호 부터)
    • AWS 추천은 100단위 증가
  • 유형 : 트래픽 유형(예: ssh=22, DNS=53, UDP=17 등)
  • 프로토콜 : 통신 프로토콜
  • 포트 범위 : 허용 혹은 거부할 포트 범위
  • 소스 : IP 주소의 CIDR블록
  • 허용/거부 : 허용 혹은 거부 여부

  • 위 사진에서 112.12.35.4 사용자의 접속을 제한하고 싶다, 어떤 조치를 취하면 될까

NACL 고려할 점

  • stateless 방화벽이기 때문에 원활한 통신을 위해서는 outbound도 신경을 써야함
    • 임시포트 Allow
    • Linux : 32768~61000
  • 서브넷에서 나가거나 들어오는 트래픽에만 적용
    • 즉 서브넷 내부의 트래픽에 대해서는 적용되지 않음
  • 다양한 서브넷으로 구성 되어있는 멀티 티어 아키텍처라면 더 많은 고민이 필요함
    • 따라서 가능한 보안그룹으로 먼저 처리 후 꼭 필요할 때 NACL 활용
  • 하나의 서브넷은 하나의 NACL만 연동 가능, 단 하나의 NACL은 여러 서브넷에 연동 가능

VPC Endpoint

  • AWS 서비스와 연결 하려면 외부 인터넷을 거쳐야 한다
  • VPC Endpoint는 외부 인터넷을 거치지 않고 AWS 서비스에 연결시켜주는 리소스
  • Interface Endpoint : ENI(Elastic Network Interface) 기반
    • Private IP를 만들어 서비스로 연결
    • 많은 서비스들을 지원
    • 서브넷 지정 필요
  • Gateway Endpoint : 라우팅 테이블에서 경로의 대상으로 지정하여 사용
    • S3 및 DynamoDB 만 지원
    • 정책 적용 가능(보안그룹X)
  • 상시 비용 발생

VPC Peering

  • 두 개의 다른 VPC를 연결하여 VPC안의 리소스끼리 통신이 가능하도록 설정하는 것
  • 다른 리전, 다른 계정의 VPC끼리 연결 가능
  • CIDR Range 중첩 불가능
  • Transitive Peering 불가능
    • 통신을 위해서는 직접 연결되어 있어야 함
    • 혹은 Transit Gate 사용



AWS VPN

Site-to-Site VPN

  • 데이터센터와 AWS를 연결하는 하드웨어-하드웨어 연결(1:1연결)
  • IPSec프로토콜 사용

Client VPN

  • AWS와 온프레미스/AWS VPN장비와 사용자의 PC를 연결하는 하드웨어-소프트웨어 연결(1:N)
  • PC가 네트워크 내부에 있는 것 처럼 작동
  • TLS 프로토콜 사용

AWS Direct Connect

  • AWS와 온프레이스간에 DX Location을 경유한 전용선을 통해 연결
  • 외부 인터넷과 분리되어 있음
    • 외부에서 접근이 불가능하기 때문에 높은 보안
    • 인터넷 환경에 상관 없이 일정한 속도 보장
  • Direct Connect gateway : 여러 리전의 VPC를 한번에 Direct Connect로 연결할 수 있는 서비스
  • 성능 좋고 빠른 대신 비싸고 설치에 오래 걸림

AWS Transit Gateway

  • 중앙 허브를 통해 VPC들과 온프레미스 네트워크를 연결하는 서비스
  • 복잡한 Peering 관계를 제거하여 간소화

온프레미스에서 Amazon EFS 접근

VPC 설계시 고려할 점

  • VPC간의 IP Range
    • VPC간 Peering을 위해서는 서로 IP Range가 겹치지 않아야 함
  • 고가용성을 위한 서브넷 및 어플리케이션 티어
    • 고가용성
      • 적어도 3개 이상의 가용영역에 분산 필요 + 추가 가용영역
    • 어플리케이션 티어
      • 보통 3Tier 아키텍처가 기본 + 추가로 예비 티어
  • 서브넷 단위는 /20 or /24
    • /20 : 많은 IP 숫자
    • /24 : 알아보기 쉬움
  • 어디서 부터 시작해야 할지 모를때는 IP 레인지를 서브넷별로 나누는것을 추천
profile
재열이

0개의 댓글