[AWS] 기본 네트워크 환경 구성 - (VPC/Subnet/Internet Gateway/Route Table)

hhyeong_0·2024년 5월 6일

AWS 기초

목록 보기
3/7
post-thumbnail

오늘은 기본 네트워크 환경 구성 (VPC/Subnet/Internet Gateway/Route Table) 중 VPC 파트에 대해 알아보자 !

VPC

AWS는 기본적으로 불특정 다수의 고객이 사용하는 공용의 공간이다.
따라서, 다른 사람들이 사용하는 네트워크와는 분리되어 나눠지게 되는 이렇게 나누어진 독립적인 네트워크가 Virtual Privte Cloud(VPC)이다.

이러한 VPC를 나누어놓은 하위 네트워크가 Subnet이 됨!

이러한 VPC와 Subnet을 구성하여 인프라의 기본적인 네트워크 환경을 구축할 수 있다.
그럼 이제 VPC 설정하는 방법을 알아보자 ~

VPC 생성

  • CIDR 블록
    : Classless Inter-Domain Routing(CIDR)은 인터넷상의 데이터 라우팅 효율성을 향상시키는 IP 주소 할당 방법이다.
    인터넷에 연결되는 모든 컴퓨터, 서버 및 최종 사용자 디바이스에는 IP 주소라는 고유한 번호가 연결되어 있다. 디바이스는 이러한 IP 주소를 사용하여 서로 찾고 통신한다. 조직에서는 CIDR을 사용하여 네트워크에 유연하고 효율적으로 IP 주소를 할당한다.
    즉, CIDR 블럭은 간단하게, 할당된 IP 주소들의 모음 또는 그룹이다.(VPC 네트워크가 사용할 IP 대역 또는 IP 범위)

  • Tenancy
    : 해당 VPC에서 EC2 인스턴스를 생성할 때 전용 하드웨어를 사용할 것인지 묻는 항목.
    시작 시 지정된 테넌시 속성과 관계없이 이 VPC에서 시작된 인스턴스가 전용 테넌시 인스턴스에서 실행되도록 하려면 전용(Dedicated)을 선택하면 된다.

나머지 설정은 건들지 않고 Create VPC 클릭 !
이 후 생성된 VPC에서 생성되는 EC2 인스턴스와 같은 리소스들이 DNS 호스트 네임을 생성 또는 사용하게 하고 싶다면 DNS Hostnames 설정하면 된다.
아래와 같이 순서로 DNS 호스트 이름 활성화를 체크해주면 된다.


업로드중.. 단순하게 하나의 subnet으로 사용하는게 아니라 위 사진과 같이 굳이 public, private subnet를 분리하는 이유가 뭘까?
: https://joosjuliet.github.io/private-public-subnet/

Subnet

그럼 이제 VPC의 서브넷을 생성해보자 !

  • IPv4 CIDR
    : VPC의 하위 네트워크인 서브넷은 VPC의 CIDR 블록, 즉 VPC의 IP 대역 내에서 정의되며, 서브넷의 CIDR 블록은 VPC의 CIDR 블록 내에서 더 세분화된 범위를 가리킨다.
    즉, 서브넷의 CIDR 블록이 VPC의 CIDR 블록 내에서 정의된 IP 주소 범위의 일부를 할당받는다는 의미이다.

public-subnet-a1

private-subnet-a1

※ 참고: IPv4 주소
IPv4 주소는 기본적으로 32비트로 구성됩니다. IPv4 주소는 4개의 8비트 섹션으로 나뉘며, 각 섹션은 0부터 255까지의 숫자로 표현된다.
CIDR 표기법에서, 예를 들어 "/16"이나 "/24" 같은 숫자는 이 32비트 주소 중 네트워크 부분을 얼마나 차지하는지를 나타낸다.
"/16"은 처음 16비트: 네트워크 주소로 사용되며, 남은 16비트: 호스트 주소로 사용될 수 있음을 의미한다.
이는 전체 32비트 주소 공간에서 특정 부분을 네트워크 식별자로, 나머지 부분을 호스트 식별자로 사용한다는 것을 의미함.
즉, CIDR 표기법에서는 뒤에 오는 숫자가 클수록 할당할 수 있는 호스트의 수가 적어지며, 이는 더 작은 네트워크를 의미합니다.

