Amazon VPC

문린이·2024년 7월 24일
0

VPC란?

VPC는 AWS 클라우드 내에서 논리적으로 격리된 사용자 전용 가상 네트워크이다. 사용자가 정의한 가상 네트워크에서 AWS 리소스를 시작할 수 있게 해주는 서비스이다.

VPC의 작동 방식

  1. 네트워크 정의

    • 사용자가 IP 주소 범위(CIDR 블록)를 지정하여 VPC 생성
    • 예시: 10.0.0.0/16
  2. 서브넷 구성

    • VPC 내에서 여러 서브넷 생성
    • 각 서브넷은 특정 가용 영역(AZ)에 위치
    • 예시: 10.0.1.0/24 (AZ-a), 10.0.2.0/24 (AZ-b)
  3. 라우팅 테이블

    • 각 서브넷에 대한 트래픽 흐름 제어
    • 로컬 트래픽과 외부 트래픽 경로 정의
    • 예시 (퍼블릭): 10.0.0.0/16 -> local, 0.0.0.0/0 -> igw-12345 (인터넷 게이트웨이)
    • 예시 (프라이빗) : 10.0.0.0/16 -> local, 0.0.0.0/0 -> nat-67890 (NAT 게이트웨이)
  4. 인터넷 게이트웨이

    • VPC와 인터넷 간 통신 가능하게 함
    • 퍼블릭 IP와 프라이빗 IP 간 변환 수행
    • 퍼블릭 서브넷에 연결
  5. NAT 게이트웨이/인스턴스

    • 프라이빗 서브넷의 아웃바운드 인터넷 접근 제공
  6. 보안 그룹과 네트워크 ACL

    • 인스턴스 레벨(보안 그룹)과 서브넷 레벨(NACL)의 보안 제어
  7. VPC 피어링/VPN

    • 다른 VPC 또는 온프레미스 네트워크와 연결
  8. 엔드포인트

    • AWS 서비스에 대한 프라이빗 연결 제공
  9. 흐름 로그

    • 네트워크 트래픽 모니터링 및 로깅

예시

설정

  1. VPC

    • CIDR: 10.0.0.0/16
  2. 서브넷

    • 퍼블릭 서브넷: 10.0.1.0/24 (ap-northeast-2a)
    • 프라이빗 서브넷: 10.0.2.0/24 (ap-northeast-2b)
  3. 인터넷 게이트웨이

    • ID: igw-1a2b3c4d
  4. EC2 인스턴스

    • 퍼블릭 서브넷의 웹 서버
      프라이빗 IP: 10.0.1.100
      퍼블릭 IP: 54.123.45.67

    • 프라이빗 서브넷의 데이터베이스 서버
      프라이빗 IP: 10.0.2.200

  5. 라우팅 테이블

    • 퍼블릭 라우팅 테이블 (rtb-pub12345)
      10.0.0.0/16 -> local
      0.0.0.0/0 -> igw-1a2b3c4d

    • 프라이빗 라우팅 테이블 (rtb-priv67890)
      10.0.0.0/16 -> local
      0.0.0.0/0 -> nat-1x2y3z (NAT 게이트웨이, 퍼블릭 서브넷에 위치)

접근 흐름

1. 클라이언트에서 웹 서버 접근

클라이언트 IP: 203.0.113.10
목적지: http://54.123.45.67 (웹 서버 퍼블릭 IP)

  1. 클라이언트의 요청이 인터넷을 통해 VPC의 인터넷 게이트웨이(igw-1a2b3c4d)에 도달

  2. 인터넷 게이트웨이는 퍼블릭 IP(54.123.45.67)를 프라이빗 IP(10.0.1.100)로 변환

  3. 퍼블릭 라우팅 테이블(rtb-pub12345)을 참조하여 트래픽을 10.0.1.100으로 라우팅

  4. 웹 서버(EC2 인스턴스)가 요청을 받아 처리

2. 웹 서버에서 데이터베이스 서버 접근

출발지: 10.0.1.100 (웹 서버)
목적지: 10.0.2.200 (데이터베이스 서버)

  1. 웹 서버의 요청이 VPC 내부 네트워크로 전송

  2. 퍼블릭 라우팅 테이블(rtb-pub12345)의 로컬 라우트(10.0.0.0/16 -> local)에 따라 처리

  3. VPC 내부 네트워크를 통해 데이터베이스 서버(10.0.2.200)로 직접 라우팅

3. 데이터베이스 서버의 인터넷 접근 (필요시)

