[AWS] Network - VPC 구성요소

bluewhale·2021년 6월 14일
0

AWS

목록 보기
10/19
post-thumbnail

AWS VPC란?

AWS VPC는 하나의 리전에서 AWS 리소스를 프로비저닝하기 위해 논리적으로 격리된 가상의 네트워크 공간을 의미한다. 거의 모든 AWS 리소스는 VPC가 제공하는 네트워크 레이어 안에서 프로비저닝 되기 때문에 VPC는 AWS 서비스를 사용하는데 있어 매우 중요하다.

AWS VPC는 IP 주소 범위 지정, 서브넷 생성, 라우팅 테이블 및 네트워크 게이트웨이 구성 등의 네트워크 환경을 제어와 관련된 기능들을 모두 제공한다.

Default VPC

VPC는 사용자 편의성을 위해 각 리전에 대해서 Default VPC를 제공한다. Default VPC는 계정이 생성되면 자동으로 셋업되며 모든 서브넷에서 자동으로 설정된 인터넷 게이트웨이를 통해 인터넷 접근이 가능하다. Default VPC에 프로비저닝된 EC2 인스턴스는 Public IPPrivate IP를 모두 갖고 있다. 삭제시 복구가 불가능하다.

Custom VPC

사용자가 직접 생성하여 관리하는 VPC이다. Custom VPC에서는 네트워크와 관련된 모든 세팅을 사용자가 직접 설정해야 한다.

VPC 구성 요소

VPC를 구성하는 주요 요소들은 다음과 같다.

Availability Zone

AZ는 고가용성을 위해 물리적으로 분리되어 있는 인프라가 모여있는 데이터 센터이다. 하나의 리전은 기본적으로 2개 이상의 AZ를 포함하고 있다. 서울 리전의 경우, 2020년 4번째 AZ이 새롭게 신설되었다.

Subnet

VPC의 하위 단위로, 서브넷은 VPC에서 CIDR 블럭 지정을 통해 주소공간 중 일부를 할당받은 분할된 네트워크 공간이다.

서브넷은 인터넷 접근 가능 여부에 따라 Public SubnetPrivate Subnet으로 구분된다.

Subnet의 종류

Public Subnet

라우팅 테이블을 통해 인터넷 게이트웨이와 연결되어, 외부 인터넷 접근이 가능한 서브넷이다.

Private Subnet

인터넷 게이트웨이와 연결되어 있지 않아, 외부 인터넷과의 직접적인 연결이 제한된 서브넷이다.

Private 서브넷은 직접적인 인터넷 연결이 제한되지만, Public 서브넷에 위치한 NAT 게이트웨이를 통해 예외적으로 아웃바운드 트래픽을 전송할 수 있다. 예를 들어, Private 서브넷에 속한 EC2 인스턴스에서 소프트웨어 업데이트가 필요한 경우, Public 서브넷에 위치한 NAT 게이트웨이를 거쳐 인터넷에서 접근하는 것이 가능하다.

VPN-only Subnet

인터넷 게이트웨이와의 연결은 없지만, Site-to-Site VPN 기반으로 virtual private gateway와 연결된 서브넷으로 제한된 외부 네트워크와의 통신이 가능하다.

특징

AZ 단위

하나의 서브넷은 하나의 AZ에 속하며, 다른 AZ으로 확장이 불가능하다.

주소 공간 할당

서브넷은 자신이 속한 VPC에서 CIDR 블럭 지정을 통해 VPC의 주소공간 중 일부를 할당받아 사용한다. 하나의 서브넷은 최대 VPC의 주소공간을 모두 할당받을 수 있지만, VPC는 여러 개의 서브넷으로 구성되는 것이 일반적이다.

Route Table

모든 서브넷은 필수적으로 하나의 서브넷 라우팅 테이블을 갖는다. 라우팅 테이블은 트래픽을 원하는 목적지로 전달하기 위해 활용된다. 라우팅 테이블과 관련된 설명은 아래에서 보다 자세히 다루었다.

NACL

