이번에 클라우드에 대해 공부하면서 멘토님께서 과제를 주셨고 AWS에서 직접 VPC를 구축해보게 되었습니다.
| VPC?
VPC란 사용자의 클라우드 환경에서 전용 가상네트워크(VPN)을 구축하는 것을 의미합니다.
| VPC를 사용해야하는 이유

VPC를 사용하지 않고 EC2 인스턴스만 하나씩 띄워서 네트워크를 구축할 경우 서로 얽히고 설킨 구조로 굉장히 복잡한 구조로 연결되게 됩니다. 이런 구조는 시스템을 엄청나게 복잡하게 하며, EC2 인스턴스를 추가할 때마다 모든 인스턴스가 수정되어야 하는 상황을 만들 수 있습니다.

VPC를 생성해서 위 그림과 같이 VPC 별로 네트워크를 구성하게 되면 다음과 같은 장점이 있습니다.
- 네트워크 구조의 복잡도를 낮출 수 있습니다.
- 외부에 노출되는 영역을 최소화할 수 있습니다.
- 각각의 VPC에 맞는 네트워크 설정을 할 수 있습니다.
| VPC 네트워크를 나누는 방법
VPC를 생성할 때 IP범위를 지정하는데 이를 이용하여 해당 IP의 범위를 나누어서 하나의 네트워크를 여러개로 분리할 수 있습니다. 나눠진 네트워크는 CIDR로 표기하여 네트워크 대역을 알 수 있게 해줍니다. 이렇게 나누어진 네트워크 대역을 서브넷이라고 합니다.

| 라우터와 라우팅테이블
서브넷으로 나눠진 네트워크는 서로 다른 독립적인 네트워크이며, 서로 간의 통신이 불가능합니다.
이런 경우 라우터를 이용해서 라우팅해야합니다. 라우터는 라우팅 테이블을 확인하여 해당 요청을 처리합니다.
VPC 생성시 기본적으로 라우팅테이블이 자동으로 생성되며, 추가로 생성하거나 수정 할 수 있습니다.

위의 그림 같은 경우 내부 네트워크로만 통신이 가능한 상태인데 인터넷과 연결하기 위해서는 인터넷 게이트웨이가 필요합니다.
| 인터넷 게이트웨이
VPC에서 인터넷을 연결하기 위해서는 인터넷 게이트웨이가 필요합니다.

위의 그림 같은 경우 10.0.0.0/16의 범위를 제외한 IP는 인터넷 게이트웨이로 전부 갈 수 있도록 설정되어있는 상태입니다.
| 퍼블릭 서브넷과 프라이빗 서브넷
외부에서 직접 접근가능한 서브넷을 퍼블릭 서브넷이라고 하며, 내부에서만 접근 가능한 서브넷을 프라이빗 서브넷이라고 합니다.
프라이빗 서브넷 같은 경우 NAT를 사용하지 않으면 외부와 연결할 수 없습니다.
퍼블릭 서브넷과 프라이빗 서브넷을 나누는 이유는 외부에 노출되는 부분을 최소화하여 보안을 강화하기 위함입니다.

| AWS 관리콘솔에서 VPC 생성해보기
- AWS 관리콘솔에 접속한 후 VPC로 이동한 다음 VPC 생성 버튼을 클릭합니다.

- 이름태그(생략 가능)와 IPv4 CIDR 블록을 입력해준 후 VPC 생성 버튼을 누르면 VPC가 생성됩니다.

주의해야 할점은 CIDR 블록크기는 /16 ~ /28로 반드시 해당 범위안에 크기로 지정해야합니다.
만약, VPC를 여러개 생성한 후 피어링을 해야한다면 VPC의 IP 대역이 겹치지 않도록 주의해야 합니다.
| VPC subnet
- AWS 관리콘솔의 VPC 메뉴에서 서브넷으로 이동한 후 서브넷 생성 버튼을 클릭합니다.

- 서브넷을 생성할 VPC를 지정하고 서브넷의 이름(생략가능), 가용영역, IPv4 CIDR 블록을 입력합니다.

주의해야 할점은 IPv4 CIDR 블록을 설정할 때 다른 서브넷과 네트워크의 범위가 겹치거나 VPC 네트워크 범위 밖으로 나가서는 안됩니다.
| 가용영역?
서브넷을 생성할 때 가용 영역을 지정하게 되어있습니다. 이 가용영역의 역할은 무엇일까요?
가용영역은 AWS 리전의 중복 전력, 네트워킹 및 연결이 제공되는 하나 이상의 데이터센터로 구성됩니다. 이 가용영역은 리전당 최소 2개이상이 존재하며, 서로 격리되어있고 전용 메트로 광 네트워크와 상호연결되어있습니다.
만약, 가용영역의 인스턴스가 장애가 발생했을 경우 다른 가용 영역의 인스턴스에서 요청을 처리하게 됩니다. 가용성을 유지하기 위해서 서브넷은 최소 2개이상의 가용 영역에 인스턴스를 생성하는 것이 좋습니다.
| VPC 인터넷 게이트웨이 설정
- AWS 관리 콘솔에서 VPC 메뉴에서 인터넷 게이트웨이로 접속합니다.

- 이름 태그(생략 가능)를 작성하고 인터넷 게이트웨이 생성을 선택합니다.

- 해당 인터넷 게이트웨이를 클릭하고 VPC에 연결을 선택합니다.

- 연결할 VPC를 선택하고 인터넷 게이트웨이 연결을 클릭합니다.

- 상태가 Attached로 변경되었는지 확인합니다.

- VPC 메뉴에서 라우팅 테이블로 이동합니다.

- 생성한 인터넷 게이트웨이를 라우팅 테이블에 추가합니다. 로컬의 IP범위가 아니면 전부 인터넷 게이트웨이로 갈 수 있도록 0.0.0.0/0으로 지정하고 대상으로 생성한 인터넷 게이트웨이 ID를 적은 후 변경 사항 저장을 누르면 해당 라우팅 테이블에 속한 서브넷을 가진 인스턴스는 인터넷에 연결할 수 있습니다.

aws는 그냥 매뉴얼대로 써보기만 했어서 잘 몰랐는데,
이런 것도 할 수 있군요.
생소한 분야라 어렵긴하지만, 설명이 친절한 것 같습니다.
기존에 했던 netwhat 과제도 도움이 좀 된 것 같고 ㅎㅎ
글 잘 읽었습니다!
글 잘보고 갑니다~ 실습해봤는데 잘 되네요.
혹시 검정색 모자이크 하신 이유가 있을까요? 해당 값은 외부로 노출되면 위험한 정보인지 궁금합니다.
VPC에 연결 페이지 사진에서 모자이크 하나 놓치신 것으로 보입니다 🙂