본문 바로가기
AWS

[AWS] AWS VPC 및 서브넷 설정하기 & Public EC2 생성 후 외부 접근 허용

by 도전하는 린치핀 2024. 3. 7.

 

AWS에 대해서 공부한 내용을 바탕으로 AWS VPC와 Subnet을 설정하고 Public EC2를 생성하여 인터넷 게이트웨이를 통한 외부 접근 허용이 가능한 상태까지 만드는 실습을 진행해보려고 한다.

 

먼저 AWS의 VPC, Subnet, Route Table, IGW 등 다양한 개념에 대해서 이해하기 위해 개념을 잘 모르는 사람들은 아래의 이전 포스팅을 확인하자.

 

[ASAC_04/AWS] AWS 개념 - VPC / Subnet / Route Table / Internet Gateway

1. VPC (Virtual Private Cloud) VPC는 약자 그대로 AWS 클라우드에서 제공하는 사용자의 AWS 계정 전용 가상 네트워크다. 사용자는 AWS에서 제공하는 VPC 내에서 서브넷, 라우팅 테이블, 인터넷 게이트웨이

rnclf1005.tistory.com

 

 

먼저 AWS에서 VPC 및 Subnet을 설정하고 Public Subnet에 연결된 EC2를 생성한 뒤 외부 접근 허용하는 실습은 아래의 목차에 따라서 진행된다.

  1. VPC 직접 만든 뒤 설정 확인하기
  2. Subnet 생성하기
  3. EC2 (Public Subnet) 과제용 테스트 인스턴스 만들기
  4. IGW 생성 및 VPC 내 설정하여 앞선 EC2 의 외부 노출 시도하기
  5. Route Table 를 통해 IGW 와 EC2 를 연결하여, 외부 노출을 위한 설정 완료하기
  6. 인스턴스 SSH (22) 접근 확인 후 인스턴스 내에서 ping google.com 입력하기

 

그렇다면 위의 순서에 따라서 실습을 진행해보자.

 

1. VPC 직접 만든 뒤 설정 확인하기

AWS의 시작은 당연하게도 VPC를 생성하는 것이다.

이때 확인해야 할 부분은 AZ와 리전을 꼭 확인해야 한다.

엉뚱한 리전(예를 들면 시드니,,)에 VPC를 설정한다면 나중에 정말 엉뚱한 결과물이 나올 수 있으니 꼭 다시한번 리전을 확인하고 가자.

 

  • 모든 AWS 계정에 대한 설정을 끝나고 로그인 한 뒤 VPC에 들어가면 위의 사진과 같다.
  • 이미 "-"라는 VPC가 생성된 모습을 확인할 수 있는데 이건 default로 생성되는 VPC인 것 같으니 무시하고 우측 상단의 "VPC 생성" 버튼을 클릭하자.

  • VPC 설정 옵션에서 "이름 태그"를 작성한 뒤 나머지 값은 기존의 값으로 냅두고 IPv4 CIDR를 작성해야 한다.
  • 이때, IPv4 CIDR는 VPC의 가용 영역을 생각하면 된다.

VPC 생성이 끝난 모습이다.

 

2. Subnet 생성하기

그 후, VPC 내에 Subnet을 생성하면 된다.

Subnet은 VPC의 공간을 나누어서 사용한다고 생각하자.

보통은 같은 Public/Private Subnet을 2개의 쌍으로 구성한다.

그 이유는 "Multi-AZ"를 위해 한쪽의 AZ가 사용이 불가능할 때 다른 AZ에서 서비스를 유지할 수 있도록 2개의 쌍으로 구성한다고 한다.

 



  • Subnet 생성의 경우 특별한 조건이나 옵션이 있는 것은 아니고 IPv4 서브넷 CIDR 블록을 잘 구성하면 된다.
  • 이 내용은 CIDR 블록에 관한 내용이니 추후에 포스팅에서 다뤄보도록 하고 이번 포스팅에서는 넘어가자

서브넷 생성을 마치고 옵션을 확인해보자

3. EC2 (Public Subnet) 과제용 테스트 인스턴스 만들기

EC2는 서브넷 안에 새로 생성하는 인스턴스의 한 종류이다.

먼저 생성할 EC2의 조건은 아래와 같다.

  • 인스턴스 생성 시 앞에 생성한 Public Subnet 중 하나에 할당
  • Auto-assign public IP (자동 할당 퍼블릭 IP) 활성화
  • Security Group (SG) 만들어 SSH (22 포트) 만 열어 인스턴스에 할당하기

 

위의 사진처럼 앞서 말한 규칙을 바탕으로 EC2를 생성한 뒤 결과는 아래와 같다.

 

그렇다면 그 이후에 EC2를 Public 형태로 설정하였으니깐 바로 SSH(22)로 접근을 시도한다면 어떻게 될까

먼저 접근을 시도하는 방법은 아래와 같다.

 

위의 사진처럼 에러가 발생하는 것을 확인할 수 있다.

