인프라 설계 - VPC

SeonKyum·2022년 2월 15일
0

백엔드 개념

목록 보기
22/23

VPC 보다 VPN 먼저

  • VPN (Virtual Private Network)
    -> 가상 사설망

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

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

이를위해 가상의 망 VPN을 사용하게됩니다.

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

이를 우리는 '가상사설망' 이라고 합니다.

VPC (Virtual Private Cloud)

							vpc가 없는 구조

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

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

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

						VPC를 적용한 구조

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

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

VPC 구축 과정

VPC 를 구축하기 위해선는 VPC의 IP범위를 RFC1918 이라는 사설 아이피대역에 맞추어 구축해야 합니다.

사설 아이피란 무엇일까요?

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

만약, 누군가 안방에서 리모컨 좀 가져다줘 라고 하면 저는 옆집 안방이 아닌 우리집에 있는 안방으로 찾아갑니다.

여기서 안방이 프라이빗아이피, 우리집 주소가 퍼블릭아이피 입니다.

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

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

물론 내 친구나 혹은 동생의 친구가 찾아올때는 도로명주소(퍼블릭아이피)를 알려주면되고 같은집(우리집)에사는(동일한 네트워크 상 존재하는) 내가 동생하테갈때는 동생방(사설아이피)로 찾아갑니다.

VPC에서 사용하는 사설 아이피 대역은 아래와 같습니다.

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간 통신을 원한다면 VPC 피어링 서비스를 고려해 볼 수 있습니다.

서브넷

img.png

VPC를 만들었다면 이제 서브넷을 만들 수 있습니다. 서브넷은 VPC를 잘게 쪼개는 과정입니다.

서브넷은 VPC안에 있는 VPC보다 더 작은 단위기 때문에 자연히 서브넷 마스크가 더 높게 되고 아이피 범의가 더 작은 값을 가지게 됩니다.

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

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

라우팅 테이블과 라우터

img.png

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

라우터란 목적지이고 라우팅테이블은 각 목적지에 대한 이정표입니다 데이터는 라우터로 향하게되며 네트워크 요청은 각각 정의된 라우팅테이블에따라 작동합니다.

서브넷A의 라우팅테이블은 172.31.0.0/16 즉, VPC안의 네트워크 범위를 갖는 네트워크 요청은 로컬에서 찾도록 되어있습니다.

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

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

인터넷 게이트웨이

img_1.png

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

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

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

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

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

네트워크 ACL과 보안그룹

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

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

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

네트워크 ACL은 Stateless하게 작동하며 모든 트래픽을 기본설정되어있기때문에 불필요한 트래픽을 막도록 적용해야합니다. 서브넷단위로 적용되며 리소스별로는 설정할 수 없습니다.

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

NAT 게이트웨이

img_2.png

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

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

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

참고 자료 : https://medium.com/harrythegreat/aws-%EA%B0%80%EC%9E%A5%EC%89%BD%EA%B2%8C-vpc-%EA%B0%9C%EB%85%90%EC%9E%A1%EA%B8%B0-71eef95a7098

profile
차근차근,,

0개의 댓글