상세 컨텐츠

본문 제목

[네트워크] AWS 실습 #01

카테고리 없음

by 코딩연습중 2026. 2. 16. 13:27

본문

 

1단계: VPC 생성

우선 이렇게 VPC를 만들었다.

 

 

 

2단계: Subnet 2개 만들기

1. public subnet 생성

 

방금 만든 VPC에 public subnet을 생성한다.

public 서브넷은 10.0.1.0/24, private은 10.0.2.0/24로 네트워크 영역을 분리할 것이다.

 

2. private subnet 생성

private subnet도 동일한 방식으로 만들어준다.(서브넷 cidr 블록만 다르게)

 

 

 

3단계: Internet Gateway 만들기

test-internet-gateway라는 이름으로 IGW 생성했다.

다음 단계를 Public subnet 대역을 실질적으로 public으로 설정하기 위한 작업이다.(라우팅 테이블 설정)

 

그리고 VPC에 연결해야 함

 

4단계: Public 라우팅 테이블 설정

우선 라우팅 테이블을 생성해준다. (라우팅 테이블은 서브넷 단위!)

 

 

위와 같은 설정을 추가해서, 0.0.0.0/0(외부)로 나가려는 것들은 모두 IGW를 거치도록 설정해준다.

원래는 0.0.0.0/0이 아니라 public subnet의 주소블록을 쓰는 건 줄 알았는데, 생각해보니까 내가 할당받은 건 사설 ip 대역이지, 실제 IP가 아니기 때문에 말도 안 되는 생각이란 걸 깨달음.

외부에서 들어오는 건 실제로 할당 받은 하나의 IP가 있어야 가능한거임.

IGW에서 하는 것이 아님~

 

라우팅 테이블은 연결된 서브넷에서 나가는 패킷의 목적지에 따라 어디(다음 홉)로 보낼지 결정하는 규칙이다.

따라서 위에서 내가 했던 건 라우팅 테이블에 대해 제대로 이해하지 못해서 했던 생각임.

 

 

5단계: NAT Gateway 생성

private의 외부 접근을 위한 NAT Gateway를 생성해야 한다. 

이 때 NAT의 위치는 Public Subnet으로 두어야 한다. 왜일까?

이걸 이해하기 위해 NAT의 동작 원리를 다시 한번 보겠다.


📌 NAT의 역할 다시 정리

NAT는

Private 인스턴스가 인터넷으로 나갈 때
사설 IP → 공인 IP로 변환해주는 장치

예:

Private EC2 (10.0.2.15)
   ↓
NAT Gateway (3.3.3.3)
   ↓
Internet

📌 NAT 동작 흐름

① Private EC2가 외부 API 호출

출발지:

10.0.2.15:54321

 

② NAT가 변환

3.3.3.3:40001

(자기 공인 IP로 바꿈 + 포트도 바꿈)

 

③ 응답이 돌아옴

Internet → 3.3.3.3:40001

NAT는 매핑 테이블 보고:

→ 10.0.2.15:54321

으로 다시 전달

 

NAT가 제대로 동작하려면:

  • NAT 자신이 인터넷과 연결되어 있어야 함
  • 즉 IGW를 통해 나갈 수 있어야 함

그래서 NAT는 반드시 Public Subnet에 둬야 함

 

❌ 만약 NAT를 Private Subnet에 둔다면?

그 Subnet은 IGW 라우트가 없음.

그럼 NAT는 사설 IP 변환은 가능해도 인터넷으로 못 나감

→ 의미 없음

 

 

따라서 이처럼 내 public subnet 영역에 NAT gateway를 생성해줬다.

참고로 EIP를 할당받아야 NAT를 사용할 수 있다! 왜냐하면 내 사설 IP -> 공인 IP로 바꿔야하니까 NAT의 공인 IP가 있어야 함.

 

6단계: Private 라우팅 테이블 설정

위와 같이 설정하여 private subnet -> 외부로 나가는 요청은 nat를 거치도록 규칙을 추가한다.

 

그리고 private 서브넷 연결!

public 라우트 테이블도 public 서브넷에 연결되어있어야 함!

 

7단계: EC2 2개 띄우기

원래는 이제 public EC2, private EC2를 띄워서 여러 테스트를 진행해보려고 했는데

public 인스턴스를 만드는 중에 소스 유형을 내 IP로 하면 대체 '내 IP'는 어떻게 아는거지,,? 하는 의문이 생김.

이에 대한 내용은 따로 글로 정리해보겠다.

우선은 내 IP로 설정하고 넘어가겠다.

 

private 인스턴스는 아래와 같이 소스 유형을 public sg로 설정했다.

 

 

이렇게 하면 실험 준비 완료임!

다음 글부터는 실제로 실험해보면서 더 깊게 공부해보겠다.