VPN이란?
VPN은 Virtual Private Network의 약자이고, 가상의 사설망이다.
회사 네트워크를 예로 들어 주고 있는데, 회사 보안상의 이유로 직원간의 네트워크를 분리하고 싶다면,
기존 인터넷 선 공사도 다시 해야하고 건물의 내부 선을 다 뜯어 고쳐야하고 전용선을 깔아주어야 하기 때문에 가상의 망 VPN을 사용한다.
VPN은 네트워크A와 네트워크B가 실제로 같은 네트워크상에 있지만, 논리적으로 다른 네트워크인것 처럼 동작한다.
VPC란?
VPC는 Virtual Private Cloud의 약자이고, AWS의 네트워크 서비스이다.
VPC에 필요한 사전 지식
Region
AWS의 물리적 서버가 위치하고 있는 국가 단위의 위치
Availability Zone
Region내의 물리적 서버의 지역 단위 위치
Subnet
- public subnet: 외부가 개방되어 있어 인터넷 연결이 가능한 서브넷
- private subnet: 내부가 차단되어 있어 직접적으로 인터넷에 연결하지 않은 서브넷
VPC를 적용하면 VPC별로 네트워크를 구성할 수 있고, 각각의 VPC에 따라 다르게 네트워크 설정을 줄 수 있다.
또한 각각의 VPC는 완전히 독립된 네트워크처럼 작동하게 된다.
서브넷
VPC를 만들고 서브넷을 만들 수 있는데, 서브넷은 VPC를 잘게 쪼개는 과정이라고 합니다.
이유는 더 많은 네트워크 망을 만들기 위해서.
각 서브넷은 가용 영역 안에 존재하며, 서브넷 안에 RDS, EC2와 같은 리소스들을 위치시킬 수 있다.
라우팅 테이블, 라우터
네트워크 요청이 발생하면 데이터는 우선 라우터로 향하고, 라우터란 목적지이고 라우팅 테이블은 이정표라고 한다.
데이터는 라우터로 향하게 되고, 네트워크 요청은 각각 정의된 라우팅 테이블에 따라 작동. 어떤 서브넷의 라우팅 테이블
172.31.0.0/16 즉, VPC안의 네트워크 범위를 갖는 네트워크 요청은 로컬에서 찾도록 되어있다. 하지만 그 이외 외부로 통하는 트래픽을 처리할 수 없다. 이때는 인터넷 게이트웨이를 사용한다.
인터넷 게이트웨이
인터넷 게이트웨이는 VPC와 인터넷을 연결해주는 문. 서브넷의 라우팅 테이블에 범위가 0.0.0.0/0이고 타겟이 IGA A(인터넷 게이트웨이 A)이면, A로 향하라는 뜻.
네트워크 ACL과 보안그룹
네트워크 ACL과 보안그룹은 방화벽과 같은 역할. 인바운드 트래픽과 아웃바운드 트래픽 보안정책을 설정할 수 있다. 먼저, 보안그룹은 stateful한 방식으로 동작하는 보안 그룹은 모든 허용을 차단하도록 기본 설정 되어있다.(오 이거 인바운드 포스팅 때 공부했던 부분..>!)
또한 네트워크 ACL과 다르게 각각의 보안그룹별로 별도로 트래픽을 설정할 수 있으며 서브넷에서도 설정할 수 있지만 각각의 EC2인스턴스에도 적용할 수 있다.
네트워크 ACL은 Stateless하게 작동하며, 모든 트래픽이 기본 설정 되어있기 때문에 불필요한 트래픽을 막도록 적용해야한다. 서브넷 단위로 적용되며 리소스별로는 설정할 수 없다. 네트워크 ACL과 보안그룹이 충돌한다면 보안그룹이 더 높은 우선순위를 갖는다.
NAT 게이트웨이
NAT 게이트웨이는 프라이빗 서브넷이 인터넷과 통신하기 위한 아웃바운드 인스턴스이다. 프라이빗 네트워크가 외부에서 요청되는 인바운드는 필요없더라도 인스턴스 펌웨어나 혹은 주기적인 업데이트가 필요하여 아웃바운드 트래픽만 허용되어야 할 경우가 있다. 이 때 퍼블릭 서브넷 상에서 동작하는 NAT 게이트웨이는 프라이빗 서브넷에서 외부로 요청하는 아웃바운드 트래픽을 받아 인터넷게이트웨이와 연결
정리
VPC의 목적은 다양할 수 있지만 일반적으로 보안을 위해 AWS 리소스 간 허용을 최소화하고 그룹별로 손쉽게 네트워크를 구성하기 위해 많이 사용한다고 한다. 이외에도 독립적인 VPC간 네트워크 통신을 위한 VPC 피어링, 기존 사용하는 온프레미스와 VPC를 연결하는 AWS Diarect Connect, VPC에서 발생하는 로그를 기록하는 VPC Flow Logs와 같은 서비스가 있다고 한다.
Reference
https://dev.classmethod.jp/articles/for-beginner-vpc-explanation/
'TIL' 카테고리의 다른 글
REST API (0) | 2022.09.02 |
---|---|
도커와 쿠버네티스 (0) | 2022.08.24 |
포트 / 인바운드 규칙 / 아웃바운드 규칙 (0) | 2022.08.24 |
온프레미스(On-premise)란?? (0) | 2022.08.24 |
NGINX 사용 이유 (0) | 2022.08.24 |