본문 바로가기

Cloud/AWS

AWS VPC란 무엇인가: Subnet, Route Table, Internet Gateway 개념 정리

반응형

VPC는 AWS 클라우드 안에서 사용자가 논리적으로 격리된 네트워크를 정의하고, 리소스 간 통신 경로를 직접 설계할 수 있게 해주는 핵심 네트워크 서비스입니다.

핵심 요약

  • VPC는 AWS 리전 안에서 사용자가 정의하는 가상 네트워크입니다.
  • Subnet은 VPC 안에서 AZ 단위로 나뉘는 IP 주소 범위입니다.
  • Route Table은 트래픽이 어디로 가야 하는지 결정하는 라우팅 규칙입니다.
  • Internet Gateway는 VPC와 인터넷 간 통신을 가능하게 하는 게이트웨이입니다.
  • 실무에서는 Public Subnet과 Private Subnet을 분리하고, 각각의 Route Table을 다르게 설정하는 것이 기본 설계입니다.

1. 왜 VPC가 필요한가

클라우드에서 EC2, RDS, Lambda 같은 리소스를 생성하면, 이 리소스들은 어딘가의 네트워크 안에 존재해야 합니다.

VPC가 없다면 모든 리소스가 같은 네트워크에 섞여 있게 됩니다. 이 경우 다음 문제가 생깁니다.

  • 서로 다른 서비스 간 네트워크 격리가 불가능합니다.
  • 외부 인터넷에 노출되면 안 되는 리소스를 보호하기 어렵습니다.
  • IP 주소 충돌이나 라우팅 혼선이 발생할 수 있습니다.

VPC는 이런 문제를 해결하기 위해 사용자가 직접 네트워크 경계를 정의하고, 리소스 간 통신 규칙을 설계할 수 있게 해줍니다.

2. VPC란 무엇인가

VPC(Virtual Private Cloud)는 AWS 리전 안에서 사용자가 정의하는 논리적으로 격리된 가상 네트워크입니다.

핵심 특성:

특성 설명
범위 하나의 AWS 리전에 속합니다
CIDR 생성 시 IP 주소 범위(CIDR 블록)를 지정합니다
격리 다른 VPC와 기본적으로 통신이 차단됩니다
제어 Subnet, Route Table, Security Group, NACL 등으로 트래픽을 제어합니다

VPC를 생성할 때는 CIDR 블록을 지정해야 합니다. 예를 들어 10.0.0.0/16으로 설정하면 약 65,000개의 IP 주소를 사용할 수 있습니다.

aws ec2 create-vpc --cidr-block 10.0.0.0/16 --region ap-northeast-2
Tip
CIDR 블록은 생성 후 변경이 제한적입니다. 향후 확장을 고려해 처음부터 충분한 범위를 잡는 것이 좋습니다. 일반적으로 /16이 가장 많이 사용됩니다.

3. 핵심 구성 요소

VPC를 구성하는 핵심 요소는 다음과 같습니다.

구성 요소 역할
Subnet VPC 안에서 AZ 단위로 나뉘는 IP 주소 범위
Route Table 트래픽의 목적지를 결정하는 라우팅 규칙
Internet Gateway (IGW) VPC와 인터넷 간 통신을 연결하는 게이트웨이
NAT Gateway Private Subnet에서 외부 인터넷으로 나가는 경로
Security Group 인스턴스 단위의 인바운드/아웃바운드 방화벽
Network ACL (NACL) Subnet 단위의 인바운드/아웃바운드 방화벽

이 글에서는 Subnet, Route Table, Internet Gateway를 중심으로 설명합니다. Security Group과 NACL은 별도 글에서 다룹니다.

4. Subnet

VPC Structure

4.1 Subnet이란

Subnet은 VPC의 CIDR 블록을 더 작은 단위로 나눈 것입니다. 각 Subnet은 하나의 Availability Zone(AZ)에 속합니다.

예를 들어 VPC가 10.0.0.0/16이라면:

Subnet CIDR AZ 용도
Public Subnet A 10.0.1.0/24 ap-northeast-2a 로드밸런서, Bastion
Public Subnet B 10.0.2.0/24 ap-northeast-2b 로드밸런서 (이중화)
Private Subnet A 10.0.11.0/24 ap-northeast-2a 애플리케이션 서버
Private Subnet B 10.0.12.0/24 ap-northeast-2b 애플리케이션 서버 (이중화)
DB Subnet A 10.0.21.0/24 ap-northeast-2a RDS
DB Subnet B 10.0.22.0/24 ap-northeast-2b RDS (이중화)

