Skip to main content

AWS 가상 네트워크 VPC

VPC

AWS-ANS_vpc1

  • AWS Cloud 환경에 리전 단위로 VPC에 IP를 CIDR Block으로 할당 (10.0.0.0/16)
  • 가용 영역의 VPC에서 설정한 IP 주소 대역을 사용하여 서브넷 할당
  • AWS Cloud는 인터넷과 통신하고 VPC와 AZ(가용영역)안에서 생성된 서브넷은 프라이빗으로 구성된다.
  • 반대로 AWS 서비스 중에 VPC에 존재하지 않지만 인터넷과 연결되는 서비스는 퍼블릭 서비스라고 한다.

AWS Private Services: VPC에 네트워크 환경을 지원하는 서비스

AWS Public Services: VPC 외부에 위치하며 인터넷으로부터 액세스 가능한 서비스, 대표적으로 Amazon S3, Amazon DynamoDB, Amazon WorkSpaces 등이 있다.

각 가용영역에 위치한 IP를 가진 서비스들끼리는 Routing table을 통해서 통신하며 해당 서비스가 퍼블릭 IP를 가지고 있다면 인터넷 게이트웨이를 통해서 VPC 밖에 있는 서비스와 통신한다.

기본 VPC (Default VPC) 구성

AWS 계정을 생성할 경우 VPC가 각 리전별로 하나씩 생성되게 되고 각 리전별로 가지고 있는 가용영역의 개수만큼 서브넷이 생성되게 되고 VPC의 CIDR Block는 172.31.0.0/16이 되고 가용영역이 세 개 있다고 가정하면 172.31.0.0/20, 172.31.16.0.0/20, 172.31.32.0/20이 생성된다.

이후 서브넷은 NACL(Network Access Control List)이 생성되고 각 서브넷마다 이 NACL과 연결된다. 그리고 이 서브넷에 있는 IP들과 다른 곳에 있는 서비스들과의 통신을 위해 라우팅 테이블이 생성되고 이 라우팅 테이블은 NACL과 연결되게 된다.

라우팅 테이블은 인터넷 게이트웨이와도 연결되어 서브넷에 있는 서비스와 인터넷 게이트웨이와 트래픽을 주고 받을 수 있게 된다. 즉 서브넷에 있는 서비스가 인터넷에 연결되기 위해서는 라우팅 테이블을 거쳐서 인터넷 게이트웨이와 통신하여야 한다.

기본 VPC는 계정 생성 시 리전별로 자동으로 생성되고 기본 VPC의 아이피에 할당되는 172.31.0.0/16은 다른 리전에서도 동일한 아이피 주소로 VPC가 생성되며 다른 AWS 계정마다 똑같은 IP CIDR Block이 부여된다.

VPC끼리 통신하는 VPC Peering시에는 기본 VPC가 아닌 커스텀 VPC를 생성해서 운영하는 것이 권장된다.

기본 라우팅 테이블에서 명시적 연결이 없는 서브넷은 기본 라우팅 테이블을 사용하게 된다. 즉 라우팅 테이블을 지정하지 않은 서브넷은 기본 라우팅 테이블과 연결되며 명시적 서브넷 연결에 등록된 서브넷은 라우팅 테이블과 연결된 것이다.

NACL은 서브넷 레벨에서의 네트워크 방화벽이며 서브넷에 있는 리소스와 통신하기 위해서는 NACL을 거치게 되고 NACL에 존재하는 인바운드 규칙, 아웃바운드 규칙을 통해 보안 규칙을 설정할 수 있다.

VPC

  • AWS 계정의 가상 네트워크
  • IPv4 주소 범위를 CIDR 블록 형태로 지정
  • CIDR 블록 사이즈는 /16 ~ /28 넷마스크
  • VPC 생성 후 CIDR 범위 수정은 불가하나 새 CIDR 블록 추가 가능
  • VPC 생성시 퍼블릭 IP CIDR 블록을 사용했다면 CIDR 블록 추가 시 프라이빗 IP(RFC 1918) CIDR 블록 사용 불가

프라이빗 IPv4 대역 (사설 네트워크)

- 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)
  • IPv6 주소 범위 지정은 옵션
  • VPC를 샹성할 때 테넌시를 전용으로 선택할 경우 EC2를 생성할 때 테넌시 전용으로 생성하게 된다.

