본문 바로가기
Cloud/AWS

[AWS Session 기록] 가상 데이터 센터 만들기 - VPC 기본 및 연결 옵션 - 양승도 솔루션즈 아키텍트(AWS 코리아)

by 민휘 2023. 10. 27.

 

 

오프닝

VPC가 왜 중요한가?

VPC는 리소스를 위치시킬 수 있는 기본적인 컴포넌트이다.

VPC는 클라우드 네트워크 내에 나만의 네트워크를 구성하고 가상의 데이터 센터를 사용할 수 있도록 설정할 수 있다.

옛날에는 처음 가입하고 나서 EC2를 만들면 랜덤 AZ에 EC2가 생성되는 EC2 Classic 방식을 사용했다. 2013년부터는 Default VPC에 첫 EC2가 만들어진다. 왜 그랬냐면 앞으로 설명할 것들 때문에..

VPC 내부 구성 살펴보기

  • VPC 내부의 엔드 포인트들은 private IP를 가지며, 각 EC2가 종료되기 전까지는 바뀌지 않는다.
  • 작은 단위인 서브넷 단위로 공간을 분리해서 가상머신을 위치시킨다.
  • 보안이 중요한 DB는 인터넷으로 나가는 길목이 아닌 쪽의 서브넷에 위치시켜서 원하는 레벨의 보안을 적용할 수 있다.

 

인터넷에 연결된 VPC 설정

1. IP 주소 범위 선택

CIDR 방식을 사용한다.

  • 서브넷 마스크로 서브넷 식별
  • 나머지 비트로 서브넷 내부의 호스트 식별

권장 방식

  • RFC 1918 표준 : 연결할 수 있는 다른 네트워크와 겹치는 범위를 피하기 위함. 
  • /16 : 큰 VPC를 두어서 많은 워크로드를 운영

 

2. 가용 영역 별 서브넷 설정

  • 리전 안에 여러개의 AZ가 있다. 한국 리전의 경우 ap-northeast-2a와 ap-northeast-2c가 있다.
  • VPC는 멀티 리전으로 구성 가능하다.
  • 반면 서브넷은 AZ 내에서 구성 가능하다.
  • 그림에서 VPC와 서브넷의 구성을 보면 VPC는 172.31.0.0/16이라는 큰 네트워크를 가지고, 그 안에서 서브넷이 겹치지 않도록 주소 범위를 나눠 갖는다.

 

VPC 서브넷 권고사항

  • VPC : /16 (64K 개)
  • Subnets : /24 (251개) 첫 주소는 네트워크 주소, 마지막 주소는 브로드 캐스트 주소, 두번째부터 네번째까지 AWS가 관리 목적으로 사용하므로 호스트에 할당 불가
  • AZ 하나에 Subnet 하나 권장

 

3. 인터넷으로 향하는 경로 만들기

라우트 테이블

  • 패킷이 이동하는 규칙을 포함한다.
  • VPC에 기본 라우트 테이블이 존재하나, 서브넷에 다른 라우트 테이블을 할당할 수 있다.
  • 어떤 라우트 테이블을 할당하느냐에 따라 어떤 서브넷은 인터넷과 통신할 수 있고, 어떤 서브넷은 그럴 수 없다.
  • 기본 라우트 테이블 : Destination이 VPC 전체 대역폭이고, Target이 local이므로 VPC 안에서만 패킷이 돈다

 

인터넷 게이트웨이

  • 인터넷으로 나가는 컴포넌트를 VPC에 연결하면 VPC 라우트 테이블에 다음과 같은 규칙이 추가된다.
  • Any where로 향하는 패킷은 모두 igw로 보낸다.

 

4. VPC의 트래픽 설정 (보안 정책)

 

Network ACLs : Stateless Firewalls

  • 서브넷 단위로 적용
  • Stateless기 때문에 Inbound와 Outbound 규칙이 항상 짝을 이루어야 한다.

 

Security Groups : Stateful Firewalls

  • 인스턴스 단위로 적용
  • Stateful이므로 Inbound 규칙만 설정하면 된다. Inbound를 통과한 트래픽을 기억해두었다가 Outbound에서 허용한다.
  • Web Server의 SG는 80포트를 Any Where로 열어두고, Backend Server의 SG는 Web Server의 SG Id로 설정해서 프론트 엔드에서 오는 트래픽을 허용한다.
  • 최소 권한 원칙을 준수해야한다. 필요하지 않은 규칙은 만들지 않는다.
  • VPC는 ingress, egress에 대한 Security Group을 생성할 수 있다.

 

VPC 연결 옵션

인터넷 액세스 제한 : NAT GW

 

서브넷 별로 다른 라우팅 규칙

  • 프론트엔드 서버 : IGW와 연결 (public subnet)
  • 백엔드 서버 : 프론트엔드 서버만 연결 (private subnet)

 

NAT Gateway

  • 아웃바운드 전용 인터넷 허용
  • private 서브넷에 NAT Gateway를 연결하면 서브넷에서는 인터넷으로 요청을 보낼 수 있지만, 인터넷에서는 서브넷으로 요청을 보낼 수 없다. public IP가 없기 때문!
  • NAT은 서버에서 인터넷으로 요청을 보내고, 응답을 해당 서버에 돌려준다.
  • private 서브넷 라우팅 테이블에 Target이 nat이고 Dest이 Any where인 규칙을 추가한다.

 

다른 VPC와 연결 : VPC Peering

  • 완전히 분리된 네트워크 사용하여 서비스 모듈을 분리할 수 있다. 마치 데이터 센터를 private 하게 연결한 것처럼
  • 공통 VPC : 인증, 디렉터리, 모니터링, 로깅, 원격 관리, 스캐닝 등
  • VPC Security Group : 다른 VCP SG를 참조해서 보안 규칙을 강화할 수 있다.
  • 제약 사항 : Transit VPC를 지원하지 않는다. 즉 말단에 있는 C와 D는 서로 연결되지 않는다.

 

경로 생성 시 피어링 게이트웨이(pcx)를 만들어 연결한다.

 

 

회사 네트워크에 연결 : VPN과 DX

사내의 중요한 데이터를 AWS로 마이그레이션할 때 인터넷이 아닌 Private network를 통해 전송하는 방법

  • VPN : 인터넷을 통한 IPSec 터널을 연결
  • Direct Connect : private 망을 직접 설치해 연결
  • 보안을 위해 둘다 사용

 

VPC 및 다른 AWS 서비스

VPC에 위치하는 AWS 서비스

  • RDS
  • EC2
  • Lambda
  • RedShift
  • ElasticCache
  • ElasticSearch

VPC EndPoint for Amazon S3

  • S3는 publicly accessible한 서비스
  • VPC 내의 인스턴스가 S3에 요청을 보내려면 VPC 밖으로 나와야함
  • VPC EndPoint를 사용하면 private 연결을 유지할 수 있다
  • 특정 S3 버킷만 허용하거나 VPC EndPoint를 통한 액세스만 허용하도록 설정할 수 있다