스터디/AWS SAA

섹션 27: 네트워킹 - VPC (상)

blablax5 2024. 1. 20. 09:08

CIDR, 비공개 및 공개 IP

  • 클래스 없는 도메인 간 라우팅 (CIDR)
  • CIDR은 주소/숫자로 표시
  • 단순한 IP 범위를 정의하는데 도움을 줌
  • IP 범위 예) /0, /24, /32
    • 0.0.0.0/0 => 모든 IP
    • 192.168.0.0/32 (2의 0승) => 192.168.0.0 (1개)
    • 192.168.0.0/31 (2의 1승) => 192.168.0.0 ~ 192.168.0.1 (2개)
    • 192.168.0.0/30 (2의 2승) => 192.168.0.0 ~ 192.168.0.3 (4개)
    • 192.168.0.0/29 (2의 3승) => 192.168.0.0 ~ 192.168.0.7 (8개)
    • 192.168.0.0/29 (2의 4승) => 192.168.0.0 ~ 192.168.0.15 (16개)
    • …반복
  • 옥텟 네 개의 범위
    • /32: 255.255.255.255
    • /24: 255.255.255.0
    • /16: 255.255.0.0
    • /8: 255.0.0.0
    • /0: 0.0.0.0
  • IANA (Internet Assigned Numbers Authority)
    • 사설 LAN 네트워크 (로컬 네트워크, 공용 인터넷 주소)
    • 특정 값만 허용
    • 10.0.0.0/8 ~ 10.255.255.255 => 대규모 사설 네트워크
    • 172.16.0.0/12 ~ 172.31.255.255 => AWS 제공 사설 IP
    • 192.168.0.0/16 ~ 192.168.255.255 => 홈 네트워크

기본 VPC 개요

  • 계정에 자동으로 생성되는 기본 VPC가 있음
  • 기본 VPC는 처음부터 인터넷에 연결되어있다.
    • 그래서 EC2를 생성하면 공용 IPv4 주소를 얻는 것
  • AWS 네트워킹을 조금이라도 알면 VPC는 직접 만드는게 좋다.
  • 서브넷이 기본적으로 3개가 있는데 기본 VPC에 연결된다.
    • 서브넷에는 기본적으로 고유 IPv4 CIDR이 있다.
    • 서브넷 마다 다른 AZ에 위치하고 있는데 이유는 가용성 높은 아키텍처를 만들 수 있어서
    • Route Tables
      • 트래픽이 VPC를 통해 경로를 선택하도록 돕는다.
    • 인터넷 게이트웨이
      • VPC에 위치한 EC2 인스턴스에 인터넷 액세스 제공
    • Subnet associations
      • 라우팅 테이블은 명시적으로 연결된 서브넷은 없지만
      • 암시적으로 연결된 경우는 있다.
      • 서브넷에 할당된 라우팅 테이블이 없어서 암시적으로 연결한 것

VPC 개요

  • VPC (Virtual Private Cloud)
  • 리전당 최대 5개까지 가능
  • VPC마다 할당된 CIDR은 다섯 개
    • CIDR의 최소 크기는 /28
    • IP 주소는 최소 16개에서 최대 65,536 (/16)개
  • 사설 IPv4 범위만 허용
    • 범위 종류
      • 10.0.0.0/8 ~ 10.255.255.255 => 대규모 사설 네트워크
      • 172.16.0.0/12 ~ 172.31.255.255 => AWS 제공 사설 IP
      • 192.168.0.0/16 ~ 192.168.255.255 => 홈 네트워크
  • VPC CIDR가 다른 VPC나 네트워크 혹은 기업 네트워크와 겹치지 않도록 주의 필요

서브넷 개요

  • 서브넷이란? VPC 내부에 있는 IPv4 주소의 부분 범위
    • 이 범위 내에서 AWS가 IP 주소 5개를 예약을 함
      • 1번째 (10.0.0.0): 네트워크 주소
      • 2번째 (10.0.0.1): VPC 라우터용으로 예약
      • 3번째 (10.0.0.2): Amazon 제공 DNS에 매핑
      • 4번째 (10.0.0.3): 당장 사용하지 않지만 필요할지 몰라서 예약
      • 5번째 (10.0.0.255): 네트워크 브로드캐스트 주소 (AWS는 지원하지 않음 예약만 함)
    • 처음 네 개, 마지막 한 개를 서브넷 마다 예약
      • 예약한 IP주소는 사용 못하고, EC2 인스턴스에 할당하지도 못함
  • EC2 인스턴스 서브넷에서 IP주소가 29개가 필요할 때 /27 서브넷은 사용하지 못한다.
  • /27은 32개인데 5개를 AWS에서 예약을 하기 때문

인터넷 Gateway 및 라우팅 테이블

  • 인터넷 Gateway는 VPC의 리소스를 인터넷에 연결하도록 허용하는 EC2, 람다 함수 등 이다.
    • 수평으로 확장되고 가용성과 중복성이 높음
  • VPC와는 별개로 생성을 해야함
  • VPC는 인터넷 Gateway 하나에만 연결이 된다.
  • 인터넷 Gateway 자체는 인터넷 액세스에 허용하지 않음
    • 공용 서브넷에 공용 EC2 인스턴스를 만듬
    • 라우팅 테이블을 수정해서 EC2 인스턴스를 라우터에 연결
    • 라우터와 인터넷 Gateway에 연결