이제 이렇게 VPC와 서브넷을 생성하면 EC2 인스턴스와 같은 리소스들이 생성될 수 있는 '위치'는 만들어졌지만, 인프라가 제대로 작동하긴 어렵다!

왜냐하면 아직 리소스들 사이에, 혹은 리소스들과 외부 인터넷 사이에 트래픽이 이동할 수 있는 경로를 아직 구성해주지 않았기 때문이다.
이런 역할을 해주는 네트워크 요소가 바로 '인터넷 게이트웨이''라우트 테이블' 이다 !!!

이제 그럼 인터넷 게이트 웨이를 설정해보자~

인터넷 게이트 웨이

위에서도 언급했듯이 인터넷 게이트웨이는 VPC와 인터넷 간의 통신을 가능하게 하는 논리적 연결 장치이다.

이러한 인터넷 게이트웨이를 설정하기 위한 기본 단계는 다음과 같다:
1. 인터넷 게이트웨이 생성: AWS Management Console에서 인터넷 게이트웨이를 생성한다.
2. 인터넷 게이트웨이 연결: 생성된 인터넷 게이트웨이를 VPC에 연결한다.
3. 라우팅 테이블 업데이트: VPC의 서브넷이 인터넷을 통해 통신할 수 있도록 라우팅 테이블에 인터넷 게이트웨이에 대한 경로를 추가한다.

이렇게 인터넷 게이트 웨이를 생성한 뒤에, 어떤 VPC의 게이트웨이 역할을 할 것인지 설정해줘야한다.

그럼 다음으로 '서브넷에 위치한 EC2 인스턴스와 같은 리소스들이 목적지 또는 대상지에 따라 어떤 경로를 통해 트래픽에 이동할 것인지에 대한 규칙을 설정해놓는 테이블'라우팅 테이블도 설정해보자!

라우팅 테이블

라우팅 테이블도 인터넷 게이트웨이와 같이, 어떤 서브넷에 대한 트래픽 경로인지 정해줘야함!

서브넷 연결 편집 선택 -> 연결할 서브넷 설정

이제 퍼블릭 서브넷에 위치한 EC2 인스턴스와 같은 리소스들이 외부 인터넷과 통신할 수 있도록 라우트 테이블에 위에 생성한 인터넷 게이트웨이를 경로로 추가하자!

목적지가 0.0.0.0 (외부로 향하는 트래픽)은 위에서 생성했던 인터넷 게이트웨이를 통해서 이동하도록 설정함.
참고로 첫번째 사진에 목적지: 10.1.0.0/16 대상: local은 기본적으로 VPC의 CIDR 블록 내에서는 트래픽 이동이 가능하다는 것을 의미함.

※ 참고: Route table에서 0.0.0.0이란?
라우팅 테이블에서 목적지 주소가 0.0.0.0/0으로 설정된 라우팅 규칙은 "기본 경로(default route)" 또는 "캐치올(catch-all) 경로"라고 불립니다. 이 규칙은 목적지에 대한 특정 경로가 라우팅 테이블에 없는 모든 트래픽을 처리합니다.

0.0.0.0/0은 모든 IPv4 주소를 매칭하는 와일드카드로 사용되며, 이 경로를 통해 라우팅되는 트래픽은 일반적으로 인터넷이나 다른 네트워크로 전송됩니다. 즉, VPC 내의 인스턴스가 인터넷에 접근하기 위해 데이터를 보낼 때, 이 기본 경로를 통해 인터넷 게이트웨이나 NAT 게이트웨이로 트래픽이 라우팅됩니다.

따라서, 라우팅 테이블에서 0.0.0.0/0을 목적지로 하는 라우팅 규칙은 VPC 내부에서 발생하는 트래픽이 인터넷이나 외부 네트워크로 전송되어야 할 때 사용됩니다.

public subnet 2개, private subnet 4개에 대한 라우트 테이블을 모두 만들어보았다.
여기서 중요한건 Public 서브넷과 Private 서브넷의 차이점을 볼 수 있다.
Public Subnet에 대한 라우트를 보면 0.0.0.0/0으로 인터넷 게이트웨이를 통해 트래픽이 외부로 나갈 수 있는 경로가 있으나, Private Subnet에 라우트 테이블은 트래픽이 외부로 나갈 수 있는 경로가 없음
=> Public Subnet은 외부와의 직접적인 통신이 가능하지만 Private Subnet은 불가능함!

profile
배우고 기록하자 !

0개의 댓글