AWS VPC 구성 1 (퍼블릭 서브넷, 인터넷 게이트웨이)

zion·2025년 7월 27일
0

AWS

목록 보기
10/11

이번 글에서는 AWS VPC를 직접 생성하고, 퍼블릭 서브넷을 추가한 뒤 AWS EC2 인스턴스를 외부에서 접근할 수 있도록 설정하는 과정을 다뤄보려고 한다.

VPC 생성

AWS 콘솔창에서 VPC를 검색해 들어간다.

[VPC 생성] 클릭

생성할 리소스VPC만 옵션을 선택

VPC 등을 선택하면 서브넷, 라우팅 테이블 등이 자동으로 같이 만들어지는데 하나씩 직접 구성해보는 것이 목적이므로 VPC만으로 설정

VPC 이름을 입력하고 IPv4 CIDR 블록은 수동 입력
10.0.0.0/16 범위를 사용한다.

10.0.0.0/16은 사설 IP 대역 중 가장 넓은 범위로, 나중에 서브넷을 다양하게 나누기에도 좋다.

다른 옵션은 기본값을 유지하고 [VPC 생성] 클릭

그러면 생성된 VPC의 정보를 확인할 수 있다.

VPC 리소스 맵을 보면 아직 아무것도 연결되지 않은 상태다.

퍼블릭 서브넷 생성

생성한 VPC를 EC2에 연결하기 위해서 일단 임의의 EC2를 생성한다.

네트워크 설정 오른쪽의 [편집]을 클릭하여, 방금 생성한 VPC로 지정한다.

서브넷을 선택하려 하면, 서브넷을 찾을 수 없다고 뜬다.
오른쪽의 [새 서브넷 생성] 링크를 클릭해, 서브넷을 생성해보자.

서브넷 생성 창에서 먼저 VPC가 제대로 선택되었는지 확인한 뒤, 서브넷 이름을 정해준다.

여기서 가용 영역(AZ) 개념을 알아야 한다.

가용 영역(Availability Zone, AZ)

하나의 리전(예: 서울 ap-northeast-2) 안에 여러 개 존재하는 독립된 인프라 구역

  • 같은 리전이더라도 a, b, c, d 같은 AZ로 나뉜다.
  • AZ는 서로 물리적으로 분리돼 있어 하나의 AZ가 문제가 생겨도 다른 AZ는 정상 운영된다.
  • 트래픽을 분산하거나 장애 대비 이중화할 때 중요하다.
    → 같은 리전 내 다른 AZ에 리소스를 분산하면 한쪽이 장애가 나더라도 다른 쪽에서 서비스 유지가 가능하다.

    📌 TMI: 나한테 보이는 ap-northeast-2a가 다른 사람한텐 2b일 수도 있다. (AWS가 균등 분산을 위해 내부 매핑을 다르게 함)

서브넷 네이밍의 경우에는 주로 환경(dev, prob 등), 서비스명(web, api 등), 가용 영역(AZ), 용도(public/private)을 포함한다.
접미사로 subnet을 포함하는 경우도 있다.

환경은 생략하고 서비스명(예시로 sb), 가용 영역(a), 용도(public), 접미사를 포함해 서브넷 이름을 지었다.

CIDR 블록은 10.0.1.0/24로 입력
→ 256개의 IP를 할당할 수 있다.

다른 가용 영역 b에 대해서도 서브넷을 추가하기 위해 [새 서브넷 추가] 클릭

위와 마찬가지로 입력한다.

[서브넷 생성] 클릭

리소스 맵을 보면, 생성한 서브넷들이 VPC와 연결된 걸 확인할 수 있다.

EC2 인스턴스 생성

다시 EC2 인스턴스 생성으로 돌아가, 이제 퍼블릭 서브넷을 EC2 인스턴스에 지정해서 만들어보자.

  • 네트워크: 방금 만든 VPC
  • 서브넷: 방금 만든 퍼블릭 서브넷
  • 퍼블릭 IP 자동 할당: 활성화

그런데 인스턴스를 생성해도 아래와 같은 경고 메시지가 뜰 수 있다.

이는 인터넷 게이트웨이(IGW)와 연결이 되어 있지 않아서 생기는 문제다.

인터넷 게이트웨이 생성 및 연결

인터넷 게이트웨이(Internet Gateway, IGW)

VPC 내부 리소스가 외부 인터넷과 통신할 수 있도록 연결해주는 관문

  • IGW는 VPC에 1:1로만 연결 가능하다.
  • EC2에 퍼블릭 IP를 붙였다고 해도, IGW 없이 외부 통신은 불가능하다.

VPC 사이드탭의 [인터넷 게이트웨이] 클릭 후 [인터넷 게이트웨이 생성] 클릭

이름을 적당히 지정해 준 후 [인터넷 게이트웨이 생성] 클릭

인터넷 게이트웨이를 생성했으면 알림이 뜨는데, [VPC에 연결]을 클릭한다.

사용할 VPC를 선택 후 [인터넷 게이트웨이 연결]

하지만 아직 서브넷과 IGW는 연결되지 않은 상태다.
이 둘을 이어주는 게 바로 라우팅 테이블이다.

라우팅 테이블 생성 및 설정

라우팅 테이블(Routing Table)

트래픽이 어디로 가야 할지 결정하는 길 안내판

  • 서브넷 내부의 트래픽이 어디로 가야 하는지를 결정해주는 설정표
  • 기본적으로 VPC 내부 통신은 자동(local)으로 되어 있다.
  • 외부와 통신하려면 명시적으로 0.0.0.0/0 → 인터넷 게이트웨이 경로를 추가해줘야 한다.

    🎯 서브넷이 어떤 라우팅 테이블을 사용하는지가 중요하다.

    → IGW 연결만 해두고, 라우팅 테이블에 반영하지 않으면 인터넷 접속은 안 된다.

VPC 사이드바의 [라우팅 테이블] 클릭 후 [라우팅 테이블 생성]

→ 이름은 public-rt처럼 직관적으로

생성된 라우팅 테이블의 [서브넷 연결] 탭을 확인해보면 명시적 서브넷 연결이 아직 없는 걸 확인할 수 있다.

참고
명시적 연결이 없는 서브넷의 경우, VPC 생성 시에 자동으로 생성되는 default 라우팅 테이블에 연결된다.

명시적 서브넷 연결 옆의 [서브넷 연결 편집] 클릭

퍼블릭 서브넷에 대해 [연결 저장]

위 작업은 서브넷 - 라우팅 테이블에 대한 연결이고, 다음은 인터넷 게이트웨이와 라우팅 테이블을 연결해줘야 한다.

기본적으로 10.0.0.0/16에 대해 local 라우팅이 설정되어 있는데,
이는 10.0.0.0/16(VPC 범위)에 대해 VPC 내부끼리는 local(VPC 내부)로 라우팅
=> 한마디로 VPC 내부에서는 서로 소통 가능

라우팅 추가 (인터넷 게이트웨이 연결)

  • 대상: 0.0.0.0/0
  • 대상지: 인터넷 게이트웨이 선택

이제 외부 인터넷과의 통신 경로가 생겼다.

VPC 리소스 맵을 보면 모든 구성 요소가 잘 연결된 걸 확인할 수 있다.

EC2 콘솔로 돌아가 다시 연결해보면… 경고 없이 접속 성공!

정리

구성된 전체 구조를 시각화하면 아래와 같다.

profile
0 w0

0개의 댓글