서브넷

  • 서브넷 생성시 다른 서브넷끼리는 IP 대역이 겹쳐서는 안된다.
  • 서브넷: VPC의 IP 주소 범위
  • CIDR 블록 형태로 IP 주소 범위 지정
  • CIDR 블록 사이즈는 /16 ~ /28 넷마스크 사용 가능
  • 서브넷 생성시 가용영역(AZ)을 지정하며 1개의 가용영역만 지정 가능
  • 서브넷 범위는 VPC의 CIDR 블록 주소 내에서 생성 가능
  • 서브넷 끼리의 IP 주소 중첩(Overlapping)하여 생성 불가
  • 생성된 서브넷의 IPv4 CIDR 블록 주소는 추가하거나 수정이 안되며 삭제 후 새로 생성만 가능
  • 서브넷 생성 후 AWS는 네트워킹 목적으로 처음 4개의 IP 주소와 마지막 1개 IP주소를 예약

예를 들어 10.0.1.0/24 서브넷을 생성

  1. 10.0.1.0 - Network ID (Netmask)
  2. 10.0.1.1 - Gateway
  3. 10.0.1.2 - DNS
  4. 10.0.1.3 - Reserved
  5. 10.0.1.255 - BroadCast

서브넷 생성시 퍼블릭 IPv4 주소 자동 할당은 EC2 인스턴스 생성시 자동으로 퍼블릭 IP를 할당할 것인지 설정하게 된다.

Routing Table

  • 라우팅 규칙을 통해 네트워크 트래픽이 전송되는 위치를 결정
  • Destination (대상 주소)에는 트래픽을 이동할 대상 IP 주소 (대상 CIDR)의 범위를 나타내며 IPv4 IP, IPv6 IP, Prefix List(IP CIDR 목록 지정)범위 등이 있다.
  • Target에는 대상 트래픽을 전송할 때 사용할 게이트웨이, 네트워크 인터페이스등이 있다.
  • Prefix List(관리형 접두사 목록)과 연결할 경우 해당 접두사 목록에 등록된 모든 IP CIDR Block과 연결할 수 있다.

Internet Gateway

  • VPC와 인터넷 간에 통신을 할 수 있게 함
  • 퍼블릭 IPv4가 할당된 인스턴스에 대해 1:1 NAT (네트워크 주소 변환)을 수행
  • 라우팅 테이블의 대상 (Target) 역할
  • 트래픽을 인터넷에 전달하기 위해서는 서브넷의 라우팅 테이블에 인터넷 게이트웨이를 대상(Target)으로 추가해야 함
  • 퍼블릭 서브넷: 서브넷이 인터넷 게이트웨이로 바로 연결(라우팅)되는 경우
  • 프라이빗 서브넷: 서브넷이 인터넷 게이트웨이로 바로 연결(라우팅)되지 않음
  • 라우팅 테이블에 만약 10.1.0.0/16 local행과 0.0.0.0/0 igw가 있을 때 local로 타겟팅되는 IP CIDR Block과 인터넷 게이트웨이로 타겟팅되는 IP CIDR Block이 중복될 경우 더 구체적인 IP CIDR Block이 우선순위를 가지게 됩니다. 즉 0.0.0.0/0보다 10.1.0.0/16이 더 구체적이므로 해당 IP CIDR Block은 local로 향하게 됩니다.

IPv4 vs IPv6

IPv4

  • 기본값이며 모든 VPC에 필요하며 제거할 수 없습니다.
  • VPC/서브넷 CIDR 블록 크기는 /16에서 /28까지 가능합니다.
  • VPC에 대한 프라이빗 IPv4 CIDR 블록을 선택할 수 있습니다.
  • 사설 및 공용 IP를 모두 지원합니다.
  • 인스턴슨느 프라이빗/퍼블릭 IPv4 주소에 해당하는 Amazon 제공 프라이빗 DNS 호스트 이름을 수신합니다.
  • AWS Site-to-Site VPN 연결 및 고객 게이트웨이, NAT 디바이스 및 VPC 엔드포인트에 대해 지원합니다.

IPv6

  • Opt-in only
  • VPC CIDR 블록 크기는 /56으로 고정되고 서브넷 블록은 /64로 고정됩니다.
  • IPv6 CIDR 블록은 Amazon의 IPv6 주소 풀에서 VPC에 할당됩니다. 범위를 선택할 수 없습니다.
  • 공인 IP 주소와 사설 IP 주소를 구분하지 않습니다. IPv6 주소는 공용입니다.
  • Amazon 제공 DNS 호스트 이름은 지원되지 않습니다.
  • AWS Site-to-Site VPN 연결 및 고객 게이트웨이, NAT 디바이스 및 VPC 엔드포인트에는 지원되지 않습니다.

VPC

  • You can add secondary VPC CIDRs to existing VPC
  • CIDR block must not overlap with existing CIDR or peered VPC CIDR
  • If Primay CIDR is from RFC1918 then you can not add secondary CIDR from other RFC1918 IP ranges (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16)
  • CIDR block must not be same or larger than the CIDR range of routes in any of the VPC Route tables
  • You can have total 5 IPv4 and 1 IPv6 CIDR block for VPC