VPC, Subnet, Routing Table, Security Group

Jisu·2024년 2월 12일

배경

최근 사내에서 self-host로 운영중이던 Redis를 AWS Elasticache로 이전하는 작업을 맡게 되었다. Elasticache를 만드는 것 자체는 매우 간단했지만 내부 VPC, Subnet, Security Group에 올바르게 세부 설정하는 것에서 많은 우여곡절을 겪었다. (추가로 redis 사용 경험도 적었기에..) 이에 관련 개념들을 정리해보고자 한다.


VPC (Virtual Private Cloud)

클라우드 컴퓨팅 환경에서 가상의 사설 네트워크를 구축할 수 있는 서비스이다.
네트워크란 컴퓨터같은 IT 장비들이 연결되어 통신할 수 있는 구조를 뜻한다. 원래 자체 네트워크를 만들기 위해서는 실제 컴퓨터들을 연결하는 전선을 까는 등의 큰 작업이 필요한데.. 이를 버튼 몇번 클릭으로 해결해주는 서비스이다!

인터넷에 접속된 모든 컴퓨터는 접속된 네트워크에 따라 각자의 IP 주소를 가지고 있다. AWS에서 제공하는 서버 컴퓨터인 EC2 또한 마찬가지로 IP를 배정할 수 있는 네트워크가 필요한데 그게 바로 VPC 인 것이다.

이 네트워크는 이름처럼 "Private" 하기 때문에 그냥 만들면 일반 사람들에게 노출되지 않는다. 그래서 Internet Gateway 설정을 통해 실제 인터넷과 통신할 수 있다.

EC2 인스턴스를 만들 때 내가 따로 VPC를 만들어서 설정해두지않았다면, 알아서 하나 만들어준다.


Subnet

VPC를 통해 IP 대역을 할당받을 수 있었다. Subnet은 이 VPC의 IP 대역을 쪼개서 만들어진 새로운 IP 대역이다.

이렇게 VPC를 또 쪼개서 배정하는 이유는 관리의 편의성 때문이다.
예를 들어 위 그림에서 Subnet A에는 유저들이 사용하는 서비스를, Subnet B에는 관리자 서비스를 다른 IP 영역에 배포할 수 있다. 그렇게 되면 유저들의 request는 Subent A 대역으로 라우팅 시킴으로서 간단하게 트래픽을 분리할 수 있게 된다.


Routing Table

컴퓨터간 통신에서 데이터는 패킷 단위로 이동한다. 이 패킷 목적지 IP 주소를 담은 데이터베이스가 바로 Routing Table이다.

AWS Subnet의 상세옵션에는 이 Routing Table 설정란이 있다. 한 마디로 여기에 존재하는 IP 대역만으로 Subnet IP 대역이 트래픽을 주고 받을 수 있는 것이다.

위 그림에서 2가지 라우팅 테이블 리스트가 보인다.

1번은 local로 VPC 내부 통신을 위해 자동으로 설정된 값이다.
2번은 모든 IP를 대상으로 인터넷에 이 Subnet이 노출된다는 것을 의미한다. 이는 VPC가 Internet Gateway로 인터넷과 통신을 허용했기 때문이다.

이렇게 VPC와 Subnet을 설정해서 최종적으로 인스턴스에 어떤 IP를 할당할지 결정할 수 있다!


Security Group

Subnet에서 라우팅 테이블에 모든 IP 대상으로 통신을 허용했다. 이러면 문제가 될 수 있는게 이상한 사용자마자도 모두 내가 빌린 인스턴스에 접속할 수 있다. 대표적인게 바로 DDoS이다!

이런 경우를 막기 위해 인스턴스에 들어오고 나가는 트래픽에 대한 보안 옵션을 설정할 수 있는게 Securigy Group이다. 쉽게 말해서 AWS를 통해 컴퓨터를 하나 빌렸는데, 그 컴퓨터에 아무나 접근할 수 없게 방화벽을 세팅하는 일이다.

Security Group은 인바운드 규칙과 아웃바운드 규칙을 정의할 수 있다.
인바운드 규칙은 인스턴스로 들어오는 트래픽을 제어하는 것이고, 아웃바운드 규칙은 나가는 트래픽을 제어하는 것이다.

아래 그림처럼 인스턴스에 어떤 통신 프로토콜로 어떤 port를 개방할지 선택할 수 있다.


Reference

AWS VPC 설명

Subnet 설명

profile
기술 공유를 즐기는 Engineer 장지수입니다!

0개의 댓글