2025년 3월 9일
카테고리 : AWS인프라AWS
조회 : 99|4분 읽기
AWS VPC 네트워크 기본
AWS VPC와 ALB, IGW, NAT Gateway, 라우트 테이블 개념 정리
AWS에서 VPC(Virtual Private Cloud), 서브넷(Subnet), 인터넷 게이트웨이(IGW), NAT Gateway, 라우트 테이블(Route Table), ALB(Application Load Balancer) 가 어떻게 동작하는지 헷갈릴 수 있다.
특히,
- ALB가 퍼블릭 서브넷에 있지만 IGW 없이도 외부 요청을 받을 수 있는 이유
- 프라이빗 서브넷의 API 서버가 NAT Gateway를 통해 인터넷에 나가는 방식
- 라우트 테이블이 서브넷과 인터넷 연결을 어떻게 제어하는지
등을 정리해보자.
🚀 1. AWS VPC 개념 정리
VPC를 이해하기 위해 알아야 할 주요 개념은 다음과 같다.
✅ VPC (Virtual Private Cloud)
- AWS에서 제공하는 가상 네트워크 환경
- 사용자는 IP 범위를 직접 지정할 수 있음 (예: 10.0.0.0/16)
- 네트워크를 퍼블릭/프라이빗 서브넷으로 나누어 보안과 트래픽을 제어
✅ 서브넷 (Subnet)
- VPC 내에서 IP 주소를 세분화하여 분리한 네트워크 영역
- 퍼블릭 서브넷(Public Subnet): 외부 인터넷과 직접 통신 가능
- 프라이빗 서브넷(Private Subnet): 외부 인터넷과 직접 통신 불가
- 서브넷은 특정 AZ(가용 영역, Availability Zone) 에 속해야 함
✅ 인터넷 게이트웨이 (IGW, Internet Gateway)
- 퍼블릭 서브넷이 인터넷과 통신할 수 있도록 연결
- IGW가 연결된 퍼블릭 서브넷의 인스턴스는 퍼블릭 IP 또는 Elastic IP를 가져야 인터넷 접속 가능
✅ NAT 게이트웨이 (NAT Gateway)
- 프라이빗 서브넷에 있는 인스턴스가 인터넷으로 나갈 수 있도록 지원
- NAT 게이트웨이는 인터넷에서 들어오는 트래픽은 차단
- 보안이 중요한 애플리케이션을 위한 일반적인 패턴 (예: DB 서버가 외부 요청을 못 받도록 설정)
✅ ALB (Application Load Balancer)
- ALB는 인터넷과 연결되는 퍼블릭 서브넷에서 동작하며, 외부 요청을 받아 내부 서버로 전달하는 역할
- ALB 자체는 퍼블릭 IP를 직접 가지지 않지만, AWS에서 제공하는 DNS를 통해 인터넷과 연결됨
- ALB는 VPC 내부 통신을 사용하여 프라이빗 서브넷의 API 서버와 통신 가능
🎯 2. 일반적인 VPC 네트워크 아키텍처
VPC: 10.0.0.0/16
├── 퍼블릭 서브넷 (10.0.1.0/24) - ALB 배포
│ ├── ALB (로드 밸런서, AWS DNS 제공)
│
├── 프라이빗 서브넷 (10.0.2.0/24) - 백엔드 서버
│ ├── EC2 (API 서버, ALB 타겟 그룹에 포함됨)
│ ├── RDS (데이터베이스)
│
└── NAT Gateway (프라이빗 서브넷이 외부와 통신 가능하도록 지원)
📌 트래픽 흐름
1. 사용자가 api.example.com(Route 53에 설정된 도메인)으로 요청을 보냄.
2. ALB가 퍼블릭 서브넷에서 요청을 받음 (인터넷과 직접 연결됨).
3. ALB는 내부 타겟 그룹(Target Group)에 등록된 프라이빗 서브넷의 API 서버(EC2)로 요청을 전달.
4. EC2(프라이빗 서브넷)에서 요청을 처리한 후, 응답을 다시 ALB로 보냄.
5. ALB가 최종적으로 응답을 클라이언트에게 전달.
📌 즉, ALB는 퍼블릭 서브넷에 있지만, VPC 내부 네트워크를 통해 프라이빗 서브넷의 API 서버(EC2)로 트래픽을 전달할 수 있다.
🔀 3. 프라이빗 서브넷의 API 서버가 외부 API와 통신하는 방법
프라이빗 서브넷의 EC2(백엔드 서버)가 외부 API(예: 결제 API, OpenAI API)와 통신하려면 NAT Gateway를 통해 아웃바운드 트래픽을 전달해야 한다.
API 서버 (프라이빗 서브넷) ───> NAT Gateway (퍼블릭 서브넷) ───> 인터넷 게이트웨이(IGW) ───> 외부 API 서버
📌 트래픽 흐름
1. 프라이빗 서브넷의 API 서버가 외부 API 요청을 보냄
2. NAT Gateway가 요청을 받아서 IGW를 통해 인터넷으로 전달
3. 외부 API 서버가 응답을 보내면, NAT Gateway가 다시 API 서버로 응답 전달
📌 즉, 프라이빗 서브넷의 API 서버는 NAT Gateway를 통해서만 인터넷과 통신할 수 있다.
3-1. 서버 투 서버 통신 시 내 IP를 고정해야 할 경우
만약 외부 서버와 서버-투-서버(Server-to-Server) 통신을 해야 하는데, 우리 서버의 IP를 화이트리스트에 등록해야 한다면 어떻게 해야 할까요?
프라이빗 서브넷에 있는 EC2는 퍼블릭 IP를 직접 가질 수 없기 때문에 NAT Gateway를 통해 외부와 통신하도록 설정해야 합니다.
이를 해결하기 위해 NAT Gateway에 Elastic IP(EIP)를 할당하면, 외부에서 인식하는 고정된 퍼블릭 IP를 제공할 수 있습니다.
🔀 서버 투 서버(Server-to-Server) 통신을 위한 NAT Gateway + Elastic IP 설정
✅ 구성 방법
1. 퍼블릭 서브넷에 NAT Gateway 생성
- NAT Gateway를 퍼블릭 서브넷에 배치
- Elastic IP(EIP)를 NAT Gateway에 할당 (이 IP가 외부에 노출됨)
2. 프라이빗 서브넷의 EC2가 NAT Gateway를 통해 외부로 나가도록 라우트 테이블 설정
목적지 (Destination) 대상 (Target)
---------------------- -----------------
10.0.0.0/16 local (VPC 내부 통신)
0.0.0.0/0 nat-xxxxxxxx (NAT Gateway)
이제 프라이빗 서브넷의 모든 EC2는 NAT Gateway를 통해 인터넷으로 나감.
외부 서버는 NAT Gateway의 Elastic IP를 통해 AWS 서버에서 온 요청을 식별할 수 있음.
🎯 4. 라우트 테이블(Route Table)이란?
라우트 테이블은 VPC 내의 네트워크 트래픽이 어디로 이동할지 결정하는 역할을 한다.
✅ 퍼블릭 서브넷 라우트 테이블 예제
목적지 (Destination) 대상 (Target)
---------------------- -----------------
10.0.0.0/16 local (VPC 내부 통신)
0.0.0.0/0 igw-12345678 (인터넷 연결)
✅ 프라이빗 서브넷 라우트 테이블 예제 (NAT Gateway 사용)
목적지 (Destination) 대상 (Target)
---------------------- -----------------
10.0.0.0/16 local (VPC 내부 통신)
0.0.0.0/0 nat-12345678 (인터넷 요청 - NAT Gateway)
📌 즉, 라우트 테이블을 설정하여 퍼블릭 서브넷은 IGW를 통해 인터넷과 연결하고, 프라이빗 서브넷은 NAT Gateway를 통해 외부 API와 통신하도록 설정할 수 있다.
🎯 5. ALB와 IGW, NAT Gateway의 차이점
| 구분 | ALB (Application Load Balancer) | IGW (Internet Gateway) | NAT Gateway |
|---|---|---|---|
| 기능 | 외부 요청을 내부 서버로 전달 | VPC 내부 리소스가 인터넷과 통신하도록 지원 | 프라이빗 서브넷 인스턴스가 외부로 나갈 수 있도록 지원 |
| 위치 | 퍼블릭 서브넷 | VPC 경계에서 인터넷 트래픽을 처리 | 퍼블릭 서브넷 |
| 퍼블릭 IP 필요 여부 | ❌ (AWS DNS 제공) | ✅ 퍼블릭 서브넷의 EC2가 필요할 때 사용 | ✅ 퍼블릭 서브넷에서 프라이빗 서브넷의 요청을 인터넷으로 전달 |
| 트래픽 방향 | 인바운드 (외부에서 내부로 들어오는 요청) | 양방향 (내부 ↔ 인터넷) | 아웃바운드 (내부에서 외부로 나가는 요청만 가능, 외부에서 내부 접근 불가) |
📌 즉, IGW는 퍼블릭 서브넷의 EC2가 직접 인터넷과 양방향으로 통신하도록 해주고, NAT Gateway는 프라이빗 서브넷이 인터넷으로 나갈 때만 필요함.
✅ 5. 결론
- ALB는 IGW 없이도 퍼블릭 서브넷에서 외부 요청을 받을 수 있음 (AWS에서 제공하는 퍼블릭 DNS를 사용).
- ALB는 퍼블릭 서브넷에 있지만, VPC 내부 네트워크를 통해 프라이빗 서브넷의 API 서버로 요청을 전달할 수 있음.
- 프라이빗 서브넷의 API 서버가 외부 API를 호출하려면 NAT Gateway를 통해 인터넷에 나가야 함.
- IGW는 퍼블릭 서브넷의 EC2가 직접 인터넷과 양방향으로 통신할 때 필요함.
- ALB는 외부에서 내부로 들어오는 요청을 처리하고, NAT Gateway는 내부에서 외부로 나가는 요청을 처리함.