Auto-assign public IP (자동 할당 퍼블릭 IP) 활성화를 했고, 생성한 EC2 의 설정을 보면 Public IP 가 할당되어 있는데, 왜 외부에서 접근이 불가능할까?

 

그 이유는 생성된 EC2를 IGW와 연결하지 않았기 때문이다.

그렇다면 다음에는 IGW를 연결해보자.

 

4. IGW 생성 및 VPC 내 설정하여 앞선 EC2 의 외부 노출 시도하기

앞서 EC2 가 Public Subnet 에 할당되어있음에도 외부 접근이 되지 않은 이유는 SSH 접근 시도 시 “인스턴스 네트워크 설정이 올바로 구성되지 않았다.” 는 에러가 발생했던 것이다.

VPC 정의가 Virtual “Private” Cloud 이듯이 아무것도 하지않으면 인트라넷(Private Network)인데, IGW를 연결하지 않는다면 계속해서 Private한 Cloud가 되는 것이였다.

 

그렇다면  IGW 생성하여 우리가 만들었던 VPC 에 할당해보자

기존 상태의 IGW

 

IGW를 생성한 후

 

그렇다면 이제 다시 SSH(22) 접근으로 우리가 생성한 EC2가 Public하게 바뀌었는지 확인해보자.

  • “왜 실패할까?” : VPC 에 IGW 연결 시 Public Subnet 내 EC2 가 외부 접근 가능할줄 알았지만
    • “VPC - IGW” 와 퍼블릭 IP 를 가진 “EC2”연결되지 않았기 때문
    • = Public Subnet (EC2) 과 IGW 가 연결되지 않았다 ⇒ Route Table 을 통해 연결이 필요

그렇다면 이제 Route Table을 통해서 IGW와 생성한 EC2를 연결해보자

5. Route Table 를 통해 IGW 와 EC2 를 연결하여, 외부 노출을 위한 설정 완료하기

Route Table은 특정 IP에 대한 요청이 들어오면 어떤 곳으로 가야하는지를 정의해 놓은 표지판 같은 것이다.

즉, Route Table은 "Destination(특정 IP에 대한 요청)을 Target(어디로 보내)에 보내는지 정의해 놓은 것"이라고 할 수 있다.

Route Table은 정의 후 서브넷에 붙이면 해당 서브넷에서 발생하는 트래픽들을 원하는대로 이동하게 해준다.

Route Table을 생성하는 조건은 아래와 같다.

  • Route Table 2개 생성 후 서브넷에 할당하고, 내부 설정값에 모든 트래픽을 IGW 로 연결
    • Route Table 은 크게 2개의 설정을 갖는다
      • 어디에 적용할것인지? = Subnet 할당 : 어떤 서브넷을 대상으로 할것인가?
        • 명시적 서브넷 : 일반적으로 목적에 맞게 “Public Subnet” 대상으로
        • = Public Route Table → 앞서 만들었던 Public Subnet 2개 할당
        • Route Table 은 VPC 를 처음 만들면 기본 - 명칭의 Route Table 생성되어있다.
        • Route Table 을 따로 정의하지 않고도, VPC 가 동작되어 Route Table 이 정의되어있지 않으면 알아서 라우팅되는줄 알았는데, 그게 아니었다. VPC 기본 Route Table 에 따라 라우팅되고 있던것
      • Destination / Target = Route 설정 : 경로 정의를 어떻게 할것인가?
        • Route 설정 : 경로 정의를 어떻게 할것인가?
          • 앞서 만든 IGW 를 추가한다 CIDR 배운것을 기반으로 “모든 트래픽”에 적용할 것

해당 사진은 Route Table을 생성한 직후의 모습이다. 여기서 명시적 서브넷을 연결해줘야 한다.
우리는 Public Subnet과 IGW과 연결되는 Route Table을 만들고 있으니 명시적 서브넷은 Public 서브넷을 선택한다.

 

그 후 라우팅 부분에서 라우팅 편집 버튼을 클릭한 뒤 0.0.0.0/0(전체 IP)를 Destination으로 설정하고 대상을 아까 생성한 IGWf로 설정한다.

 

6.인스턴스 SSH (22) 접근 확인 후 인스턴스 내에서 ping google.com 입력하기

 

모든 준비가 끝나고 이제 다시 아까 3번에서 생성한 EC2를 실행시킨 뒤 ping google.com을 실행하면 아래와 같은 사진이 나온다.

 


이것으로 우리는 AWS에서 새로운 서비스를 클라우드 네트워크에 올리기 위한

1. VPC를 생성하고

2. Subnet을 생성한 뒤

3. EC2(인스턴스)를 만들어

4. IGW와 연결하여 외부 인터넷과 연결하고

5. Route Table을 통해 EC2와 외부 인터넷은 Public한 상태로 만들어 외부와 접근이 가능하게 하는

기본적인 AWS 실습을 진행해보았다.

 

    •