[AWS] VPC (Virtual Private Cloud)

나른한 개발자·2023년 4월 3일
1

VPC란?

AWS 내에서 논리적으로 분리된 네트워크 공간이다. VPC를 사용하여 각 리소스를 분리된 네트워크 망에 구성할 수 있고, 서브넷, 라우팅 테이블 등을 설정할 수 있다.

Before & After VPC


VPC가 출시되기 전의 모습은 위 사진과 같다. 각각의 인스턴스들이 복잡하게 연결되어 있으며 직접 인터넷에 연결이 되어있다. 이런 구조는 특정 인스턴스가 수정이 되어야할 때 모든 인스턴스를 수정해야하는 등 관리가 상당히 까다로울 수 밖에 없다.

VPC를 사용하면 네트워크 공간을 분리하여 리소스를 구성할 수 있고, 각 VPC마다 필요한 네트워크 설정을 줄 수도 있다.

이러한 VPC는 각 리전 당 종속되며 여러 리전에 거쳐 확장할 수 없다.

VPC 구성요소

사설 아이피 대역

VPC는 사설 아이피 대역에 맞추어 구축해야한다. 여기서 사설 아이피란, 바깥과 통신할 때 쓰는 주소가 아닌 내부 네트워크 망에서만 사용하는 IP주소라고 할 수 있다.

VPC에서 사용하는 사설 아이피 대역은 다음과 같다.

10.0.0.0 - 10.255.255.255 (10/8 prefix)
172.16.0.0 - 172.31.255.255 (172.16/12 prefix)
192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

한번 설정된 아이피 대역은 수정할 수 없으며, VPC는 리전에 종속되기 때문에 같은 리전에서 VPC의 IP가 겹치면 안된다. 예를 들어 기본 VPC가 172.31.0.0/16으로 생성되어 있다면 우리는 172.31 네트워크 IP주소를 피해서 생성해야 한다. 또한 각 VPC는 독립된 공간을 형성하고 있으므로 서로 다른 VPC간 통신이 필요하다면 VPC Peering을 해주어야 한다.

또한 AWS에서 사용하는 서브넷 마스크는 /16~/28 만을 허용한다는 것도 주의해야 한다.

서브넷


서브넷은 VPC를 잘게 쪼갠 주소 범위이다. VPC라는 큰 네트워크 공간을 작은 블록들로 공간을 나누어 사용할 수 있는 것이다. 서브넷 안에는 EC2, RDS와 같은 리소스들이 배치된다. 서브넷은 하나의 가용영역에만 속할 수 있으며, 여러 가용영역에 거쳐서 생성될 수 없다. 서브넷 역시 VPC처럼 CIDR 블록을 지정할 수 있으며, /16~/28까지의 서브넷 마스크를 지원한다.

서브넷은 VPC를 쪼갠 것이기 때문에 대역폭은 VPC보다 작아야한다.

+) Private Subnet, Public Subnet

  • 프라이빗 서브넷: VPC 내부에서만 통신하며 인터넷과 통신할 수 없는 서브넷
  • 퍼블릭 서브넷: 인터넷과 통신할 수 있는 서브넷

    보통 민감한 데이터는 프라이빗 서브넷에 저장하며, 외부로 데이터를 내보내야 하는 경우가 있다면 NAT Gateway를 사용해서 아웃바운드 통신을 할 수 있도록 한다.

라우터, 라우팅 테이블

VPC 내에서 네트워크 요청을 목적지로 보내는 역할을 한다. 서브넷은 서로 다른 네트워크 영역을 가지고 있기 때문에 한 서브넷에서 다른 서브넷으로 가기 위해서는 라우팅이 필요하다.

라우팅 테이블은 트래픽을 어디로 전송해야할지에 대한 정보를 가지고 있는 표지판 역할을 한다. 예를 들어 10.1.0.0/16 - local 과 같은 규칙을 가진 라우팅 테이블이 있다고 하면 이것은 10.1.0.0/16 이 아이피 대역에 해당하는 아이피들은 local로 보내라는 뜻이다. 0.0.0.0/0 - igw-12341.. 와 같은 규칙이 있다면 이 외 모든 트래픽은 인터넷 게이트웨이를 통해 외부로 보내라는 의미이다.

참고로 VPC내부에는 디폴트 라우팅이 생성되어있기 때문에 별도의 설정없이도 다른 서브넷과의 통신이 가능하다.

인터넷 게이트 웨이

VPC는 격리된 네트워크 환경이기 때문에 VPC 내부에 생성된 리소스들은 인터넷과 통신을 하지 못한다. 이때 인터넷 게이트웨이를 사용하면 내부 인스턴스는 외부와 인터넷 통신을 할 수 있게 된다.

위에서 잠시 살펴본 예시와 같이 라우팅 테이블에 인터넷 게이트 웨이로 향하는 규칙이 있는 서브넷을 퍼블릭 서브넷, 그렇지 않은 서브넷을 프라이빗 서브넷이라고 한다.

Network ACL, Security Group

Network ACL과 Security Group은 모두 VPC의 보안 장치이다. 단 Network ACL은 서브넷 단위로 적용할 수 있는 보안계층이고 Stateless하다는 특징을 가지고 있다. 따라서 허용되어야 하는 각각의 인바운드, 아웃바운드 트래픽을 명시적으로 지정해주어야 한다. 또한 네트워크 ACL를 규칙 순서에 따라 우선순위를 가지며 가장 첫번째로 매칭되는 규칙 적용된다.

하나의 Network ACL은 여러 개의 서브넷과 연결이 가능하지만 반대로 서브넷은 1개의 Network ACL만을 가져야 한다.

Security Group은 인스턴스 단위의 보안계층이며 인스턴스 내외부의 트래픽을 컨트롤하는 방화벽 역할을 한다. Stateful 하기 때문에 Security Group은 연결 상태를 유지하여 자동으로 반환 트래픽을 허용한다.

Network ACL과 Security Group의 규칙이 충돌할 경우 보안 그룹이 더 높은 우선순위를 갖는다.

NAT Gateway


NAT Gateway는 퍼블릭 서브넷 내에서 동작하면서 프라이빗 서브넷이 외부와 통신할 수 있도록 하는 아웃바운드 인스턴스이다. 프라이빗 서브넷은 인터넷과 직접 통신 할 수 없지만 서드파티 API를 사용하거나 소프트웨어 업데이트 등을 위해 아웃바운트 트래픽을 허용해야 할 경우가 있다. 이때 NAT Gateway는 프라이빗 서브넷에서 요청하는 트래픽을 받아 인터넷 게이트 웨이로 보낸다.


참고
https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098
https://inpa.tistory.com/entry/AWS-%F0%9F%93%9A-VPC-%EC%82%AC%EC%9A%A9-%EC%84%9C%EB%B8%8C%EB%84%B7-%EC%9D%B8%ED%84%B0%EB%84%B7-%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4-NAT-%EB%B3%B4%EC%95%88%EA%B7%B8%EB%A3%B9-NACL-Bastion-Host

profile
Start fast to fail fast

0개의 댓글