Spring & Java
퍼블릭 서브넷과 프라이빗 IGW 본문

퍼블릭 서브넷과 프라이빗 IGW
VPC 내부 네트워크 흐름 정리 ( Public / Private Subnet, IGW, NAT Gateway )
1. 전체 구조 한 줄 요약
Public Subnet은 외부와 통신, Private Subnet은 외부에 노출되지 않고,
필요할 때만 Nat Gateway를 통해 외부로 나갑니다.
2. 구성 요소별 역할 정리
● VPC ( Virtual Private Cloud )
- AWS 안에 만드는 나만의 가상 네트워크 공간
- IP 대역 ( CIDR )을 직접 정의
- 모든 리소스는 이 VPC 안에서 동작
● Internet Gateway (IGW)
- VPC와 인터넷을 연결해주는 관문
- IGW가 없으면 VPC 내부 리소스는 인터넷과 완전히 단절
- Public Subnet이 인터넷과 통신하려면 반드시 IGW가 필요
중요 포인트 ( 면접 단골 )
IGW는 VPC단위로 연결되며, Subnet에 직접 붙는 개념은 아닙니다.
Public Subnet
- 라우팅 테이블에 0.0.0./0 -> IGW가 설정된 서브넷
- 인터넷에서 직접 접근 가능
- 주로 배치되는 자원
- 1. EC 2 (웹 서버) 2. ALB / NLB 3. NAT Gateway
즉, 외부 요청을 받아야 하는 자원만 Public Subnet에 둔다.
Priavte Subnet
- IGW로 바로 나가는 경로가 없는 서브넷
- 인터넷에서 직접 접근 불가
- 보안이 중요한 자원을 배치
대표적인 예시 :
1. RDS
2. 내부 서비스용 EC2
3. 캐시 서버 (Redis 등)
RDS ( Private Subnet )
- 데이터베이스는 절대 외부에 직접 노출하면 안 됨
- 그래서 Private Subnet에 위치
- 접근은 오직 같은 vpc 내부 리소스
- 보안 그룹으로 허용된 EC2만 가능하게
면접 대비!
RDS는 Private Subnet에 두고, Ec2 보안 그룹을 통해서만 접근하도록 구성할 수 있어야 합니다.
NAT Gateway
- Private Subnet -> 인터넷 " 단방향 출구 "
역할
- Private Subnet 리소스
- 패키지 다운로드
- 외부 API 호출
- 업데이트
중요! 외부에서 Private Subnet으로 들어오는 건 불가능
핵심 개념
NAT = 나갈 수는 있지만, 들어올 수는 없다.

실제 네트워크 흐름 순서
🔁 Private Subnet에서 인터넷으로 나갈 때
1. Private Subnet의 EC2 또는 RDS 관련 리소스가 외부 요청 발생
2. 라우팅 테이블
0.0.0.0/0 → NAT Gateway
3. NAT Gateway는 Public Subnet에 위치
4. NAT Gateway -> IGW -> Internet
5. 응답은 다시 NAT Gateway -> Private Subnet으로 전달
✔️ 외부에서는 Private Subnet의 존재를 알 수 없습니다.
인터넷에서 Private Subnet으로 직접 접근 가능한가? ❌
이유 1. IGW와 직접 연결된 라우팅 없음2. 퍼블릭 IP 없음
왜 이렇게 나누는걸까요? ( 진짜 중요합니다 이게! )
보안 ✅
● DB가 외부에 노출되면 끝장● 공격 표면 최소화
책임 분리 ✅
● 외부 트래픽 처리 : Public● 내부 비즈니스 로직 & 데이터 : Private
실무 표준 구조 ✅
● AWS Well - Architected Framework 권장 구조● 거의 모든 실무 프로젝트에서 이 패턴 사용
면접 대비용!
Q. RDS를 Public Subnet에 두면 안 되나요?
보안상 위험하고, 외부 접근이 필요하지 않기 때문에 Private Subnet에 둡니다.
Q.Private Subnet 리소스는 인터넷 업데이트 어떻게 하나요?
NAT Gateway를 통해 아웃바운드 트래픽만 허용합니다.
Q. Nat Gateway를 Private Subnet에 두면 안 되나요?
안 됩니다. NAT Gateway는 IGW와 통신해야 하므로 Public Subnet에 있어야 합니다.
실제 트래픽 흐름
Internet
↓
IGW
↓
ALB (Public Subnet)
↓
EC2 / App Server (Private Subnet)
↓
RDS (Private Subnet)