VPC(Virtual Private Cloud)란?
- 사용자가 정의하는 가상의 네트워크이다.
- AWS가 채택한 네트워킹 방식 중 하나이며, 이를 사용하는 모든 서비스는 VPC 보안 통제 대상이다.
- VPC를 통해 인스턴스가 속하는 네트워크를 구분하여 각 네트워크에 맞는 설정을 부여할 수 있다. 또한, 인스턴스가 속하는 네트워크를 구분하여 시스템 복잡도가 낮아진다.
VPC의 구성 요소
구성 요소를 마을에 비교해보자.
- 우리집 - 인스턴스
- 마을 - 인스턴스가 모인 서브넷
- 동 - 서브넷이 모인 VPC
- 본인 - 인스턴스에서 나온 패킷 or 트래픽
- 초등학교, 중학교 - 인스턴스와 통신할 서비스
- 등교 - 통신
같은 마을(VPC)에 위치한 초등학교는 길을 건널 필요가 없다 → 서브넷 내부 서비스 간의 통신에서는 라우팅이 필요 없다.
다른 동(다른VPC)에 위치한 중학교는 도로나 철로로 등교한다 → 다른 VPC와 통신하기 위해서는 VPC 피어링, 전송 게이트웨이를 통해서 통신한다.
VPC 네트워킹의 3요소
- 공간 : 서비스를 생성할 공간 요소 - VPC와 서브넷
- 연결 : 도로 역할을 하는 연결 요소 - 라우터, 피어링 커넥션
- 컴퓨팅 : 공간상에서 연결 요소를 활용해 트래픽을 전송하는 컴퓨팅 서비스 - 인스턴스
VPC 구성요소들의 구축 과정
VPC
- VPC는 독립된 하나의 네트워크를 구성하는 가장 큰 단위
- region에 종속되며, RFC1918이라는 사설 IP대역에 맞추어 설계한다.
사설 IP 대역
- 10.0.0.0 ~ 10.255.255.255(10/8 prefix)
- 172.16.0.0 ~ 172.31.255.255(182.16/12 prefix)
- 192.168.0.0 ~ 192.168.255.255(192.168/16 prefix
각각의 VPC는 독립적이기 때문에 서로 통신할 수 없다. 통신을 하고싶다면 VPC 피어링 서비스를 통해서 VPC 간에 트래픽을 라우팅할 수 있도록 설정한다.
서브넷(Subnet)
- 서브넷은 VPC의 IP 주소를 나누어 리소스가 배치되는 물리적인 주소 범위
- 서브넷은 Public Subnet과 Private Subnet으로 나뉜다.
- Public Subnet : 인터넷과 연결 되어 있는 서브넷, 인바운드와 아웃바운드 트래픽을 주고 받을 수 있다.
- Private Subnet : 인터넷과 연결 되어있지 않은 서브넷
- 보안을 강화하기 위해서 인터넷 연결 여부로 Subnet을 구분한다
→ 인터넷과 연결되어 외부에 노출되는 면적을 최소화하여 네트워크 망에 함부로 접근하는 것을 막는다.
라우터(Router)
- 라우터는 VPC에서 발생한 네트워크 요청을 처리하기위해 어디로 트래픽을 전송 해야하는지 알려주는 표지판 역할을 수행
- 서브넷에서는 네트워크 트래픽 전달 규칙에 해당하는 라우팅 테이블을 가지고 있으며, 요청이 발생하면 가장 먼저 라우터로 트래픽을 전송한다.
- VPC 내부 네트워크로 해당하는 주소는 local로 향함
인터넷 게이트웨이(Internet Gateway)
- 인터넷 게이트웨이는 VPC 리소스와 인터넷 간 통신을 활성화 하기위해 VPC에 연결하는 게이트웨이이다.
- 외부와 통신하는 Public Subnet의 라우팅 테이블에만 인터넷 게이트웨이로 향하는 규칙을 가진다.
그림에서, 목적지의 IP 주소가 10.0.0.0/16(VPC 내부)에 해당하는지 확인하고, 해당하지 않는 트래픽들은 인터넷 게이트웨이를 통해 외부로 전송된다.
NAT 게이트웨이(NAT 게이트웨이)
- NAT 게이트웨이는 private subnet이 인터넷과 통신할 수 있도록 public subnet에 속한 인스턴스와 통신할 수 있게 해주는 역할을 수행한다.
→ private subnet은 직접 인터넷과 통신할 수 없기때문에 public subnet을 경유하도록 설계 - private subnet에서 발생하는 네트워크 요청이 VPC 내부 주소로 가는 것이 아니라면, public subnet에 존재하는 NAT 게이트웨이로 트래픽을 전송한다.
VPC 엔드포인트(Private Link, VPC Endpoint)
- VPC 엔드포인트는 인터넷 게이트웨이나 NAT 게이트웨이와 같은 다른 게이트웨이 없이 AWS 서비스와 연결하여 통신할 수 있는 private connection을 제공하는 서비스
- Private link를 통해서 AWS 서비스와 연결하여 데이터를 인터넷에 노출시키지않고 AWS서비스에 접근할 수 있다.
- 또한 연결하는 서비스의 IP 주소를 바꾸는 등 네트워크 정보의 변경 등의 작업에서 발생하는 불필요한 비용을 줄일 수 있다.
참고
반응형