출발지: 10.0.2.200 (데이터베이스 서버)
목적지: 인터넷 (예: 8.8.8.8)

  1. 데이터베이스 서버의 요청이 프라이빗 라우팅 테이블(rtb-priv67890) 참조

  2. 0.0.0.0/0 -> nat-1x2y3z 라우트에 따라 NAT 게이트웨이로 전송

  3. NAT 게이트웨이가 자신의 퍼블릭 IP를 사용하여 인터넷으로 요청 전송

  4. 응답이 NAT 게이트웨이를 통해 다시 데이터베이스 서버로 전달

4. 웹 서버의 응답 과정 (아웃바운드 트래픽)

출발지: 10.0.1.100 (웹 서버 프라이빗 IP)
목적지: 203.0.113.10 (클라이언트 IP)

  1. 웹 서버의 응답이 VPC 내부 네트워크로 전송

  2. 퍼블릭 서브넷의 라우팅 테이블(rtb-pub12345) 참조

  3. 트래픽이 인터넷 게이트웨이(igw-1a2b3c4d)에 도달

  4. 인터넷 게이트웨이가 프라이빗 IP(10.0.1.100)를 퍼블릭 IP(54.123.45.67)로 변환

  5. 변환된 패킷이 인터넷을 통해 클라이언트(203.0.113.10)로 전송

  6. 클라이언트가 웹 서버의 퍼블릭 IP(54.123.45.67)에서 온 응답을 받음

추가

CIDR

CIDR은 IP 주소 할당 방법으로, 클래스 기반 주소 지정 방식의 한계를 극복하기 위해 도입되었다.

CIDR 표기법

  • IP 주소/프리픽스 길이

  • 예: 192.168.1.0/24

프리픽스 길이

  • 네트워크 부분의 비트 수를 나타낸다.

  • 범위: 0-32 (IPv4의 경우)

CIDR 계산법

  1. 사용 가능한 IP 주소 수 계산

    • 공식: 2^(32 - 프리픽스 길이) - 2

    • 예: 192.168.1.0/24

    • 32 - 24 = 8

    • 2^8 - 2 (특수목적 IP) = 254개의 사용 가능한 IP 주소

  2. 네트워크 주소와 브로드캐스트 주소 찾기

    • 네트워크 주소: CIDR 블록의 첫 번째 주소

    • 브로드캐스트 주소: CIDR 블록의 마지막 주소

  1. 서브넷 마스크 계산

    • 프리픽스 길이만큼 1을 채우고 나머지는 0으로 채움

    • 예: /24 = 11111111.11111111.11111111.00000000 = 255.255.255.0

  1. IP 범위 계산

    • 시작 IP: 네트워크 주소 + 1

    • 끝 IP: 브로드캐스트 주소 - 1

  2. 예시: 192.168.1.0/24

    • 사용 가능한 IP 주소 수: 2^(32-24) - 2 = 254

    • 네트워크 주소: 192.168.1.0

    • 브로드캐스트 주소: 192.168.1.255

    • 서브넷 마스크: 255.255.255.0

    • IP 범위: 192.168.1.1 - 192.168.1.254

사설 IP

사설 IP (프라이빗 IP) 주소의 개념은 주로 공용 IP (퍼블릭 IP) 주소의 고갈 문제를 해결하기 위해 도입되었다.

  • IP 주소 고갈 문제
    IPv4는 약 43억개의 고유 주소를 제공한다.
    인터넷의 급속한 성장으로 이 주소들이 빠르게 소진되었다.

  • 사설 IP의 도입
    1994년 RFC 1918에서 사설 IP 주소 범위를 정의했다.
    이를 통해 내부 네트워크에서 재사용 가능한 IP 주소 공간을 만들었다.

  • 사설 IP 주소 범위
    10.0.0.0 ~ 10.255.255.255 (10.0.0.0/8)
    172.16.0.0 ~ 172.31.255.255 (172.16.0.0/12)
    192.168.0.0 ~ 192.168.255.255 (192.168.0.0/16)

  • NAT (Network Address Translation)
    사설 IP를 사용하는 디바이스들이 인터넷과 통신할 수 있게 해주는 기술이다.
    하나의 공용 IP로 여러 개의 사설 IP를 사용하는 디바이스들이 인터넷에 접속할 수 있게 한다.

  • 장점
    IP 주소 절약: 하나의 공용 IP로 여러 디바이스가 인터넷을 사용할 수 있다.
    보안 강화: 내부 네트워크 구조를 외부에서 직접 볼 수 없다.
    네트워크 설계 유연성: 조직 내부에서 IP 주소를 자유롭게 할당할 수 있다.

profile
Software Developer

1개의 댓글

comment-user-thumbnail
2024년 7월 25일

좋아요

답글 달기