Bastion 호스트

  • Public Subnet의 EC2에서 Private Subnet의 EC2에 연결을 하는 것
    • 여기서 Public Subnet에 있는 EC2가 Bastion 호스트
  • USERS(SSH) -> Public Bastion Host EC2 -> Private EC2
  • 보안을 위해 기업의 퍼블릭 CIDR 액세스만 허용하거나, 사용자의 인터넷 액세스만 허용을 하는게 좋다.

구형 NAT 인스턴스

  • NAT는 네트워크 주소 변환을 뜻한다.
  • NAT 인스턴스는 사설 서브넷 EC2 인스턴스가 인터넷에 연결되도록 해준다.
    • 소스/목적지 확인을 비활성화 해야지 정상으로 작동한다.
  • NAT 인스턴스는 고정된 탄력적 IP를 연결 해야한다.
  • NAT 인스턴스가 하는 일은 네트워크 패킷의 재작성이다.
    • 아래 사진을 보면 10.0.0.20이 50.60.4.10로 요청하는걸 라우팅 테이블로 확인하여
    • 탄력적 IP인 12.34.56.78로 50.60.4.10 요청하고 반환도 해준다.
      Pasted image 20240127025442.png
  • 2020년 12월 31일로 표준 지원이 종료됐고 NAT Gateway를 권장
    • 가용성이 높지 않음
    • 초기화 설정으로 복원 할수 없음
    • 대역폭이 작은 인스턴스는 작음

NAT Gateway

  • AWS의 관리형 NAT 인스턴스이며 높은 대역폭을 가지고 있음
    • 가용성이 높으며 관리할 필요가 없음
    • 특정 AZ에서 생성되며 탄력적 IP를 이어 받는다.
  • EC2 인스턴스와 같은 서브넷에서 사용은 안되고, 다른 서브넷에서 액세스 할 때 도움이 됨
  • Private Subnet => NAT Gateway => Internet Gateway
    • NAT Gateway에는 인터넷 게이트웨이가 필요
  • 아래의 사진과 같이 Public Subnet 안에 NAT Gateway가 Router로 가서 인터넷에 접근
    Pasted image 20240127030038.png

네트워크 ACL(NACL) 및 보안 그룹

  • NACL은 상태 없음 즉 무상태(Stateless)
  • 보안그룹은 상태 유지
  • NACL이란?
    • 서브넷을 오가는 트래픽을 제어하는 방화벽과 비슷함
    • 서브넷마다 하나의 NACL 있음
    • 새로운 서브넷에는 기본 NACL 할당
    • 규칙에 숫자가 있는데 1 ~ 32,766까지 있음 (숫자가 낮을수록 우선순위가 높다)
    • 별표를하면 일치하는 규칙이 없으면 모든 규칙을 거부
    • 규칙은 100씩 추가하는게 좋다, 이유는 사이에 규칙 추가하기가 좋기 때문
    • 좋은 사용 사례
      • 서브넷 수준에서 특정한 IP ckeks
  • 기본 NACL
    • 기본 NACL은 수정하지 않는 것을 추천
    • 인바운드와 아웃바운드의 모든 요청을 허용하는 특수성을 가짐
    • 시험에서 기본 NACL이 기본적으로 서브넷과 연결되어 있다고하면 모든 걸 허용한 것
  • 임시 포트
    • 이 포트는 임시라서 클라이언트와 서버 간 연결이 유지되는 동안만 열려 있음
    • OS에 따라 임시 포트 범위는 바뀐다.
      • Windows 10: 49152 ~ 65,635
      • Linux: 32768 ~ 60999
    • 예시
      • Client -> Server로 80 요청을 하면
      • Server -> Client에게 임시포트로 응답을 한다.
        Pasted image 20240127032044.png
    • NACL에서 굉장히 중요한 부분
  • 다중 NACL 및 서브넷
    • 각 NACL 조합이 NACL 내에서 허용이 되어야함
    • CIDR 사용 시 서브넷이 고유의 CIDR을 갖기 때문
    • NACL에 서브넷을 추가하면 NACL 규칙도 업데이트해서 연결 조합이 가능한지 확인이 필요
  • 보안 그룹과 NACL의 차이점
    • 보안 그룹
      • 인스턴스 수준에서 작동
      • 허용 규칙을 지원
      • 상태 유지이며 규칙과 무관하게 트래픽을 허용
      • 모든 규칙이 평가되고 트래픽 허용 여부를 결정
    • NACL
      • 서브넷 수준에서 작동
      • 허용과 거부 규칙을 모두 지원
      • 특정 IP 주소 거부 가능
      • 무상태이며 인바운드와 아웃바운드 규칙을 매번 평가
        • 임시 포트를 리마인더
      • 가장 높은 우선순위를 가진 것으로 먼저 평가 (첫 번째 비교로 결정)
      • 연결된 서브넷의 모든 EC2 인스턴스에 적용