클라우드 서비스를 사용하다보니 하기 싫어도 네트워크에 대해 공부하게 된다. 오류 나면 구글링 해보고 따라하다가 안되면 그 다음 갈피를 못잡겠다. 그래서 관련 네트워크 지식 공부를 할 수 밖에 없게된다.. 별 내용은 없지만 VPC에 대해 찾아보다가 공부한 기반 지식들을 조금씩 정리한 것들이다
사설망은 외부(공인 인터넷)에 공개되지 않고 물리적/논리적으로 분리되어 내부적으로만 사용하는 IP주소이다. 회사, 학교 등 조직 내부에서 별도의 사설망을 구축해 독립적인 환경을 구성할 수 있으며 이는 외부 인터넷의 영향으로부터 자유롭기 때문에 안정적이고 빠르며 관리에 용이하다. 하지만 외부와 통신하기 위해서는 NAT로 공인 IP로 변환해야한다.
공용망 위에 암호화된 가상 터널을 만들어 마치 사설망처럼 통신할 수 있게 도와주는 기술이다. 예를 들어 재택 근무 중에도 직원이 사무실에 있는 것처럼 조직 내부의 자원인 파일 서버등을 이용할 수 있다. 즉, VPN은 공용망 위에 사설망을 확장해주는 역할을 한다고 이해하면 쉽다.
간단한 동작 과정
퍼블릭 클라우드는 여러 사용자가 동일한 물리적 인프라(서버, 네트워크, 스토리지)를 공유하는 형태이다. 따라서 모든 사용자는 동일한 하드웨어 자원을 공유하기 때문에 기본적으로 공용 네트워크와 연결된다.
VPC는 퍼블릭 클라우드 위에서 사용자가 독립적으로 네트워크를 운영할 수 있도록 만들어진 기술이다. 덕분에 퍼블릭 클라우드를 사용하며 자신만의 전용 네트워크를 사용하는 것처럼 설정할 수 있다.
VPC에서는 네트워크를 잘개 쪼개서 서브넷을 만들 수 있다. 이는 더 많은 네트워크 망을 만들기 위함이다. 각각의 서브넷은 가용영역 안에 존재하며 서브넷 안에 RDS, EC2 등의 리소스를 배치할 수 있다.
VPC 서브넷은 내부적으로 네트워크 트래픽을 처리하기 위해 라우터와 라우팅 테이블을 활용한다. 라우터는 네트워크 트래픽을 목적지로 전달하기 위한 장치이며, VPC 내부의 라우터는 AWS 제공하는 가상의 라우터이다. 라우터의 역할은 다음과 같다.
라우팅 테이블은 네트워크 트래픽이 어디로 가야하는지를 정의한 규칙의 집합이다. 각 서브넷은 하나의 라우팅 테이블과 연결되어 있다. 라우팅 테이블은 다음과 같이 구성된다.
| 목적지 | 대상 | 설명 |
|---|---|---|
10.0.0.0/16 | local | VPC 내의 모든 서브넷 간 트래픽을 허용 |
0.0.0.0/0 | Internet Gateway | 공용 서브넷에서 외부 인터넷으로 나가는 트래픽 |
0.0.0.0/0 | NAT Gateway | 사설 서브넷에서 인터넷으로 나가는 트래픽 |
192.168.1.0/24 | Virtual Private Gateway | 온프레미스 네트워크로 가는 트래픽 |
서브넷 유형에 따라 라우팅 테이블이 다르다. 공용 서브넷의 경우에는 라우팅 테이블에 인터넷 게이트웨이를 포함시켜야하며, 사설 서브넷은 NAT 게이트웨이를 포함하거나 외부 트래픽을 차단하도록 구성한다.
프라이빗 서브넷이 인터넷과 통신을 하기위한 아웃바운드 인스턴스로 인터넷과 단방향으로 통신 가능하다. 그래서 사설 서브넷의 리소스가 외부로 요청을 보낼 수 있지만, 외부에서 직접적으로 해당 리소스에 접근할 수 없다. 이는 소프트웨어 업데이트 요청 등 인터넷에 일방적 요청에 사용된다.