AWS - VPC
클라우드 인프라를 다루기 위해 가장 먼저 이해해야 할 개념은 네트워크입니다. AWS에서는 이 네트워크의 기본 단위를 VPC(Virtual Private Cloud) 라고 합니다. VPC는 사용자가 독립적으로 소유하는 가상 네트워크 공간으로, 서브넷·라우팅·보안 규칙을 직접 설계할 수 있습니다. 데이터센터의 네트워크를 클라우드 위에 그대로 구현하는 것과 같다고 할 수 있습니다.
AWS에서는 VPC가 없었던 시절에는 EC2가 하나 추가 될때마다 각각의 연결 및 보안을 따로 설정해 줘야하는 문제가 있었습니다. 그러나 2011년 VPC 출시 이후 이전 네트워크(EC2-Classic Platform) 사용이 중단되고, VPC 사용이 의무화 하면서 AWS에서 VPC는 필수적인 개념이 되었다고 할 수 있습니다. 기본적으로 EC2만 만들어도 기본적으로 Network setting에 VPC가 포함됩니다. 만약 default VPC가 삭제돼 있다면, 새로 만들지 않는 한 EC2 생성이 안 되고 VPC를 직접 지정해야 합니다.
1. VPC 정의와 특징
VPC(Virtual Private Cloud) 는 AWS 계정 내에서 격리된 가상 네트워크 공간입니다. CIDR 블록을 지정해 IP 주소 범위를 정의하고, 서브넷을 나눠 퍼블릭/프라이빗 리소스를 분리할 수 있습니다. 주요한 특징은 아래와 같습니다.
- 독립성: 각 VPC는 다른 VPC나 계정과 기본적으로 격리되어 있으며, 필요 시 피어링(Peering)이나 Transit Gateway를 통해 연결할 수 있습니다.
- 제어 가능성: 네트워크의 IP 대역, 라우팅 테이블, 보안 그룹 및 NACL(Network ACL) 같은 보안 정책을 사용자가-직접 설정할 수 있습니다.
- 확장성: 단일 리전에 속하지만, 여러 가용 영역(AZ, Availability Zone)을 활용하여 고가용성 아키텍처를 구축할 수 있습니다.
2. VPC와 사설 IP 주소 대역
VPC를 구축할 때는 RFC1918 표준에서 정의한 사설 IP 대역을 사용해야 합니다. 사설 IP는 외부 인터넷에서 직접 접근할 수 없고, 내부 네트워크에서 통신하는 데 사용되며, 주소 범위는 다음과 같습니다.
- 10.0.0.0 ~ 10.255.255.255 (10/8 prefix)
- 172.16.0.0 ~ 172.31.255.255 (172.16/12 prefix)
- 192.168.0.0 ~ 192.168.255.255 (192.168/16 prefix)
AWS VPC에서 CIDR 블록은 생성 시에만 지정 가능하며, 생성 후에는 변경할 수 없습니다. 따라서 처음 설계 시 네트워크 확장성을 고려해야 합니다.
3. VPC 구성 요소
VPC는 단순히 IP 대역만 지정하는 것이 아니라, 다양한 네트워크 구성 요소와 함께 사용됩니다. 주요 구성 요소는 간단히 알아봅시다.
- 서브넷(Subnet): VPC의 IP 대역을 작은 네트워크 단위로 분리한 것. 퍼블릭/프라이빗으로 나누어 사용.
- 인터넷 게이트웨이(IGW): VPC와 인터넷 간의 통신을 가능하게 함.
- 라우트 테이블(Route Table): 서브넷 트래픽의 목적지를 정의하는 규칙. 인터넷 게이트웨이, NAT 게이트웨이 등과 연결.
- 보안 그룹(Security Group): 인스턴스 단위의 가상 방화벽. 인바운드/아웃바운드 규칙 기반.
- 네트워크 ACL(NACL): 서브넷 단위의 보안 제어. Stateless 기반으로 동작.
- NAT 게이트웨이: 프라이빗 서브넷 리소스가 아웃바운드 인터넷에 접근할 때 사용.
- VPC 피어링/Transit Gateway: 서로 다른 VPC 간 통신을 가능하게 하는 연결 방식.
3. VPC 통신
- Destination CIDR: 가려는 네트워크 주소 범위 (예: 10.0.0.0/16, 0.0.0.0/0)
- Target: 그 트래픽을 보내야 할 게이트웨이/리소스
- Type: Target이 어떤 종류의 리소스인지 표시
3-1. local
- Target:
local
- Type: VPC Local
- 의미: 같은 VPC 안의 통신은 항상 내부 네트워크로 라우팅됨. VPC 생성 시 자동으로 들어감.
- 예: Subnet A(10.0.1.0/24) → Subnet B(10.0.2.0/24)로 통신
- 이건 VPC 내부 통신이라 굳이 IGW/NAT 필요 없음.
3-2. IGW (Internet Gateway)
- Target:
igw-xxxxxxxx
- Type: Internet Gateway
- 의미: 퍼블릭 서브넷이 인터넷으로 나갈 때 붙는 라우트.
0.0.0.0/0 → igw-xxxx 이렇게 설정하면 → 해당 서브넷의 인스턴스가 공인 IP를 통해 외부 인터넷과 직접 통신 가능.
IGW는 양방향입니다. 외부에서 들어오는 요청도 통과 가능(보안그룹/NACL 허용 시)합니다.
3-3. NAT Gateway
- Target:
nat-xxxxxxxx
- Type: NAT Gateway
- 의미: 프라이빗 서브넷 인스턴스들이 인터넷으로 나갈 수 있게 해주는 중계기.
- 동작 방식:
- 내부 사설 IP(예: 10.0.2.5) → NAT GW가 공인 IP로 변환 → 인터넷 접속
- 외부에서 이 NAT GW를 통해 내부로 “직접” 접근은 불가 (Outbound 전용)
NAT는 단방향입니다. 따라서 내부 → 외부는 가능하지만, 외부 → 내부는 불가능합니다.
3-4. VPC Peering
- Target:
pcx-xxxxxxxx
- Type: VPC Peering Connection
- 의미: 다른 VPC와 피어링 연결을 맺었을 때, 특정 CIDR로 가는 트래픽을 그 Peering으로 라우팅합니다.
3-5. Transit Gateway (TGW)
- Target:
tgw-xxxxxxxx
- Type: Transit Gateway
- 의미: 여러 VPC/온프레미스 네트워크를 허브형으로 연결하는 라우터 같은 역할.
3-6. Virtual Private Gateway (VGW)
- Target:
vgw-xxxxxxxx
- Type: VPN Gateway
- 의미: 온프레미스 ↔ AWS VPC 간 Site-to-Site VPN 연결에서 쓰임.
3-7. VPC 통신 정리
- local → VPC 내부 통신 (자동, 항상 있음)
- IGW → 퍼블릭 서브넷, 외부 인터넷과 직접 통신 (양방향)
- NAT Gateway → 프라이빗 서브넷, 내부 → 외부만 가능 (단방향)
- pcx → VPC Peering
- tgw → Transit Gateway (허브형)
- vgw → VPN Gateway (온프레 연결)
[Subnet A] ---- local ----> [Subnet B] (같은 VPC)
[Subnet A] ---- igw-xxx --> Internet (퍼블릭 통신)
[Subnet B] ---- nat-xxx --> Internet (프라이빗 → 아웃바운드만)
[Subnet C] ---- pcx-xxx --> 다른 VPC (VPC 피어링)
4. 정리
VPC는 AWS에서 인프라를 구축할 때 반드시 이해해야 하는 네트워크의 기본 단위입니다. 단순히 리소스를 띄워놓는 공간이 아니라, 퍼블릭·프라이빗 서브넷을 구분하고, 라우팅·보안 정책을 직접 설계할 수 있는 가상의 데이터센터 역할을 합니다. 따라서 IP 대역 설계부터 시작해 보안 그룹, 라우팅 테이블, 게이트웨이 등 다양한 요소들이 유기적으로 연결되어야 안정적이고 확장 가능한 클라우드 환경을 만들 수 있습니다.
또한 VPC는 기본적으로 다른 네트워크와 격리되어 있지만, 필요에 따라 VPC 피어링이나 Transit Gateway를 통해 다른 VPC 또는 온프레미스 환경과 연결할 수도 있습니다. 이처럼 VPC는 클라우드 네트워크의 출발점이자 확장의 기반이 되므로, AWS에서 아키텍처를 설계하려면 가장 먼저 이해하고 다뤄야 할 핵심 개념입니다.
참고 자료