4.2 Public Subnet과 Private Subnet

Subnet 자체에 "Public" 또는 "Private"이라는 속성이 있는 것은 아닙니다. Route Table에 Internet Gateway로 향하는 경로가 있으면 Public Subnet, 없으면 Private Subnet으로 동작합니다.

구분 Route Table에 IGW 경로 용도
Public Subnet 있음 (0.0.0.0/0 → IGW) 외부에서 접근 가능한 리소스
Private Subnet 없음 외부에서 직접 접근 불가한 리소스
Security Note
데이터베이스, 애플리케이션 서버 등 외부 접근이 필요 없는 리소스는 Private Subnet에 배치하는 것이 기본 보안 원칙입니다.

4.3 Subnet 설계 시 고려사항

  • AZ 장애에 대비해 최소 2개 AZ에 Subnet을 분산합니다.
  • CIDR 블록은 향후 확장을 고려해 여유 있게 잡습니다.
  • 용도별로 Subnet을 분리하면 Security Group과 NACL 관리가 쉬워집니다.

5. Route Table

5.1 Route Table이란

Route Table은 Subnet 안의 리소스가 보내는 트래픽이 어디로 가야 하는지 결정하는 라우팅 규칙 모음입니다.

각 Subnet은 하나의 Route Table에 연결됩니다. 명시적으로 연결하지 않으면 VPC의 기본 Route Table(Main Route Table)이 적용됩니다.

aws-vpc-routing

5.2 Route Table 예시

Public Subnet용 Route Table:

Destination Target 설명
10.0.0.0/16 local VPC 내부 통신
0.0.0.0/0 igw-xxxxxxxx 인터넷으로 나가는 경로

Private Subnet용 Route Table:

Destination Target 설명
10.0.0.0/16 local VPC 내부 통신
0.0.0.0/0 nat-xxxxxxxx NAT Gateway를 통해 외부로 나가는 경로

5.3 Route Table 설계 시 고려사항

  • Public Subnet과 Private Subnet은 반드시 별도 Route Table을 사용합니다.
  • Main Route Table에는 인터넷 경로를 넣지 않는 것이 안전합니다. 새로 생성되는 Subnet이 의도치 않게 Public이 되는 것을 방지할 수 있습니다.
  • VPC Peering, Transit Gateway, VPN 연결 시 Route Table에 해당 경로를 추가해야 합니다.

6. Internet Gateway

6.1 Internet Gateway란

Internet Gateway(IGW)는 VPC와 인터넷 간 양방향 통신을 가능하게 하는 AWS 관리형 게이트웨이입니다.

특성:

  • VPC당 하나만 연결할 수 있습니다.
  • 수평 확장되며 가용성이 보장됩니다.
  • IGW 자체에는 별도 비용이 발생하지 않습니다. 다만 IGW를 통과하는 데이터 전송에는 EC2 데이터 전송 요금이 적용됩니다.
  • IGW가 연결되어 있어도 Route Table에 경로가 없으면 인터넷 통신이 되지 않습니다.

6.2 IGW 연결 방법

# Internet Gateway 생성
aws ec2 create-internet-gateway --region ap-northeast-2

# VPC에 연결
aws ec2 attach-internet-gateway \
  --internet-gateway-id igw-xxxxxxxx \
  --vpc-id vpc-xxxxxxxx

6.3 IGW와 NAT Gateway의 차이

기준 Internet Gateway NAT Gateway
방향 양방향 (인바운드 + 아웃바운드) 아웃바운드만
용도 Public Subnet의 인터넷 연결 Private Subnet의 외부 접근
비용 IGW 자체 무료 (데이터 전송 요금 별도) 시간당 $0.045 + GB당 $0.045 (리전별 상이)
보안 Public IP가 필요하므로 외부 노출 가능 Private IP 유지, 외부에서 접근 불가
Tip
외부 인터넷 접근이 필요하지만 외부에서의 인바운드 접근은 차단해야 하는 리소스는 Private Subnet + NAT Gateway 조합을 사용합니다.

7. 전체 구조 예시

일반적인 3-Tier 아키텍처에서 VPC 구조는 다음과 같습니다.

aws-vpc-traffic-flow

