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

2SEONGA·2025년 2월 21일

AWS

목록 보기
5/6
post-thumbnail

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

(1) VPC 생성

  • 조건 : CIDR 의 Subnet Mask 는 /16 추천


(2) 서브넷 생성

  • 조건 : Public Subnet 2개
  • 조건 : Private Subnet 2개

Q. “왜? 2개씩 만들까?”
A. 가용성을 위한 Multi AZ 설정
: 한 쪽의 AZ 에서 화재라던가 네트워크 이슈등이 발생했을 시,
다른 한 쪽의 AZ 로 커버하기 위해서


(3) EC2(Public Subnet) 테스트용 인스턴스 생성

  • 조건 : 인스턴스 micro 타입으로, Linux 아무거나 (ex. Amazon Linux) 선택 후 생성
    • 인스턴스 타입은 마음대로 설정해도 되나, 일반적으로 t2.micro 제안
    • 세부 조건 1 : 인스턴스 생성 시 앞서 생성한 Public Subnet 중 하나에 할당
    • 세부 조건 2 : Auto-assign public IP (자동 할당 퍼블릭 IP) 활성화
    • 세부 조건 3 : Security Group (SG) 만들어 SSH (22 포트) 만 열어 인스턴스에 할당
      • SSH 접근 테스트만 할 것이기에 22 포트만 열어주도록
      • 적용 방법
        • 인스턴스 만들 때 SG 만드는 옵션을 통해 만들어 할당해도되고
        • 인스턴스 만들고 나서 SG 따로 만들어서 할당하는 방법도 가능

Q. "내 로컬의 Public IP 만 열지않고 왜 모든 IP 에 대한 22 번 포트를 여는 것일까?"
A. "외부 접근 가능 여부를 확인하기 위해 SSH 접속을 하는데, 우리 로컬에서가 아닌 AWS 콘솔에서 접속하기 때문에"

  • 인스턴스에 SSH (22) 접근 시도, 실패하는 걸 확인

Q. “왜 실패할까?”
: Auto-assign public IP (자동 할당 퍼블릭 IP) 활성화를 했고,
SSH 접근 시도 시 “인스턴스 네트워크 설정이 올바로 구성되지 않았다.” 는 오류 문구 발생
생성한 EC2 의 설정을 보면 Public Subnet 에 할당되어 있는데, 왜 외부서 접근이 불가한가?


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

A. "VPC 정의가 Virtual “Private” Cloud 이듯
아무것도 하지않으면 인트라넷(Private Network)"

  • Internet GW (IGW) 가 필요한 시점
    • VPC = 인트라넷(Intranet)
    • VPC + IGW (Internet GW) = 인터넷(Internet)
  • 조건 : IGW 생성하여 생성었던 VPC 에 할당

  • 다시 인스턴스에 SSH (22) 접근 시도, 이번에도 여전히 실패하는 걸 확인

Q. “왜 실패할까?”
: VPC 에 IGW 연결하면 Public 서브넷 내 EC2 가 외부 접근 가능하지않나?

  • VPC 에 IGW 연결하여 Public 화 하였고
    EC2 에게 자동 할당 퍼블릭 IP 활성화하였고
    SG 를 통해 SSH (22 포트) 오픈도 했는데 왜?

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

A. “VPC - IGW” 와 퍼블릭 IP 를 가진 “EC2”연결되지 않았기 때문

  • Route Table 을 통해 연결이 필요

Route Table

: 특정 IP 에 대한 요청이 들어오면어디로 가야하는지 가르키는 이정표(도로 표시판)

  • 특정 IP 에 대한 요청이 들어오면 : Destination
  • 어디로 가야하는지 가르키는 이정표(도로 표시판) : Target

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

  • Route Table 는 인바운드, 아웃바운드 둘 다에 적용
    • Private / Public 서브넷의 외부와 통신 가능 여부를 결정하는 것
  • 조건 : Route Table 2개 생성, 각 서브넷에 할당, Public Route Table 엔 모든 트래픽을 IGW 로 연결

  • Route Table 설정 방법 상세
    • 1. Route Table 을 어떤 Subnet 에 연결
      : 본 라우팅 규칙을 어떤 서브넷 대상으로 할 것인가?
      = practice-public-subnet-0 과 practice-public-subnet-1 에 대해

개발자가 직접 만든 Route Table 을 Subnet 에 직접 명시적 연결 = Explicit Subnet Associations

  • Route Table 은 서브넷에 크게 2개의 방법으로 연결
    • 명시적 연결 : 직접 생성한 Route Table 을 만들어서 → 명시적으로 Subnet 에 할당
    • 비명시적 연결 : 디폴트 Route Table - 를 → 자동적(비명시적)으로 Subnet 에 할당
      Route Table 을 따로 정의하지 않고도,
      VPC 가 동작되어 Route Table 이 정의되어있지 않으면
      알아서 라우팅되는줄 알았는데, 그게 아니었고
      VPC 기본 Route Table 에 따라 라우팅되고있던 것
  • Route Table 설정 방법 상세
    • 2. Route 설정
      : 경로 정의를 어떻게 할것인가?
      • Destination, 요청이 향하는 방향에 따라
        : 모든 요청에 대해 = 0.0.0.0/0
        • 앞서 CIDR 배운것을 기반으로 “모든 트래픽” = 0.0.0.0/0 에 적용할 것
      • Target, 어디로 향해야하는지 : IGW 로 보내라 = igw-018b45991555ed2f5
  1. Public Route Tablet 에 2개의 Public Subnet 할당 : 잘 되었는지 아래와 같이 확인

  • 목적에 맞는 2개의 서브넷들이 라우팅 테이블에 설정되어있는 것 확인 가능
    • Subnet 을 정의할때 Public / Private 는 우리가 이름을 붙여준것 뿐
    • Route Table 에 연결함과 동시에 의미를 갖게 되는 것
  1. Public Route Table 설정 : 잘 되었는지 아래와 같이 확인

  • Public Route Table 에 연결된 서브넷에 발생하는 모든 트래픽(0.0.0.0/0)은 IGW 로 이동
  1. 다시 인스턴스에 SSH (22) 접근 시도 : 성공

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


0개의 댓글