AWS VPC의 개념과 생성하는 방법

프로필 사진mingke

AWS VPC의 개념과 생성하는 방법

목차

AWS VPC(Virtual Private Cloud)란?

VPC는 AWS 클라우드 내에 논리적으로 격리된 나만의 가상 네트워크 공간입니다. IP 주소 범위, 서브넷, 라우팅 테이블, 네트워크 게이트웨이 등을 완벽하게 제어할 수 있습니다. AWS에서 인프라를 구축하는 시작점이라고 할 수 있습니다.

VPC는 왜 필요한 걸까요? AWS라는 클라우드를 수많은 사람들이 함께 사용하는 아주 커다란 아파트 단지라고 상상해 보면 쉽습니다. VPC는 그 아파트 단지 안에 있는 내 집입니다. 비록 같은 건물(클라우드) 안에 있지만 현관문으로 다른 집들과 완벽히 분리되어 있습니다. 내 집의 구조를 어떻게 꾸밀지 누구에게 현관문 열쇠를 줄지는 오직 집주인인 나만 결정할 수 있습니다. 나의 안전을 위해서 내 집이 필요하고 내 맘대로 집을 꾸미기 위해서 내 집이 필요합니다.

AWS를 조금만 사용해봤다면 VPC를 직접 만들어보지 않았을 수도 있습니다. 가입하면 Default VPC가 존재하니까요. 실제 운영으로 넘어가면 여러 VPC를 목적에 맞게 나누어 사용하는 것이 좋습니다.

다음과 같은 목적이 있습니다.

  • 보안 강화
    • 네트워크 격리: 서비스별, 혹은 개발/운영 환경별로 VPC를 분리하면 한 VPC에서 보안 문제가 발생하더라도 다른 VPC로의 확산을 막을 수 있습니다.
  • 네트워크 관리 효율성
    • IP 주소 충돌 방지: 여러 프로젝트나 팀이 하나의 VPC를 공유하면 IP 주소 공간이 부족해지거나 관리 규칙이 복잡해질 수 있습니다. VPC를 분리하면 각 환경에 맞는 독립적인 IP 주소 범위를 할당하고 관리할 수 있어 충돌의 위험이 없습니다.
    • 명확한 분리: 개발, 테스트, 프로덕션 환경을 각각 다른 VPC에 구축하면 각 환경의 네트워크 구성을 독립적으로 변경하고 테스트할 수 있습니다. 이로 인해 한 환경의 변경이 다른 환경에 영향을 미치는 것을 방지하고, 운영 안정성을 높일 수 있습니다.

VPC 생성하기

그럼 AWS에서 VPC 생성하는 방법을 알아보겠습니다. VPC를 생성하면서 필요한 구성 요소인 서브넷, 라우팅 테이블, 인터넷 게이트웨이, 보안그룹도 함께 만들어보겠습니다.

AWS에서 VPC를 검색하고 VPC 생성을 클릭합니다. (저는 언어를 영어로 사용하고 있음.)

AWS VPC 생성 버튼
AWS VPC 생성 화면

VPC와 함께 다른 구성 요소들도 같이 생성할 수 있지만 따로 생성해보기 위해 VPC만 생성합니다. Name tag는 목적에 맞는, 원하는 이름을 적으면 됩니다.

사설 IP 생성에 필요한 IPv4 CIDR은 10.0.0.0/16으로 설정해줬습니다. /16 ~ /28사이만 가능하기 때문에 가장 많은 IP를 할당할 수 있도록 /16으로 했습니다만 많이 필요 없으면 /28로 해도 무방합니다.

생성된 VPC를 선택하고 작업을 선택해서 VPC 설정 편집에 들어갑니다.

AWS VPC 편집 화면

설정에서 아래 두개의 DNS셋팅이 모두 체크되도록 만들어줍니다.

AWS VPC DNS 셋팅 화면

VPC내부에서 DNS 주소록을 사용할 수 있게 허용하고 EC2 인스턴스를 만들었을 때 DNS 이름을 부여해주는 설정입니다.ec2-13-123-222-80.ap-northeast-2.compute.amazonaws.com 이런 느낌의 주소 보신적이 있을 것입니다.

서브넷 생성하기

VPC를 만들었으면 이제 서브넷을 만들어야 합니다. 서브넷은 VPC안에 만든 특정 네트워크 공간입니다. Public과 Private으로 만들어서 관리할 수 있습니다. Public은 외부 인터넷 사용자들이 왔다갔다 할 수 있고 Private은 내부 서비스 용입니다.

콘솔 좌측에서 서브넷을 찾기 쉬울 것 입니다. 서브넷에 들어가서 서브넷 만들기 를 선택하고 먼저 VPC ID에 생성한 VPC를 넣어줍니다.

AWS 서브넷 생성 화면

