[AWS]AWS Network

순두누나·2025년 4월 2일

AWS 공부

목록 보기
4/18

VPC

:AWS에서 제공하는 가상 네트워크 환경

  • 사용자가 AWS 클라우드 내에서 자신만의 격리된 네트워크 공간을 설정할 수 있도록 해준다.
    -> 즉, AWS 내에서 사용하는 '가상의 데이터센터'

  • 계정 생성시 리전별로 디폴트 VPC가 존재한다.

  • 리전당 5개 생성 가능

서브넷

: 네트워크를 더 작은 단위로 나눈 서브 네트워크

-> VPC내에서 IP주소 범위를 세분화하고, 자원을 그룹화하는 역할

  • 서브넷을 나누는 이유
  1. 네트워크 트래픽 관리 : 특정 서브넷에서 발생하는 트래픽이 다른 서브넷에 영향을 주지 않도록 분리
  2. 보안 강화 : 퍼블릭과 프라이빗 서브넷을 나누어서 외부접근을 제한
  3. 효율적인 IP 주소 관리 : 필요한만큼만 IP주소를 할당

AWS VPC에서의 서브넷 구조

: AWS에서 VPC를 생성하면, 해당 VPC안에서 여러개의 서브넷 생성이 가능.

1. 퍼블릭 서브넷

  • 인터넷과 직접 연결됨 (인터넷 게이트웨이 IGW 사용해야함)
  • 웹서버, 프론트엔드 서버 등이 위치
  • 예: 10.0.1.0/24 (256개 IP)

2. 프라이빗 서브넷

  • 인터넷과 직접 연결되지 않음
  • 데이터베이스 서버, 내부 API 서버등이 위치
  • NAT 게이트웨이(NAT Gateway) 또는 VPN을 통해 외부와 통신 가능
  • 예: 10.0.2.0/24 (256개 IP)

3. 예약된 서브넷

  • 관리용으로 별도로 분리된 네트워크
  • VPN, Bastion Host(점프 서버) 등을 배치

서브넷을 나눌 때 고려할 점
1. 퍼블릭 서브넷과 프라이빗 서브넷 명확히 구분
2. 서브넷 크기를 적절히 설정할 것
3. 가용영역을 고려할 것

CIDR (사이더)

: IP주소를 효율적으로 할당하고 네트워크를 세분화하기 위한 표기법

-> 기존의 클래스 기반 IP 주소 체계 대신 유연하게 네트워크를 분할 할 수 있도록 도입됨.
-> VPC를 만들고 서브넷을 나눌 때, CIDR을 사용함

  • 표기법: IP주소 + 슬래시(/)+서브넷 마스크 비트수
192.168.1.0/24

-CIDR을 사용하는 이유
1. IP주소 절약: 필요에 맞게 유연하게 서브넷을 나눌 수 있음
2. 라우팅 효율성 증가 : 네트워크를 작은 단위로 쪼개서 관리 가능
3. AWS VPC에서 네트워크 구성 필수 요소: CIDR을 기반으로 VPC와 서브넷을 설계해야함

여기서 질문!
VPC 내부에서의 리소스라는 건 무엇을 지칭하는거지?

: VPC 내부에서는 다양한 네트워크 및 컴퓨팅 리소스가 동작!
-> 이 리소스들은 서브넷 내부에 배치되고, 서로 통신하거나 외부와 연결되는 방식이 다를 수 있음

VPC 내부에서 사용할 수 있는 리소스

1. EC2 인스턴스

  • AWS의 가상 서버(클라우드에서 실행되는 컴퓨터)
  • 퍼블릭 서브넷 또는 프라이빗 서브넷에 배치 가능
  • 웹 서버, 애플리케이션 서버, 데이터 처리 서버 등으로 활용

2. 로드밸런서

  • 여러 개의 EC2 인스턴스로 들어오는 트래픽을 자동으로 분산하는 역할
  • 일반적으로 퍼블릭 서브넷에 배치되어 외부에서 접근 가능

3. RDS (Relational Database Service)

  • 관리형 데이터베이스 서비스 (MySQL, PostgreSQL, Aurora 등)
  • 일반적으로 프라이빗 서브넷에 배치되어 보안성을 높임
  • EC2 인스턴스(애플리케이션 서버)와 통신 가능

4. NAT Gateway(Network Address Translation Gateway)

  • 프라이빗 서브넷의 리소스가 인터넷에 나갈 수 있도록 해주는 장치

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

  • 퍼블릭 서브넷 내부의 리소스가 인터넷과 연결될 수 있도록 하는 장치

이외에도 여러가지가 있지만 주된 건 이렇게만 쓰겠음!

라우팅 테이블