NACL은 Network Access Control List의 약자로, 서브넷에 대한 인바운드 및 아웃바운드 트래픽을 제어하기 위한 방화벽 역활을 하는 보안 계층에 해당한다.

특징

서브넷 단위 구성

NACL은 서브넷 단위로 트래픽을 제어하며, 하나의 서브넷은 하나의 NACL만을 가질 수 있다.

Default NACL 제공

NACL은 서브넷 단위의 네트워크 정책과 관련된 필수적인 계층으로 VPC 생성 시 default NACL이 함께 생성된다. 기본값으로 모든 인바운드/아웃바운드 트래픽을 허용한다. 사용자가 직접 NACL을 명시하지 않은 서브넷은 모두 기본 NACL과 자동적으로 연결된다.

규칙 목록 기반 트래픽 제어

NACL은 규칙번호, 트래픽 유형, 프로토콜, 포트, 소스, 대상 등이 정의된 규칙 목록을 갖고 있다. 규칙 번호는 우선순위에 해당하며, 낮은 번호를 갖는 규칙이 높은 번호의 규칙보다 우선시 된다. NACL에서는 우선 순위에 따라 규칙을 적용하여 인바운드 및 아웃바운드 트래픽을 제어한다.

Stateless

NACL은 Stateless하다. NACL에서는 인바운드와 아웃바운드 트래픽은 모두 NACL에 설정된 규칙에 의해서만 제어된다. 즉, 인바운드 트래픽이 허용된 요청이라고 하더라도, 아웃바운드 규칙에 대한된 경우 응답을 허용하지 않을 수 있다. 이러한 성질은 이어서 설명할 Security Group과 구분되는 중요한 특징이다.

사용량 제한

NACL은 하나의 VPC에서 최대 200개까지 생성할 수 있다. 하나의 NACL을 인바운드/아웃바운드 규칙을 각각 20개까지 가질 수 있다.

예시

아래의 예시는 모든 인바운드/아웃바운드 요청을 허용하는 Default NACL의 규칙 목록을 캡처한 결과이다.

Security Group

인스턴스에 대한 인바운드 및 아웃바운드 트래픽을 제어하는 가상의 방화벽 계층이다. 네트워크 제어를 위해 활용된다는 점에서 NACL과 유사하지만 다른 특징을 지니고 있다.

특징

인스턴스 단위 제어

서브넷 단위로 트래픽을 제어하는 NACL과 달리, 보안 그룹은 인스턴스 단위로 트래픽을 제어한다. 하나의 서브넷은 하나의 NACL을 가질 수 있는 반면, 하나의 네트워크 인터페이스(혹은 인스턴스)는 최대 5개의 보안 그룹에 속할 수 있다.

Default Security Group 제공

NACL과 유사하게 VPC 생성시 기본 보안그룹이 함께 생성된다. 기본 보안그룹에서는 동일한 보안 그룹에 속한 모든 인스턴스로부터의 인바운트 트래픽과, 모든 아웃바운드 트래픽을 허용한다.

이와 달리, 사용자 지정 보안 그룹은 기본적으로 모든 인바운드 트래픽을 제한한다.

규칙 목록 기반 트래픽 제어

NACL과 동일하게 규칙 목록을 기반으로 인바운드/아웃바운드 트래픽을 제어한다.

NACL과의 차이점은 규칙 번호가 없어 적용에 대한 우선순위가 존재하지 않는다. 또한, 거부 규칙을 지정할 수 있는 NACL과 달리 허용 규칙만을 지정할 수 있으며, 허용되지 않은 모든 트래픽은 자동적으로 거부된다.

Stateful

사용자가 인스턴스에서 요청을 전송하면, 해당 요청에 대한 응답은 보안그룹에서 설정한 인바운드 규칙과 관계없이 항당 허용된다. 동일하게 인바운드 규칙이 허용된 요청에 대한 응답은 아웃바운드 규칙을 적용받지 않는다.

이는 인바운드와 아웃바운드 트래픽이 독립적(stateless)으로 제어되는 NACL과 가장 구분되는 특징 중 하나이다.

사용량 제한

