0. 등장 배경

- 클라우드 초기의 단순 네트워크 구조
- 모든 인스턴스가 공유 네트워크에 배치되어 사용자가 세부 네트워크를 제어할 수 없었음
(e.g. AWS EC2 Classic)
- 보안 그룹만으로 트래픽 제어 가능, 기업 수준의 격리·보안 제공 어려움
- 기업 환경의 요구 증가
- 네트워크 분리: 고객별로 독립적인 네트워크 필요
- 보안 제어 강화: IP 대역, 라우팅, 방화벽처럼 세밀한 제어 필요
- 온프레미스와 통합: VPN이나 전용 회선을 통해 기존 데이터 센터와 연결 필요
- 규제 준수: 금융, 헬스케어와 같은 산업은 네트워크 격리가 필수적
- 가상화 네트워킹 기술의 발전 → VPC 도입 (AWS.2009)
- 하이퍼바이저 기반의 가상화 기술이 발전하면서, 물리적 네트워크를 가상적으로 분리하는 기술이 등장
(VLAN, VXLAN, Overlay Network 등)
- 이것을 클라우드에 적용하면서, 고객별 논리적 전용 네트워크를 제공할 수 있게 함
1. VPC란?
| 구분 | 구성 요소 | 설명 | 예시/역할 |
|---|
| 네트워크 단위 | VPC | 클라우드 내 논리적 격리 네트워크 | 전체 CIDR: 10.0.0.0/16, 멀티 AZ 포함 |
| 서브넷 | VPC 내 IP 범위 단위 | 퍼블릭: 10.0.1.0/24, 프라이빗: 10.0.2.0/24, 라우팅/보안 적용 |
| 인터넷 연결 옵션 | 인터넷 게이트웨이 (IGW) | 퍼블릭 서브넷과 인터넷 연결 | 웹 서버, 로드밸런서, 퍼블릭 IP 필요 |
| NAT Gateway / | | |
| NAT Instance | 프라이빗 서브넷 아웃바운드 인터넷 | DB, 백엔드 서버, 외부 접근 필요 시 사용 | |
| 라우팅 테이블 | 트래픽 경로 지정 | 퍼블릭: 0.0.0.0/0 → IGW, 프라이빗: 0.0.0.0/0 → NAT |
| 보안 | 보안 그룹(SG) | 인스턴스 수준 방화벽, 상태 저장 | 웹 서버: HTTP/HTTPS 허용, DB: 내부 IP만 허용 |
| 네트워크 ACL(NACL) | 서브넷 수준 방화벽, 상태 비저장 | 특정 IP 범위 차단/허용 |
| 컴퓨팅/서비스 | 인스턴스(EC2 등) | 실제 서비스 실행 | 웹 서버, DB 서버, 백엔드 서버, 서브넷 + 보안 그룹 적용 |
VPC (Virtual Private Cloud)
: 클라우드 환경에서 사용자가 정의한 논리적으로 격리된 가상 네트워크
’논리적으로 격리된 네트워크’ → 다른 사용자들과 네트워크가 섞이지 않고, 마치 개인 전용 네트워크처럼 동작
‘논리적’?
물리적인 장비/ 장치가 아닌, 소프트웨어/설정을 사용
- 클라우드 서비스 제공자가 관리하는 큰 네트워크 안에서 특정 사용자가 원하는 방식으로 가상 네트워크를 쪼개고 구성할 수 있는 기능
- 온프레미스 네트워크와 유사하게 토폴로지를 설계할 수 있음
[토폴로지]
네트워크에 참여하는 컴퓨터, 스위치, 라우터 등 노드와 링크들의 물리적 또는 논리적 배치 방식
2. 아키텍처
- VPC = 네트워크 토폴로지의 기본 틀
- 최소 VPC 동작 요건 = VPC + Subnet + Route Table + Security Group
- 인터넷 통신 필요 → IGW 필요
- 프라이빗 서브넷에서 아웃바운드만 필요 → NAT 필요
- 트래픽 제어 강화 필요 → NACL, 커스텀 라우팅, 추가 게이트웨이
💡 VPC를 하나의 아파트 단지로 비유
- VPC : 아파트 단지 // 도시 (클라우드) 안에서 독립적으로 운영됨
- 서브넷:
퍼블릭: 상가
프라이빗: 각 동
- 보안그룹, NACL: 경비실 // 출입 통제
- Internet/NAT Gateway: 단지 출입구 // 이 출입구를 통해 외부와 연결
1) 서브넷(Subnet)
: VPC 안에서 리소스를 논리적으로 격리하고 관리하며, 트래픽과 보안을 제어할 수 있는 최소 단위 네트워크
→ VPC 를 더 세분화해 관리하기 쉽게 만든 논리적 구획!
[e.g]
VPC의 IP 범위가 10.0.0.0/16이라면, 이를 10.0.1.0/24, 10.0.2.0/24처럼 나눠서 각각 서브넷으로 사용
서브넷 CIDR (Classless Inter-Domain Routing)
💡 넷마스크 & 프리픽스
| 프리픽스 | 넷마스크 | 설명 |
|---|
| /8 | 255.0.0.0 | 클래스 A |
| /16 | 255.255.0.0 | 클래스 B |
| /24 | 255.255.255.0 | 클래스 C |
| /25 | 255.255.255.128 | 절반씩 나눈 서브넷 |
| /30 | 255.255.255.252 | 2개 호스트만 사용 가능 |
- 넷마스크(Netmask)?
-
IP 주소에서 네트워크와 호스트를 구분하는 역할을 하는 값
-
보통 255.255.255.0 같은 형태로 표현
-
1비트는 네트워크, 0비트는 호스트
-
IP: 192.168.1.0
-
넷마스크: 255.255.255.0 → 상위 24비트가 네트워크, 하위 8비트가 호스트
-
결과: 192.168.1.0/24 로도 표기 가능
- 프리픽스(Prefix)란?
- CIDR에서
/숫자로 나타나는 값
/24, /16 등 → 상위 몇 비트가 네트워크용인지 나타냄
- 넷마스크를 2진수로 풀어서 비트 수를 세면 프리픽스 값
- CIDR?
: IP 주소를 효율적으로 나누기 위해 사용되는 표기법 → IP 범위 지정 방법!
- 형식:
IP주소/프리픽스 길이 [e.g.] 10.0.0.0/16
/16 → 넷마스크 길이 의미, 즉 IP 주소 중 상위 16비트는 네트워크 식별용, 나머지는 호스트 식별용
10.0.0.0/16 → 2¹⁶ = 65,536개 IP 가능
- 이 VPC를 /24 서브넷으로 나누면 → 2⁸ = 256개 IP/서브넷
- 예:
10.0.1.0/24, 10.0.2.0/24 …
-
VPC CIDR?
: 전체 가용 IP 범위
-
서브넷 CIDR?
: VPC CIDR 블록 안에서 IP범위를 잘라서 만드는 것
- 서브넷의 CIDR은 VPC CIDR의 부분집합
- VPC:
10.0.0.0/16
- 퍼블릭 서브넷:
10.0.1.0/24
- 프라이빗 서브넷:
10.0.2.0/24
서브넷 특징
- 리소스 배치 단위 EC2, RDS, Lambda 등 클라우드 리소스는 반드시 서브넷에 속해야 함
(EC2, RDS 같은 리소스는 반드시 서브넷에 배치됨)
- 트래픽 분리 및 관리 퍼블릭 서브넷 → 인터넷 접속 가능 프라이빗 서브넷 → 내부 전용, 외부와 직접 통신 불가
- 보안 및 정책 적용 단위 NACL이나 라우팅 테이블을 서브넷 단위로 적용 가능
- 고가용성(AZ 단위 배치) 서로 다른 가용 영역(AZ, Availability Zone)에 서브넷을 배치하면 장애 시 서비스 중단 최소화
서브넷 종류
- 퍼블릭 서브넷(Public Subnet)
- IGW(Internet Gateway) 라우팅이 되어 있어 인터넷과 통신 가능
- e.g. 웹 서버, 로드밸런서
- 프라이빗 서브넷(Private Subnet)
- 외부 인터넷 접근 불가 (필요 시 NAT 게이트웨이를 통해 아웃바운드 가능)
- eg. DB 서버, 내부 서비스
- 하이브리드/리미티드 서브넷
- 특정 서비스(e.g. S3, DynamoDB)와만 통신하도록 VPC 엔드포인트 연결
- 인터넷 직접 접근은 불가
설계 포인트
- CIDR 블록 설계: 서브넷 IP 범위를 너무 작게 잡으면 인스턴스 확장 시 부족 → 너무 크게 잡으면 IP 낭비
- AZ 배치 고려: 가용 영역별로 서브넷을 나눠 고가용성 구성
- 라우팅 테이블과 연동: 퍼블릭/프라이빗 여부에 따라 IGW/NAT 라우팅 설정
2) 라우팅 테이블(Route Table)
: 목적지 IP 주소를 기준으로 트래픽 경로(Route)를 정의한 규칙 집합
→ 네트워크 트래픽이 어디로 가야하는지를 결정하는 지도 역할! (트래픽 흐름 결정)
- VPC 생성 시 기본 라우팅 테이블(Default Route Table) 생성
- 서브넷이 트래픽을 어디로 보내야 하는지 결정하는 핵심 요소
- 모든 서브넷은 기본 테이블에 연결 가능
- 서브넷에는 라우팅 테이블 하나 이상이 연결됨
- 필요 시 커스텀 라우팅 테이블(Custom Route Table) 생성 → 서브넷 단위로 연결
구성 요소
- Destination (목적지)
- 트래픽이 가야 하는 IP 범위
- 예:
0.0.0.0/0 → 모든 인터넷 주소, 10.0.2.0/24 → 특정 서브넷
- Target (대상)
- 트래픽을 전달할 대상
- 예:
- Internet Gateway(IGW) → 퍼블릭 인터넷
- NAT Gateway → 프라이빗 서브넷에서 아웃바운드 인터넷
- VPC Peering → 다른 VPC
- Local → VPC 내부 통신
퍼블릭 & 프라이빗 서브넷 예시
- 퍼블릭 서브넷
- 라우팅 테이블에
0.0.0.0/0 → IGW 추가
- 외부 인터넷과 양방향 통신 가능
- 프라이빗 서브넷
- 라우팅 테이블에
0.0.0.0/0 → NAT Gateway 추가
- 내부 서버는 인터넷에 나갈 수 있지만, 외부에서 직접 접근 불가
3) 인터넷 게이트웨이(IGW)
: VPC 내부 리소스가 인터넷과 양방향 통신을 할 수 있도록 연결해주는 논리적 장치
- 물리적 장치가 아니라 클라우드에서 제공하는 관리형 네트워크 리소스
- 퍼블릭 서브넷 정의 기준이 됨
- NAT와 함께 사용하면 프라이빗 서브넷도 안전하게 아웃바운드 인터넷 접근 가
IGW의 역할
- 아웃바운드 트래픽
- VPC 내부 리소스가 인터넷으로 나가는 트래픽을 전달
- 인바운드 트래픽
- 인터넷에서 퍼블릭 IP를 가진 리소스로 들어오는 트래픽 수용
- 퍼블릭 서브넷 정의 기준
- VPC 안의 서브넷이 IGW 라우트를 갖고 있으면 퍼블릭 서브넷으로 분류
IGW의 특징
- 상태 저장 (stateful)
인바운드 요청에 대한 응답 트래픽 자동 허용
- 고가용성
VPC 단위로 제공, 여러 AZ에서도 사용 가능
- 공유가능
하나의 IGW를 VPC 전체에서 공유 가능ㅇ
- IPv4 / IPv6 지원
사용 조건
퍼블릭 서브넷 - IGW 라우트 → 인터넷
프라이빗 서브넷 - NAT Gateway - 퍼블릭서브넷 - IGW → 인터넷
- 퍼블릭 IP / Elastic IP가 있는 리소스여야 인터넷 접근 가능
- 서브넷의 라우팅 테이블에
0.0.0.0/0 → IGW 라우트가 있어야 가능
- IGW 없이 퍼블릭 인터넷 접근 불가
4) NAT 게이트웨이/인스턴스
정의
NAT(Network Address Translation)
: 내부(private) 네트워크 IP를 외부(public) IP로 변환하여 프라이빗 서브넷에서 인터넷으로 나가는 트래픽을 가능하게 하는 장치
→ 프라이빗 서브넷에서 아운바운드 전용 출입구!
- 프라이빗 서브넷에서 외부(예: OS 업데이트, 패키지 다운로드)로 나가야 할 때만 필요
- 외부에서 프라이빗 서브넷으로의 직접 접근은 막음 (보안 유지)
프라이빗 서브넷 - NAT Gateway - 퍼블릭서브넷 - IGW → 인터넷
- 2가지 유형이 있음
NAT Gateway (관리형 서비스)
NAT Instance (사용자 관리 EC2)
역할
- 아웃바운드 인터넷
프라이빗 서브넷 내부 리소스가 인터넷에 나갈 수 있도록 변환
- 인바운드 차단
외부에서 프라이빗 서브넷으로 직접 접근 불가
- ip 변환
사설 IP → 퍼블릭 IP로 변환 (NAT)
사용 시나리오
- 프라이빗 서브넷에서 인터넷으로 나가는 경우
: OS 업데이트, 패키지 다운로드, API 호출…
- 외부에서 직접 접근은 차단하고 싶은 경우
: DB 서버, 내부 API 서버…
NAT Gateway & NAT Instance
| 항목 | NAT Gateway | NAT Instance |
|---|
| 유형 | AWS 관리형 서비스 | EC2 인스턴스 |
| 관리 | 자동 관리, | |
| 고가용성(HA) 제공 | 사용자 직접 관리, 장애 처리 필요 | |
| 성능 | 고성능, 자동 확장 | 인스턴스 스펙에 따라 제한 |
| 비용 | 비교적 비쌈 | 인스턴스 타입에 따라 비용 조절 가능 |
| 설정 편리성 | 매우 쉬움 | 라우팅, 보안 그룹 직접 설정 필요 |
| 사용 추천 | 생산 환경, 고가용성 필요 | 테스트/저렴한 환경, 유연한 설정 필요 |
NAT Gateway
- AWS 관리형 서비스
- 특징:
- 고가용성(HA) 제공, 자동 확장
- 퍼블릭 서브넷에 배치
- 유지보수 필요 없음(AWS에서 자동 관리)
- 성능이 높고, 트래픽 처리량이 많음
- 비용: 사용량 기준 과금, 인스턴스보다 다소 비쌈
- 사용 시나리오:
- 프라이빗 서브넷의 서버가 인터넷에서 패키지 다운로드 필요할 때
- DB, 백엔드 서버는 외부에서 접근 불가하면서 업데이트 필요
NAT Instance
- 사용자가 직접 만든 EC2 인스턴스
- 특징:
- 직접 구성, 관리, 모니터링 필요
- HA, 확장성은 직접 설계해야 함
- 비용은 EC2 인스턴스 타입에 따라 조절 가능
- 커스텀 설정 가능 → 트래픽 로깅, 방화벽 추가 등
- 성능은 인스턴스 스펙에 따라 제한
- 사용 시나리오:
- 테스트 환경에서 비용 절약용
- 특정 커스텀 NAT 기능 필요 시
- 고성능/HA가 필요 없는 소규모 환경
5) 보안 그룹(Security Group)
인스턴스 : 클라우드 상의 가상 서버
: VPC 안에서 인스턴스의 가상 방화벽 역할
→ 인스턴스 수준 방화벽! : 어떤 트래픽을 허용하고 차단할 것인가를 결정
특징
- 인바운드 & 아웃바운드 트래픽을 허용 / 차단할 수 있음
- 트래픽 허용 중식 (allow-only) 방식
: 생성 시 기본적으로 인바운드는 차단, 아웃바운드는 허용
규칙으로 명시한 트래픽만 허
- 상태 저장(Stateful) 특징
인바운드 허용 트래픽이 있으면, 응답 아웃바운드 트래픽은 자동허용
- CIDR / IP, 포트 기반
트래픽을 IP범위, 포트, 프로토콜로 세밀하게 제어
- 다중 보안 그룹 적용 가능
하나의 인스턴스에 여러 보안 그룹 연결 가능
| 특징 | 설명 |
|---|
| 적용 단위 | 인스턴스 수준 |
| 상태 저장 | 인바운드 요청에 대한 응답은 자동 허용 |
| 기본 규칙 | 생성 시 기본 아웃바운드는 허용, 인바운드는 차단 |
| CIDR/IP, 포트 기반 | 트래픽을 IP 범위, 포트, 프로토콜로 세밀하게 제어 |
| 여러 보안 그룹 연결 가능 | 하나의 인스턴스에 다수 보안 그룹 적용 가능 |
### 적용 방식
- IP / CIDR 범위 : 어떤 주소에서 들어오거나 나갈지
- 포트 번호: 어떤 서비스 (http, ssh, DB..) 허용
- 프로토콜: TCP, UDP,ICMP…
- 상태저장 → 단방향 규칙만 설정해도 요청 - 응답 양방향 통신 가능
6) NACL
NACL (Network Access Control List)
: 서브넷 단위의 네트워크 트래픽 필터
→ 서브넷 전체에 적용되는 양방향 체크포인트!
- 서브넷에 들어오고 나가는 트래픽을 허용 / 거부
- 보안 그룹과는 달리 stateless(상태 비저장) 방식
- 규칙 타입: 허용(Allow) / 거부(Deny) 가능
- 순서 기반
: 규칙 번호 순서대로 평가, 가장 낮은 번호 우선 적용
- 기본 동작
기본적으로 모든 트래픽을 허용함, 필요 시 수정 가능
- VPC 생성 시 기본 NACL이 자동으로 적용됨
| 항목 | 보안 그룹 | NACL |
|---|
| 적용 단위 | 인스턴스 | 서브넷 |
| 상태 저장 | Stateful | Stateless |
| 규칙 | 허용(Allow)만 | 허용(Allow)/거부(Deny) 가능 |
| 기본 동작 | 인바운드 차단, 아웃바운드 허용 | 기본: 모든 트래픽 허용 |
| 우선순위 | 모든 규칙 적용 | 낮은 번호 규칙 우선 적용 |
### 서브넷 & 인스턴스
- 서브넷: VPC안에서 IP 범위를 나눈 논리적 네트워크 단위
인스턴스: 서브넷 안에 배치되는 가상 서버
- 서브넷 단위로 라우팅 테이블, NACL을 적용
인스턴스 단위로 보안그룹 적용
VPC (전체 네트워크)
├─ 서브넷 A (퍼블릭 서브넷)
│ ├─ 인스턴스 1 (웹 서버)
│ └─ 인스턴스 2 (웹 서버)
└─ 서브넷 B (프라이빗 서브넷)
├─ 인스턴스 3 (DB 서버)
└─ 인스턴스 4 (백엔드 API 서버)
NACL & 보안 그룹
관계 = NACL로 서브넷 트래픽을 거르고, 보안 그룹으로 인스턴스 접근을 세밀하게 제어
- 다층 보안 (Defense in Depth)
NACL → 서브넷 단위로 기본적인 허용 / 거부 설정
보안 그룹 → 인스턴스 단위로 세밀하게 허용 규칙 설정
[e.g.]
- NACL: 서브넷 외부 IP 차단
- 보안 그룹: 웹 서버만 HTTP/HTTPS 허용, DB 서버는 내부 IP만 허용
3. VPC Peering
VPC A (10.0.0.0/16) <--- VPC Peering ---> VPC B (192.168.0.0/16)
└─ EC2 인스턴스 A └─ EC2 인스턴스 B
: 서로 다른 두개의 VPC 간에 프라이빗 네트워크 연결을 설정하는 것
- 마치 두 개의 VPC를 LAN 케이블로 직접 연결하는 것처럼 동작
- 서로 다른 VPC 안의 인스턴스들이 프라이빗 IP주소로 직접 통신 가능
특징
- 프라이빗 통신
인터넷 게이트웨이 필요없음
트래픽은 AWS 내부 네트워크를 통해 전송(보안성↑, 속도↑)
- 일대일 연결
VPC 간 1:1 연결
A ↔ B, B ↔ C 연결했다고 해서 A ↔ C가 자동 연결되는 건 아님 (트랜싯 불가)
- 라우팅 필요
연결 후에도 각 VPC 라우팅 테이블에 상대 VPC CODR 블록을 추가해야 통신 가능
- 보안 그룹과 NACL 적용
VPC Peering이 있어도, 보안 그룹/NACL에서 상대 IP 범위를 허용하지 않으면 통신 불가
사용
- 조직 내 여러 VPC간 통신 (운영 ↔ 로깅/ 모니터링_
- 멀티 계정 환경
- 리전 간 Peering (Inter-Region Peering)