VPC

VPN은 한국어로 가상 사설망이다. 앞에 가상이라는 단어에서 알 수 있듯이 실제 사설망이 아닌 가상의 사설망이다.

만약 위 그림과 같이 회사의 네트워크가 구성되어있고, 보안상의 이유로 직원간 네트워크를 분리하고 싶다그러면 기존 인터넷선 선공사도 다시 해야하고 건물의 내부선을 다 뜯어 고쳐야하며 다시 전용선을 깔아주어야한다.

이를위해 가상의 망 VPN을 사용한다.

VPN은 네트워크 A와 네트워크 B가 실제로 같은 네트워크상에 있지만 논리적으로 다른 네트워크인것처럼 동작한다.

이를 우리는 가상사설망 이라고한다.

VPC가 없다면 EC2 인스턴스들이 서로 거미줄처럼 연결되고 인터넷과 연결된다.

이런 구조는 시스템의 복잡도를 엄청나게 끌어올릴뿐만 아니라 하나의 인스턴스만 추가되도 모든 인스턴스를 수정해야하는 불편함이 생긴다.

마치 인터넷 전용선을 다시 까는것과 같다.

VPC를 적용하면 위 그림과같이 VPC별로 네트워크를 구성할 수 있고 각각의 VPC에따라 다르게 네트워크 설정을 줄 수 있다.

또한 각각의 VPC는 완전히 독립된 네트워크처럼 작동하게된다.

VPC를 구축하기위해서는 VPC의 IP범위를 RFC1918이라는 사설 IP 대역에 맞추어 구축해야한다.

사설 IP란 인터넷을 위해 사용하는것이 아닌 우리끼리 사용하는 아이피주소 대역이다.

예를 들어 누군가 “안방에서 리모컨좀 가져다달라”하면 옆집을 가는게 아닌 “안방”으로 찾아간다.

안방이 private IP(사설아이피) 우리집 주소가 public IP이다.

옆집도 안방이 있고 우리집도 안방이 있지만 서로 안방을 들었을때 헷갈리지 않는다.

“안방”, “작은방”, “큰방”처럼 내부에서 쓰는 주소를 사설아이피 대역이라고 부르며 내부 네트워크내에서 위치를 찾아갈때 사용한다.

물론 내 친구나가 찾아올때는 도로명 주소(public IP)를 알려주면 된다.

같은 집에사는(동일한 네트워크 상 존재하는) 내가 가족(형)한테 갈 때는 형 방(사설 IP)로 찾아간다.

내부에서 쓰는 주소 : 사설 IP 대역, (e.g. 안방, 옷방)

서브넷

VPC를 만들었다면 이제 서브넷을 만들 수 있다.

서브넷은 VPC를 잘개 쪼개는 과정이다.

서브넷은 VPC안에 있는 VPC보다 더 작은 단위이기 때문에 당연히 서브넷마스크가 더 높게되고 IP 범위가 더 작은값을 갖게된다.

서브넷을 나누는 이유는 더 많은 네트워크망을 만들기 위해서이다.

각각의 서브넷은 가용영역안에 존재하며 서브넷안에 RDS, EC2와같은 리소스들을 위치시킬 수 있다.

서브넷은 VPC를 잘게 쪼개는 과정, 네트워크망을 더 많이 만들기 위해서 사용.

라우팅 테이블과 라우터

네트워크 요청이 발생하면 데이터는 우선 라우터로 향하게된다.

라우터란 목적지이고 라우팅테이블은 각 목적지에 대한 이정표이다.

데이터는 라우터로 향하게되며 네트워크 요청은 각각 정의된 라우팅 테이블에따라 작동한다.

서브넷A의 라우팅테이블은 172.31.0.0/16 .

즉 VPC안의 네트워크 범위를 갖는 네트워크 요청은 로컬에서 찾도록 되어있다.

하지만 그 이외 외부로 통하는 트래픽을 처리할 수 없다.

이 때 인터넷 게이트웨이를 사용한다.

인터넷 게이트웨이

인터넷 게이트웨이는 VPC와 인터넷을 연결해주는 하나의 관문이다.

서브넷B의 라우팅테이블을 잘보면 0.0.0.0/0으로 정의되어있다.

이 뜻은 모든 트래픽에 대하여 IGA(인터넷 게이트웨이) A로 향하라는 뜻이다.

라우팅 테이블은 가장 먼저 목적지의 주소가 172.31.0.0/16에 매칭되는지를 확인한 후, 매칭되지 않는다면 IGA A로 보낸다.

인터넷과 연결되어있는 서브넷을 퍼블릭 서브넷, 인터넷과 연결 되어 있지 않는 서브넷을 프라이빗 서브넷이라고 한다.

네트워크 ACL과 보안그룹은 방화벽과 같은 역할을 하며 인바운드 트래픽과 아웃바운드 트래픽 보안정책을 설정할 수 있다.

먼저 Stateful한 방식으로 동작하는 보안그룹은 모든 허용을 차단하도록 기본설정 되어있으며 필요한 설정은 허용해주어야한다.

또한 네트워크 ACL과 다르게 각각의 보안그룹별로 별도의 트래픽을 설정할 수 있으며 서브넷에도 설정할 수 있지만 각각의 EC2인스턴스에도 적용할 수 있다.

네트워크 ACL은 Stateless하게 작동하며 모든 트래픽을 기본 설정 되어있기 때문에 불필요한 트래픽을 막도록 적용해야한다.

서브넷단위로 적용되며 리소스별로 설정할 수는 없다.

네트워크 ACL과 보안그룹이 충돌한다면 보안그룹이 더 높은 우선 순위를 갖는다.

NAT 게이트웨이

NAT 게이트웨이는 프라이빗 서브넷이 인터넷과 통신하기위한 아웃바운드 인스턴스다.

프라이빗 네트워크가 외부에서 요청되는 인바운드는 필요없더라도 인스턴스의 펌웨어나 혹은 주기적인 업데이트가 필요하여 아웃바운드 트래픽만 허용되야할 경우가 있다.

이 때 퍼블릭 서브넷상에서 동작하는 NAT 게이트웨이는 프라이빗 서브넷에서 외부로 요청하는 아웃바운드 트래픽을 받아 인터넷게이트웨이와 연결한다.

인바운드와 아웃바운드는 트래픽이 네트워크간에 이동하는 방향

인바운드 트래픽 : 네트워크에 들어오는 정보

아웃바운드 트래픽 : 네트워크에서 나가는 정보

Last updated