AWS VPC와 그 하위 요소 구성하기
이현수 책임
AWS Technical Essentials 교육 과정에서 배운 내용 일부를 공유합니다.
AWS VPC와 그 하위 요소 구성하기
VPC와 그 하위 요소를 설정하는 방법을 알아보고 개념을 이해해보도록 하겠습니다.
VPC (Virtual Private Cloud)
논리적으로 분리된 클라우드를 생성하는 것입니다. 보통 AWS와 같은 서비스를 퍼블릭 클라우드 서비스라고 부르는데, 인터넷을 통해 접근해서 사용할 수 있는 클라우드 서비스이기 때문입니다. 그런데 AWS 내부에 인트라넷을 만드는 것도 가능합니다. 이를 가상 사설 클라우드, 즉 VPC라고 합니다. 만약 VPC가 없었다면 AWS 계정 하나당 한 개의 클라우드만 만들 수 있었겠지요. 그래서 VPC는 일종의 멀티-테넌트 지원 체계입니다.
- VPC는 Region-Scoped 서비스입니다. 즉 리전 별로 따로 만들어야 합니다.
- 리전 당 기본 5개까지 생성할 수 있습니다. (모자라면 요청을 통해 한도를 늘릴 수 있습니다.)
- 네트워크 규모에 따라서 사설 IP 범위를 CIDR로 지정합니다.
- 클래스A: 10.0.0.0 ~ 10.255.255.255
- 클래스B: 172.16.0.0 ~ 172.31.255.255
- 클래스C: 192.168.0.0 ~ 192.168.255.255
많은 Region-scoped 서비스(EC2, RDS, S3 등)가 VPC에 종속됩니다.
VPC 생성하기
VPC 메뉴 대신, VPC Dashboard에 들어가면 VPC와 네트워크 요소들을 한 눈에 볼 수 있습니다.
여기에 VPC 마법사 시작이라는 버튼이 있습니다. VPC 메뉴에서 VPC 생성으로 VPC를 만드는 것 보다 마법사를 통해서 만드는 것이 편합니다. 왜냐하면 그냥 VPC 생성으로만 만들면 달랑 VPC만 만들어지고, 나머지 하위 요소(서브넷, 라우팅 테이블, 인터넷 게이트웨이)를 직접 추가 구성해야 합니다. 반면에 마법사를 통해 만들면 자주 쓰는 구성으로 한꺼번에 편리하게 VPC suite를 구성할 수 있습니다.
서브넷
서브넷은 네트워크 주소 공간을 분할하는 것입니다.
- 서브넷은 AZ-Scoped 입니다. 리전 내 가용 영역(AZ)에 종속됩니다.
- 보통 가용 영역별로 Public/Private 서브넷 쌍으로 구성합니다.
- 예를 들면, AZ가 3개인 서울 리전에서 모든 가용 영역마다 Public/Private 서브넷을 만들면 총 6개의 서브넷이 됩니다.
- 일반적으로 Private 서브넷이 Public 서브넷 보다 주소 공간이 많아야 합니다.
- 가능하면 처음부터 주소 공간을 크게 잡습니다. (나중에 서브넷의 크기를 바꿀 수 없으며, 크기를 바꾸려면 삭제하고 다시 생성해야 합니다.)
- VPC의 CIDR mask가 최대
/16
이므로/16
~/28
사이에서 서브넷 수와 총 주소 공간을 고려해서 지정합니다.
- VPC의 CIDR mask가 최대
Public 서브넷
서브넷을 만들 때부터 Public/Private이 정해지는 것이 아닙니다.
서브넷 중에서 인터넷 게이트웨이에 라우팅 되는 서브넷을 Public 서브넷이라고 합니다.
- 인터넷 Inbound/Outbound 트래픽이 가능합니다.
- Public IP를 통해 외부에서 접근이 가능합니다.
Public 서브넷이 되려면 인터넷 게이트웨이를 연결해야 하는데, 위에서 설명한 VPC 마법사 시작을 통해서 VPC와 함께 한꺼번에 생성할 수 있습니다.
Private 서브넷
인터넷에서 직접 접근할 수 없는 네트워크입니다. 인터넷에서 직접 접근할 필요가 없는 내부 리소스들이 차지하는 주소 공간입니다.
- Private 서브넷에 있으면서 외부(인터넷)으로 요청을 보내서 응답을 받는 인스턴스가 있을 수 있습니다.
- Private 서브넷에 있으면 그냥은 인터넷 연결이 안 됩니다.
- 이때는 외부 호스트에 대한 요청을 Public 서브넷에 있는 NAT 게이트웨이로 보냅니다.
- 이로써 Private 서브넷에 인터넷 Outbound 트래픽을 허용해줄 수 있습니다.
라우팅 테이블
한마디로 라우터입니다. 트래픽을 어디로 보내줄지를 설정합니다.
- Public 서브넷에서 인터넷으로 향하는 Outbound 트래픽은 인터넷 게이트웨이로 보내줍니다.
- Private 서브넷에서 인터넷으로 향하는 Outbound 트래픽은 NAT 게이트웨이로 보내줍니다.
- 여러 서브넷을 묶어서 하나의 라우팅 테이블에 바인딩할 수 있습니다.
- 보통 Public 서브넷을 묶어서 Public 라우팅 테이블에, Private 서브넷을 묶어서 Private 라우팅 테이블에 연결합니다.
설정 방법
- Public 라우팅 테이블
- Public 서브넷s 연결 + anywhere로 가는 트래픽을 인터넷 게이트웨이(igw-*)로
- Private 라우팅 테이블
- Private 서브넷s 연결 + anywhere로 가는 트래픽을 NAT 게이트웨이(nat-*)로
인터넷 게이트웨이
인터넷에 연결된 호스트입니다.
- VPC에 종속됩니다.
- Public 서브넷에 있는 인스턴스의 Private IP주소를 Public IP로 1:1 맵핑한 라우팅 테이블을 갖고 있습니다. (일종의 Public 서브넷을 위한 NAT입니다.)
NAT 게이트웨이
Private 서브넷의 인터넷을 향한 Outbound 트래픽을 허용해줍니다. (IPv4용)
외부 전용 인터넷 게이트웨이
NAT 게이트웨이의 IPv6용 버전입니다.
보안 그룹
화이트리스트 형태의 방화벽 규칙의 집합입니다.
- ‘이 인스턴스는 이런 방화벽 규칙을 적용한다.’ 형태로 인스턴스에 설정할 수 있습니다.
- 혹은 다른 보안 그룹의 규칙에서 ‘이 보안 그룹이 적용된 인스턴스들’이라는 의미의 참조로 사용할 수 있습니다.
기타
AWS Technical Essentials에서 다루지 않는 요소들 (
뭐야 이거, 무서워…)