보안 그룹은 하나의 리전에서 기본적으로 최대 2500개까지 생성할 수 있다. 보안 그룹별로 인바운드 및 아웃바운드 규칙을 각각 60개까지 설정할 수 있으며, 모든 네트워크 인터페이스(혹은 인스턴스)는 최대 16개의 보안그룹에 속할 수 있으며 기본 값은 5개이다.

예시

아래의 예시는 하나의 보안그룹에 대해 인바운드 및 아웃바운드 규칙목록을 설정한 그림이다.

Internet Gateway

외부 인터넷과 VPC의 네트워크 연결을 담당하는 게이트웨이이다. VPC에 속한 인스턴스들은 인터넷 게이트웨이와의 연결을 통해서만 인터넷에 접근할 수 있다. VPC와 인터넷 게이트웨이 사이의 연결은 라우팅 테이블 설정을 통해서 이뤄진다. 일반적으로 인터넷 게이트웨이와의 연결 여부를 기준으로 Public SubnetPrivate Subnet이 구분된다.

특징

고가용성

인터넷 게이트웨이는 수평적 확장이 가능한 고가용성 게이트웨이이다.

무료

AWS에서는 인터넷 게이트웨이를 생성에 대한 비용을 따로 부과하지 않는다.

Public IP Address

EC2 인스턴스가 인터넷 게이트웨이를 통해 외부 인터넷으로 접근하기 위해서는 Public IP Address 혹은 Elastic IP Address를 가져야 한다.

Network Address Translation

인터넷 게이트웨이는 EC2 인스턴스의 Public IP 주소 혹은 Elastic IP 주소로 전달된 요청을 인스턴스의 VPC Private IP 주소로 변환하는 기능을 수행한다.

사용자가 외부 인터넷에서 EC2 인스턴스의 Public IP 주소로 요청을 보낼 경우, 인터넷 게이트웨이가 이를 VPC 내부의 Private IP 주소로 변환하는 NAT 과정 을 거친다.

Default VPC vs Nondefault VPC

리전 별로 생성되는 Default VPC와 달리 사용자가 직접 생성한 Nondefault VPC에서는 인터넷 게이트웨이과 관련된 설정을 직접 추가해야 한다. 아래의 그림은 Default VPC와 Nondefault VPC에서 인터넷 관련 설정 차이를 비교한 그림이다.

Route Table

VPC의 구성요소로, 라우팅 테이블은 서브넷 혹은 게이트웨이에서 발생한 아웃바운드 트래픽을 어디로 전송할지 정의한 테이블이다.

라우팅 테이블의 주된 목적은 패킷을 원하는 목적지로 전달하는 것이며, 액세스 규칙을 정의한 NACL, 보안그룹과 함께 사용되어 네트워크 트래픽을 제어한다.

특징

목적지 지정

라우팅 테이블은 DestinationTarget에 대한 목록을 기반으로 패킷을 지정된 목적지로 전달한다.

VPC 내부에서 다른 서브넷 혹은 인터넷 게이트웨이와 통신하기 위해서는 반드시 라우팅 테이블에 관련 규칙을 추가하여야 한다.

Subnet/Gateway Route Table

라우팅 테이블은 크게 Subnet Route TableGateway Route Table로 구분된다. 라우팅 테이블은 서브넷 및 게이트웨이 단위로 적용된다.

모든 서브넷은 하나의 서브넷 라우팅 테이블을 가지며, 인터넷 게이트웨이와 가상 프라이빗 게이트웨이는 하나의 게이트웨이 라우팅 테이블을 갖는다.

Main Route Table

AWS에서는 VPC가 생성될 때에 main route table이라 불리는 기본 라우팅 테이블을 제공하며, 사용자가 직접 라우팅 테이블을 지정하지 않은 모든 서브넷은 자동으로 메인 라우팅 테이블과 연결된다.

References

[AWS강좌]6.VPC(1)

공식문서: VPC의 보안 그룹

공식문서: VPC Network ACL

공식문서: Route tables for your VPC

공식문서: Internet gateways

profile
안녕하세요

0개의 댓글