: 네트워크에서 패킷(데이터)가 어디로 가야하는지를 결정하는 경로 정보를 저장한 표
-> AWS VPC에서 서브넷이 외부 또는 내부와 통신할 수 있도록 경로를 정의하는 역할

  • 각 서브넷은 하나의 라우팅 테이블에 연결.
  • 해당 서브넷의 모든 트래픽이 이 테이블의 규칙을 따르게 됨.

예제

  • 퍼블릭 서브넷 → 인터넷으로 가는 트래픽은 인터넷 게이트웨이(IGW)로 전달
  • 프라이빗 서브넷 → 외부 인터넷 접근이 필요하면 NAT 게이트웨이(NAT GW)로 전달
  • 같은 VPC 내 다른 서브넷 → 직접 통신 가능 (기본적으로 설정됨)

Hands-on

  1. 나만의 VPC 환경 구축하기
  • VPC 생성
  • 서브넷 생성
  • 인터넷 게이트웨이 생성
  • 라우팅 테이블 생성
  1. Bastion Host로 프라이빗 EC2 접속하기

VPC 생성

  • VPC 생성 완료
  • 해당 VPC에 라우팅 테이블 생성된거 확인 완료

서브넷 생성

  • public 서브넷 설정
  • 이때 VPC와 subnet의 CIDR 네트워크 부분은 같아야함-
  • private 서브넷도 설정
  • 서브넷 가용영역은 모두 2a

서브넷 안에 프라이빗 인스턴스 생성

:Private 서브넷에 위치할 EC2 인스턴스 생성

  • 키페어도 같이 생성하기
  • 네트워크 설정-> 생성한 VPC 지정-> private subnet 지정

서브넷 안에 Bastion Host로 사용할 퍼블릭 인스턴스 생성

: public 서브넷에 위치할 EC2 인스턴스 생성

  • 키페어 필요없음
  • 이때는 퍼블릭 자동할당 시켜주기!
  • 고급세부정보->사용자 데이터에
#!/bin/bash
mkdir -p /home/ec2-user/.ssh
echo "-----BEGIN RSA PRIVATE KEY-----
~
-----END RSA PRIVATE KEY-----" > /home/ec2-user/.ssh/my-key.pem
chmod 600 /home/ec2-user/.ssh/my-key.pem
chown ec2-user:ec2-user /home/ec2-user/.ssh/my-key.pem

붙여넣기
따음표 안에 아까 받은 pemkey 내용 넣어주기

private 인스턴스 안에 보안 그룹 수정

기존 private 인스턴스 보안 그룹의 인바운드 규칙 편집

  • 기존 인바운드 규칙 삭제후 규칙 추가
  • SSH -> 사용자 지정 -> 앞에 생성한 퍼블릭 인스턴스의 보안그룹 선택

생성한 퍼블릭 인스턴스 연결 시도

이때, 이런 오류가 떴다!

Failed to connect to your instance
EC2 Instance Connect is unable to connect to your instance. Ensure your instance network settings are configured correctly for EC2 Instance Connect. For more information, see EC2 Instance Connect Prerequisites at https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-instance-connect-prerequisites.html.

이 말은 현재 EC2 인스턴스가 퍼블릭 서브넷이 아닌 상태라서 EC2 Instance Connect로 접속할 수 없는 상황. 이를 해결하려면 해당 서브넷이 인터넷과 연결되어있어야한다.
즉, 서브넷이 인터넷 게이트웨이와 연결된 라우팅 테이블을 사용해야하는 것
-> 그래서 우리는 인터넷 게이트 웨이를 만들어줄것이다!

인터넷 게이트웨이 생성

게이트웨이를 생성하고 위에 있는 버튼 "VPC에 연결"을 선택

라우팅 테이블 생성

외부 인터넷 요청이 생성한 인터넷 게이트웨이로 갈수 있도록 라우팅 규칙 추가!

라우팅 테이블에 퍼블릭 서브넷 연결

퍼블릭 서브넷을 연결시켜주면 됨

설정된 VPC 리소스맵 확인

오!! 서브넷이 private과 public으로 두개가 만들어졌고 각 서브넷에 라우팅 테이블이 하나씩 연결된걸 볼 수 있다! 그리고 public에서는 인터넷 연결을 위해서 게이트웨이가 연결되어 있는 것을 볼 수 있다

다시 퍼블릭 인스턴스 연결 시도!

연결 완!

cd /home/ec2-user/.ssh

// my-key.pem 파일이 있는지 확인합니다
ls 

ssh -i my-key.pem ec2-user@프라이빗_인스턴스의_프라이빗_IP

해당 코드를 붙여넣어주기
그러면 접속까지 완료하는 것을 알 수 있다!

끄읕 어렵다 어려워.....

profile
순두의 누나입니다

0개의 댓글