VPC의 CIDR 블록보다 작은 값을 IPv4 subnet CIDR 블록에 넣어줬습니다. 서브넷이 VPC안에 있으니 더 작은 값이어야 하는게 논리적으로 맞습니다(CIDR의 /뒤 숫자는 클수록 작음). 서브넷을 하나만 만들 것이 아니라서 다른 서브넷을 위해 IP를 남겨두어야 합니다. 이렇게 설정하고 생성을 클릭합니다.

Subnet name역시 원하는 이름을 목적에 맞게 적어주면 됩니다. 서브넷을 퍼블릭으로 만들고 싶다면 서브넷에 퍼블릭IP가 할당되도록 만들어야 합니다.

AWS 서브넷 편집 메뉴

생성한 서브넷을 선택한 뒤 서브넷 설정 편집에 들어갑니다. 퍼블릭 IPv4 주소 자동 할당 활성화 해주면 됩니다. 이 서브넷이 사용되면 자동으로 퍼블릭IP가 할당될 것 입니다.

AWS 퍼블릭 서브넷 IP 자동 할당 셋팅

프라이빗 서브넷을 하나 추가 한다면 다른 이름과 IPv4 subnet CIDR 블록만 다르게 하나 더 생성해주면 됩니다. IPv4 subnet CIDR 10.0.2.0/23 으로 만들어서 퍼블릭보다 더 큰 IP범위를 가지도록 해줍니다. 퍼블릭 서브넷보다 프라이빗 서브넷에서 관리되는 서비스들이 일반적으로 더 많습니다. 클라우드 아키텍쳐 설계에서 프라이빗 서브넷을 더 큰 범위로 가져가는 것이 일반적입니다.

당연히 프라이빗 서브넷은 퍼블릭 IPv4 주소 자동 할당 활성화 를 하면 안되겠죠.

인터넷 게이트웨이 생성하기

인터넷 게이트웨이를 만들어야 인터넷과 VPC가 소통할 수 있습니다. 인터넷 게이트웨이를 만들어 보겠습니다. 콘솔 좌측에서 인터넷 게이트웨이를 선택합니다. 인터넷 게이트웨이는 이름만 만들어서 일단 그냥 생성하면 됩니다.

생성한 인터넷 게이트웨이를 선택하고 작업에서 VPC에 연결을 선택합니다.

AWS 인터넷 게이트웨이 생성

그리고 생성한 VPC를 연결해주면 됩니다.

라우팅 테이블 생성하기

라우팅 테이블을 만들어서 퍼블릭 서브넷을 연결하고 인터넷 게이트웨이로 트래픽을 보낼 수 있도록 합니다. 라우팅 테이블은 통신 경로를 지정해주는 규칙의 모음입니다.

라우팅 테이블도 인터넷 게이트웨이처럼 생성해서 이름 짓고 VPC를 연결합니다.

AWS 인터넷 게이트웨이 생성

생성되면 선택 후 하단에서 라우팅 탭으로 이동합니다. 라우팅 편집 선택하고 라우팅 추가 선택합니다.

AWS 라우팅 테이블 편집 버튼

대상(Destination)은 모든 트래픽이기 때문에 0.0.0.0/0 입니다. 그 다음 대상에 인터넷 게이트웨이를 선택하고 먼저 생성한 인터넷 게이트웨이를 선택합니다. 영어 버젼에서는 Target으로 나오는데 한국어 버젼에서는 Destination과 Target이 모두 대상으로 번역됩니다. 이런 점들이 불편해서 언어를 영어로 사용하고 있습니다.

AWS 라우팅 테이블 편집 화면

그 다음 서브넷 연결 탭으로 이동하여 서브넷 연결 편집을 선택합니다. 나오는 서브넷 중에서 퍼블릭 서브넷을 선택하여 연결 저장 을 완료합니다.

AWS 라우팅 테이블 서브넷 연결
AWS 라우팅 테이블 서브넷 연결 화면

이제 인터넷 게이트웨이로 트래픽을 보낼 수 있습니다.

보안 그룹 생성하기

마지막으로 가상의 방화벽 역할을 하는 보안 그룹을 만들어 보겠습니다. 좌측 콘솔에서 보안 그룹 을 찾아 보안 그룹 생성 을 선택 후 생성한 VPC를 연결하고 인바운드 규칙을 추가해주면 됩니다. 보안 그룹은 정해진 규칙에 대해서만 허용입니다.

AWS 보안그룹 편집

예시는 HTTP 요청에 대해서만 허용입니다. HTTPS도 추가하고 싶다면 혹은 다른 요청을 추가하고 싶다면 규칙을 더 추가하면 됩니다.

마무리

AWS에서 VPC 생성하는 방법에 대해서 알아봤습니다. VPC를 만들고 퍼블릭하게 이용할 수 있도록 하는 것만 간단하게 다뤄봤습니다. NAT 게이트웨이를 만들어서 프라이빗 서브넷에서 인터넷을 이용하게 한다던가 VPC 피어링하여 다른 VPC와 통신하거나 하는 복잡한 더 어려운 개념들도 있습니다. 네트워크가 기본 구성 요소만 다루는 것도 쉽지 않지만 차근차근 배워나가면 된다고 생각합니다.

Loading...