VPC (10.0.0.0/16)
├── Internet Gateway
├── Public Subnet A (10.0.1.0/24) - AZ-a
│   ├── ALB
│   └── NAT Gateway
├── Public Subnet B (10.0.2.0/24) - AZ-b
│   └── ALB
├── Private Subnet A (10.0.11.0/24) - AZ-a
│   └── EC2 (Application)
├── Private Subnet B (10.0.12.0/24) - AZ-b
│   └── EC2 (Application)
├── DB Subnet A (10.0.21.0/24) - AZ-a
│   └── RDS Primary
└── DB Subnet B (10.0.22.0/24) - AZ-b
    └── RDS Standby

트래픽 흐름:

  1. 사용자 → Internet Gateway → ALB (Public Subnet)
  2. ALB → EC2 (Private Subnet)
  3. EC2 → RDS (DB Subnet)
  4. EC2 → 외부 API: NAT Gateway → Internet Gateway → 인터넷

8. 실무 사용 사례

사례 1: 웹 서비스 기본 구조

  • Public Subnet: ALB, Bastion Host
  • Private Subnet: 애플리케이션 서버
  • DB Subnet: RDS, ElastiCache

사례 2: 마이크로서비스 + EKS

  • Public Subnet: ALB, NAT Gateway
  • Private Subnet: EKS Worker Node
  • DB Subnet: RDS, DynamoDB VPC Endpoint

사례 3: 하이브리드 연결

  • Public Subnet: 외부 서비스 연동
  • Private Subnet: 온프레미스 연결 (VPN / Direct Connect)

9. 보안 고려사항

Security Note
VPC 설계 시 보안은 네트워크 계층에서 시작됩니다. 아래 원칙을 기본으로 적용하는 것이 좋습니다.
  • Subnet 분리: 외부 접근이 필요한 리소스와 내부 리소스를 반드시 분리합니다.
  • Main Route Table: 인터넷 경로를 넣지 않습니다. 새 Subnet이 의도치 않게 Public이 되는 것을 방지합니다.
  • Security Group: 필요한 포트와 소스만 허용합니다. 0.0.0.0/0 인바운드는 최소화합니다.
  • NACL: Subnet 단위의 추가 방어 계층으로 사용할 수 있습니다.
  • VPC Flow Logs: 네트워크 트래픽을 기록하여 이상 트래픽을 탐지할 수 있습니다.

10. 비용/운영 고려사항

주의
VPC 자체는 무료이지만, VPC 안에서 사용하는 일부 리소스는 비용이 발생합니다.
리소스 비용 발생 여부
VPC 무료
Subnet 무료
Route Table 무료
Internet Gateway IGW 자체 무료 (데이터 전송 요금 별도)
NAT Gateway 시간당 $0.045 + GB당 $0.045 (리전별 상이)
Elastic IP (미사용 포함) 모든 Public IPv4에 $0.005/IP/시간 (2024.02~)
VPC Peering 데이터 전송 비용 (AZ 간, 리전 간 상이)

운영 관점:

  • VPC CIDR은 생성 후 확장이 제한적이므로 초기 설계가 중요합니다.
  • Multi-AZ 구성은 가용성을 높이지만 NAT Gateway 비용이 AZ 수만큼 증가할 수 있습니다.
  • VPC Flow Logs를 활성화하면 CloudWatch Logs 또는 S3 저장 비용이 발생합니다.

11. 자주 하는 실수

  1. CIDR 블록을 너무 작게 잡는 것: /24로 시작하면 Subnet을 나눌 여유가 없습니다. 일반적으로 /16을 권장합니다.
  2. Main Route Table에 IGW 경로를 넣는 것: 새로 생성되는 모든 Subnet이 자동으로 Public이 됩니다.
  3. 모든 리소스를 Public Subnet에 배치하는 것: 데이터베이스나 애플리케이션 서버는 Private Subnet에 두는 것이 기본입니다.
  4. AZ를 하나만 사용하는 것: AZ 장애 시 전체 서비스가 중단될 수 있습니다.
  5. NAT Gateway를 삭제하지 않는 것: 테스트 후 삭제하지 않으면 시간당 비용이 계속 발생합니다.

12. 정리

  • VPC는 AWS에서 네트워크를 설계하는 기본 단위입니다.
  • Subnet은 AZ 단위로 나뉘며, Route Table 설정에 따라 Public 또는 Private으로 동작합니다.
  • Route Table은 트래픽의 목적지를 결정하며, Public/Private Subnet은 별도 Route Table을 사용해야 합니다.
  • Internet Gateway는 VPC와 인터넷 간 양방향 통신을 가능하게 합니다.
  • 실무에서는 Public/Private/DB Subnet을 분리하고, 최소 2개 AZ에 분산하는 것이 기본 설계입니다.

참고 문서

반응형