📄 2025.12.04 (Day 29) [AWS VPC: 네트워크 구성 및 연결]

1. 핵심 개념 정리 (Concepts & Theory)

#핵심 개념간결한 설명
1Amazon VPC (Virtual Private Cloud)AWS 클라우드 내에서 논리적으로 격리된 가상 네트워크 를 생성하는 서비스입니다. 사용자가 정의한 IP 주소 범위(CIDR 블록), 서브넷, 라우팅 테이블, 게이트웨이를 구성하여 완전한 제어 권한을 가집니다. On-Premise 데이터센터처럼 네트워크를 설계할 수 있습니다.
2CIDR (Classless Inter-Domain Routing)IP 주소 범위를 표기하는 방식으로 IP주소/서브넷 마스크 형태입니다. 예: 10.0.0.0/16은 10.0.0.0 ~ 10.0.255.255 (65,536개 IP). /16은 앞 16비트가 네트워크 부분이고, 나머지 16비트가 호스트 부분입니다. VPC 생성 시 CIDR 블록을 지정합니다.
3서브넷 (Subnet)VPC 내에서 IP 주소 범위를 더 작은 단위로 분할한 네트워크 세그먼트입니다. 각 서브넷은 하나의 가용 영역(AZ) 에 속하며, Public Subnet (인터넷 게이트웨이 연결)과 Private Subnet (인터넷 직접 접근 불가)으로 구분됩니다.
4인터넷 게이트웨이 (Internet Gateway, IGW)VPC와 인터넷 간 양방향 통신 을 가능하게 하는 게이트웨이입니다. Public Subnet의 라우팅 테이블에 IGW를 기본 게이트웨이(0.0.0.0/0)로 설정하여 인터넷 접속을 허용합니다. 수평 확장 가능하고 고가용성이 보장됩니다.
5NAT Gateway / NAT InstancePrivate Subnet의 인스턴스가 인터넷에 아웃바운드 연결 (예: 소프트웨어 업데이트, API 호출)을 가능하게 하지만, 인바운드 연결은 차단 합니다. NAT Gateway는 AWS 관리형 서비스(고가용성, 자동 확장), NAT Instance는 EC2 인스턴스(사용자 관리).
6라우팅 테이블 (Route Table)네트워크 트래픽의 경로를 결정 하는 규칙 집합입니다. 각 서브넷은 하나의 라우팅 테이블과 연결되며, 목적지 IP 범위(Destination)와 타겟(Target: IGW, NAT Gateway, VPC Peering 등)을 정의합니다. 가장 구체적인 경로(Longest Prefix Match)가 우선 적용됩니다.
7보안 그룹 (Security Group)EC2 인스턴스 등 리소스에 연결되는 가상 방화벽 으로, 상태 저장형(Stateful) 입니다. 인바운드/아웃바운드 규칙을 정의하며, 기본적으로 모든 인바운드 차단, 모든 아웃바운드 허용 입니다. Allow 규칙만 정의 가능(Deny 불가).
8네트워크 ACL (NACL, Network Access Control List)서브넷 레벨에서 작동하는 무상태형(Stateless) 방화벽 입니다. 인바운드/아웃바운드 규칙을 번호 순서대로 평가하며, Allow와 Deny 모두 정의 가능 합니다. 응답 트래픽도 명시적 규칙 필요.
9VPC Peering두 VPC 간 프라이빗 네트워크 연결 을 제공합니다. AWS 백본 네트워크를 사용하여 두 VPC가 같은 네트워크에 있는 것처럼 통신. 리전 간(Inter-Region) 또는 계정 간(Cross-Account) Peering 가능. CIDR 블록이 겹치면 안 됩니다. 비전이적(Non-transitive): A-B, B-C Peering 시 A-C 직접 통신 불가.
10AWS Transit Gateway여러 VPC와 On-Premise 네트워크를 중앙 허브로 연결 하는 서비스입니다. 수천 개의 VPC를 하나의 Transit Gateway에 연결 가능하며, 라우팅을 중앙 집중식으로 관리. VPC Peering의 풀 메쉬 복잡도 해결.
11VPC EndpointVPC 내 리소스가 인터넷 게이트웨이, NAT, VPN 없이 AWS 서비스에 프라이빗 연결 하는 기능입니다. Interface Endpoint (ENI 기반, PrivateLink 사용, 대부분 서비스 지원)와 Gateway Endpoint (S3, DynamoDB만 지원, 무료)로 구분.
12VPN (Virtual Private Network)On-Premise 네트워크와 AWS VPC를 암호화된 터널로 연결 합니다. Site-to-Site VPN (On-Premise 라우터 ↔ AWS VGW)과 Client VPN (개별 사용자 ↔ VPC) 제공. IPsec 프로토콜 사용.
13AWS Direct ConnectOn-Premise와 AWS 간 전용 물리적 네트워크 연결 을 제공합니다. 인터넷을 경유하지 않아 일관된 네트워크 성능, 높은 대역폭(1Gbps ~ 100Gbps), 낮은 지연시간 제공.

2. 실습 코드 & 응용 (Practice & Code Walkthrough)

(A) VPC 생성 및 기본 구성

VPC 생성 (AWS CLI):

# VPC 생성
aws ec2 create-vpc \
  --cidr-block 10.0.0.0/16 \
  --tag-specifications 'ResourceType=vpc,Tags=[{Key=Name,Value=my-vpc}]'

# 출력: VPC ID 확인 (예: vpc-0abcd1234efgh5678)

# VPC 정보 조회
aws ec2 describe-vpcs --vpc-ids vpc-0abcd1234efgh5678

# DNS 호스트 이름 활성화 (중요: EC2 인스턴스에 DNS 이름 부여)
aws ec2 modify-vpc-attribute \
  --vpc-id vpc-0abcd1234efgh5678 \
  --enable-dns-hostnames

CIDR 계산 예시:

10.0.0.0/16:

  • 네트워크 부분: 10.0 (16비트 고정)
  • 호스트 부분: 0.0 ~ 255.255 (16비트 가변)
  • IP 범위: 10.0.0.0 ~ 10.0.255.255
  • 사용 가능 IP: 65,536개 - 5개(AWS 예약) = 65,531개

10.0.1.0/24:

  • 네트워크 부분: 10.0.1 (24비트 고정)
  • 호스트 부분: 0 ~ 255 (8비트 가변)
  • IP 범위: 10.0.1.0 ~ 10.0.1.255
  • 사용 가능 IP: 256개 - 5개(AWS 예약) = 251개

AWS 예약 IP (각 서브넷마다):

  • 10.0.1.0: 네트워크 주소
  • 10.0.1.1: VPC 라우터
  • 10.0.1.2: DNS 서버
  • 10.0.1.3: 향후 사용 예약
  • 10.0.1.255: 브로드캐스트 주소 (VPC에서는 미지원이지만 예약)

(B) 서브넷 생성 (Public & Private)

Public Subnet 생성:

# Public Subnet 1 (AZ-A)
aws ec2 create-subnet \
  --vpc-id vpc-0abcd1234efgh5678 \
  --cidr-block 10.0.1.0/24 \
  --availability-zone ap-northeast-2a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-subnet-1}]'

# Public Subnet 2 (AZ-C, 고가용성)
aws ec2 create-subnet \
  --vpc-id vpc-0abcd1234efgh5678 \
  --cidr-block 10.0.2.0/24 \
  --availability-zone ap-northeast-2c \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=public-subnet-2}]'

# Public IP 자동 할당 활성화
aws ec2 modify-subnet-attribute \
  --subnet-id subnet-0xyz123 \
  --map-public-ip-on-launch

Private Subnet 생성:

# Private Subnet 1 (AZ-A)
aws ec2 create-subnet \
  --vpc-id vpc-0abcd1234efgh5678 \
  --cidr-block 10.0.11.0/24 \
  --availability-zone ap-northeast-2a \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=private-subnet-1}]'

# Private Subnet 2 (AZ-C)
aws ec2 create-subnet \
  --vpc-id vpc-0abcd1234efgh5678 \
  --cidr-block 10.0.12.0/24 \
  --availability-zone ap-northeast-2c \
  --tag-specifications 'ResourceType=subnet,Tags=[{Key=Name,Value=private-subnet-2}]'

서브넷 설계 예시:

VPC: 10.0.0.0/16

Public Subnets (인터넷 연결):

  • 10.0.1.0/24 (ap-northeast-2a) → 웹 서버, 로드 밸런서
  • 10.0.2.0/24 (ap-northeast-2c) → 웹 서버, 로드 밸런서

Private Subnets (애플리케이션):

  • 10.0.11.0/24 (ap-northeast-2a) → 애플리케이션 서버
  • 10.0.12.0/24 (ap-northeast-2c) → 애플리케이션 서버

Private Subnets (데이터베이스):

  • 10.0.21.0/24 (ap-northeast-2a) → RDS, ElastiCache
  • 10.0.22.0/24 (ap-northeast-2c) → RDS, ElastiCache

(C) 인터넷 게이트웨이 및 NAT Gateway 설정

인터넷 게이트웨이 (IGW) 설정:

# IGW 생성
aws ec2 create-internet-gateway \
  --tag-specifications 'ResourceType=internet-gateway,Tags=[{Key=Name,Value=my-igw}]'

# 출력: igw-0abc123def456789

# VPC에 IGW 연결
aws ec2 attach-internet-gateway \
  --internet-gateway-id igw-0abc123def456789 \
  --vpc-id vpc-0abcd1234efgh5678

NAT Gateway 설정:

# 1. Public Subnet에 Elastic IP 할당
aws ec2 allocate-address --domain vpc
# 출력: AllocationId: eipalloc-0xyz123

# 2. NAT Gateway 생성 (Public Subnet에 배치)
aws ec2 create-nat-gateway \
  --subnet-id subnet-0xyz123 \
  --allocation-id eipalloc-0xyz123 \
  --tag-specifications 'ResourceType=nat-gateway,Tags=[{Key=Name,Value=my-nat-gateway}]'

# 출력: nat-0abc123def (상태: pending → available까지 대기)

# NAT Gateway 상태 확인
aws ec2 describe-nat-gateways --nat-gateway-ids nat-0abc123def

# 고가용성: 각 AZ마다 NAT Gateway 생성 권장

(D) 라우팅 테이블 구성

Public Subnet 라우팅 테이블:

# 라우팅 테이블 생성
aws ec2 create-route-table \
  --vpc-id vpc-0abcd1234efgh5678 \
  --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=public-rt}]'

# 출력: rtb-0public123

# 인터넷 게이트웨이로 가는 기본 경로 추가
aws ec2 create-route \
  --route-table-id rtb-0public123 \
  --destination-cidr-block 0.0.0.0/0 \
  --gateway-id igw-0abc123def456789

# Public Subnet과 라우팅 테이블 연결
aws ec2 associate-route-table \
  --route-table-id rtb-0public123 \
  --subnet-id subnet-0xyz123  # public-subnet-1

aws ec2 associate-route-table \
  --route-table-id rtb-0public123 \
  --subnet-id subnet-0xyz456  # public-subnet-2

Private Subnet 라우팅 테이블:

# Private 라우팅 테이블 생성
aws ec2 create-route-table \
  --vpc-id vpc-0abcd1234efgh5678 \
  --tag-specifications 'ResourceType=route-table,Tags=[{Key=Name,Value=private-rt}]'

# 출력: rtb-0private456

# NAT Gateway로 가는 기본 경로 추가
aws ec2 create-route \
  --route-table-id rtb-0private456 \
  --destination-cidr-block 0.0.0.0/0 \
  --nat-gateway-id nat-0abc123def

# Private Subnet과 연결
aws ec2 associate-route-table \
  --route-table-id rtb-0private456 \
  --subnet-id subnet-0private111  # private-subnet-1

aws ec2 associate-route-table \
  --route-table-id rtb-0private456 \
  --subnet-id subnet-0private222  # private-subnet-2

라우팅 테이블 구조 예시:

Public Route Table (rtb-0public123): +———————–+———————+——–+ | Destination | Target | Status | +———————–+———————+——–+ | 10.0.0.0/16 | local | Active | | 0.0.0.0/0 | igw-0abc123 | Active | +———————–+———————+——–+

Private Route Table (rtb-0private456): +———————–+———————+——–+ | Destination | Target | Status | +———————–+———————+——–+ | 10.0.0.0/16 | local | Active | | 0.0.0.0/0 | nat-0abc123 | Active | +———————–+———————+——–+

해석:

  • 10.0.0.0/16 → local: VPC 내부 트래픽은 로컬 라우팅
  • 0.0.0.0/0 → igw/nat: 외부 인터넷 트래픽 경로

(E) 보안 그룹 및 NACL 설정

보안 그룹 생성 (웹 서버용):

# 보안 그룹 생성
aws ec2 create-security-group \
  --group-name web-server-sg \
  --description "Security group for web servers" \
  --vpc-id vpc-0abcd1234efgh5678

# 출력: sg-0web123

# HTTP 인바운드 허용 (전체 인터넷에서)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0web123 \
  --protocol tcp \
  --port 80 \
  --cidr 0.0.0.0/0

# HTTPS 인바운드 허용
aws ec2 authorize-security-group-ingress \
  --group-id sg-0web123 \
  --protocol tcp \
  --port 443 \
  --cidr 0.0.0.0/0

# SSH 인바운드 허용 (특정 IP만)
aws ec2 authorize-security-group-ingress \
  --group-id sg-0web123 \
  --protocol tcp \
  --port 22 \
  --cidr 203.0.113.0/24

보안 그룹 vs NACL 비교:

+——————-+——————-+——————-+ | 특성 | 보안 그룹 | NACL | +——————-+——————-+——————-+ | 작동 레벨 | 인스턴스 | 서브넷 | | 상태 | Stateful | Stateless | | 규칙 타입 | Allow만 | Allow + Deny | | 규칙 평가 | 모든 규칙 평가 | 번호 순서대로 | | 응답 트래픽 | 자동 허용 | 명시적 규칙 필요 | | 기본 설정 | 모든 트래픽 차단 | 모든 트래픽 허용 | +——————-+——————-+——————-+

방어 전략:

  1. NACL: 서브넷 경계 방어 (거친 필터링, IP 대역 차단)
  2. 보안 그룹: 인스턴스 세밀한 제어 (포트별, 소스별)

(F) VPC Peering 설정

VPC Peering 연결:

# VPC Peering 요청 생성 (VPC-A → VPC-B)
aws ec2 create-vpc-peering-connection \
  --vpc-id vpc-aaaaa \
  --peer-vpc-id vpc-bbbbb \
  --peer-region ap-northeast-2 \
  --tag-specifications 'ResourceType=vpc-peering-connection,Tags=[{Key=Name,Value=vpc-a-to-vpc-b}]'

# 출력: pcx-0peering123 (상태: pending-acceptance)

# VPC-B에서 Peering 요청 수락
aws ec2 accept-vpc-peering-connection \
  --vpc-peering-connection-id pcx-0peering123

라우팅 테이블 업데이트 (양방향):

# VPC-A의 라우팅 테이블: VPC-B CIDR → Peering 연결
aws ec2 create-route \
  --route-table-id rtb-vpc-a \
  --destination-cidr-block 10.1.0.0/16 \
  --vpc-peering-connection-id pcx-0peering123

# VPC-B의 라우팅 테이블: VPC-A CIDR → Peering 연결
aws ec2 create-route \
  --route-table-id rtb-vpc-b \
  --destination-cidr-block 10.0.0.0/16 \
  --vpc-peering-connection-id pcx-0peering123

(G) 실습 시나리오: 완전한 VPC 네트워크 구성

목표: 고가용성 웹 애플리케이션 아키텍처

인터넷 | | (IGW) | +—+———————————–+ | VPC: 10.0.0.0/16 | | | | [Public Subnet 1: 10.0.1.0/24] | | - ALB (Application Load Balancer) AZ-A | - NAT Gateway 1 | | | | [Public Subnet 2: 10.0.2.0/24] | | - ALB AZ-C | | - NAT Gateway 2 | | | | [Private Subnet 1: 10.0.11.0/24] | | - Web Server 1 (EC2) AZ-A | | | | [Private Subnet 2: 10.0.12.0/24] | | - Web Server 2 (EC2) AZ-C | | | | [Private Subnet 3: 10.0.21.0/24] | | - RDS Primary (AZ-A) | | | | [Private Subnet 4: 10.0.22.0/24] | | - RDS Standby (AZ-C) | +————————————–+


3. 실무/보안 관점 분석 (Insight & Scenario Mapping)

분야적용 시나리오
네트워크 아키텍처 설계다층 방어 구조: Public Subnet(ALB/Bastion) → Private Subnet(App Server) → Private Subnet(Database)로 계층 분리. 공격자가 DMZ를 침투해도 내부망 접근 차단. 고가용성 설계: 최소 2개 AZ에 리소스 분산 배치. 각 AZ마다 NAT Gateway 구성으로 AZ 장애 시에도 다른 AZ에서 인터넷 접속 가능. IP 주소 관리: VPC CIDR은 변경 불가하므로 초기 설계 시 충분한 IP 확보(/16 권장). 서브넷은 /24로 분할하여 256개 IP씩 할당.
보안 강화 전략최소 권한 네트워크 접근: 보안 그룹은 필요한 포트와 소스만 허용(SSH는 Bastion에서만). NACL로 알려진 공격 IP 대역 차단. Bastion Host 패턴: Private Subnet EC2는 직접 SSH 불가. Public Subnet에 Bastion Host 배치 → 여기서만 Private EC2 접속. VPC Flow Logs: 모든 네트워크 트래픽 로그를 S3 또는 CloudWatch에 저장. 의심스러운 트래픽 패턴 분석, 포트 스캔 탐지, 데이터 유출 추적.
하이브리드 클라우드VPN 연결: On-Premise 데이터센터와 VPC를 Site-to-Site VPN으로 연결. 초기 클라우드 마이그레이션 시 빠르게 구축. BGP 동적 라우팅으로 자동 경로 업데이트. Direct Connect: 전용선으로 On-Premise와 AWS 연결. 일관된 네트워크 성능, 대용량 데이터 전송. Transit Gateway 활용: 여러 VPC, On-Premise, Direct Connect를 하나의 Transit Gateway에 연결. 중앙 집중식 라우팅 관리.
비용 최적화NAT Gateway 비용 절감: NAT Gateway는 시간당 + 데이터 처리 비용. S3/DynamoDB는 Gateway Endpoint(무료) 사용. 다른 서비스는 Interface Endpoint(시간당 비용, 데이터 무료)로 NAT 우회. VPC Peering vs Transit Gateway: 소수 VPC 연결은 Peering(무료, 데이터 전송만 과금). 다수 VPC는 Transit Gateway(시간당 + 데이터 처리 비용, 관리 간소화). Elastic IP 비용: 사용 중인 EIP는 무료, 미사용 EIP는 시간당 과금.
모니터링 & 트러블슈팅VPC Flow Logs 분석: 비정상 트래픽 패턴 탐지(예: 짧은 시간 대량 연결 시도). 보안 그룹/NACL 차단 로그(REJECT) 확인으로 공격 시도 파악. Athena로 쿼리: SELECT * FROM vpc_flow_logs WHERE action='REJECT' AND dstport=22. Reachability Analyzer: 네트워크 경로 진단 도구. 소스에서 목적지까지 라우팅 테이블, 보안 그룹, NACL, IGW/NAT 등 모든 홉 분석. 연결 실패 원인 자동 식별.

4. 개인 인사이트 및 다음 단계 (Reflection & Next Steps)

  • 배운 점/느낀 점:

    • VPC는 AWS 네트워크의 기초: 모든 리소스가 VPC 안에서 동작하므로, VPC를 제대로 설계하지 않으면 나중에 아키텍처 변경이 매우 어렵습니다. CIDR 블록은 변경 불가하므로 초기 IP 주소 계획이 중요함을 깨달았습니다.
    • Public/Private Subnet 분리의 중요성: 웹 서버는 Public Subnet에, 데이터베이스는 Private Subnet에 배치하여 공격 표면을 최소화하는 것이 기본입니다.
    • 보안 그룹과 NACL의 차이: 보안 그룹은 Stateful(응답 자동 허용), NACL은 Stateless(명시적 규칙 필요). 두 개를 조합하여 다층 방어를 구현하는 것이 Best Practice입니다.
    • 라우팅 테이블의 역할: 트래픽이 어디로 가야 하는지 결정하는 핵심 요소입니다. Public Subnet은 IGW로, Private Subnet은 NAT Gateway로 라우팅.
    • VPC Peering의 제약: 비전이적(Non-transitive)이라는 점이 중요합니다. A-B, B-C Peering이 있어도 A-C는 직접 통신 불가. 다수 VPC 연결 시 Transit Gateway가 훨씬 효율적입니다.
  • 심화 방향:

    • AWS Transit Gateway 실습: 여러 VPC를 Transit Gateway로 연결하고, 라우팅 테이블로 VPC 간 통신 제어.
    • VPN 연결 실습: On-Premise 시뮬레이션(VirtualBox)과 AWS VPC를 Site-to-Site VPN으로 연결. IPsec 터널 설정, BGP 동적 라우팅 구성.
    • VPC Flow Logs 분석: Flow Logs를 S3에 저장하고 Athena로 쿼리. 의심스러운 트래픽 패턴(포트 스캔, 대량 연결 시도) 탐지.
    • AWS Network Firewall 실습: Suricata 룰 작성하여 애플리케이션 레벨 공격 차단.
    • Terraform으로 VPC 자동화: VPC 모듈 작성하여 서브넷, IGW, NAT Gateway, 라우팅 테이블, 보안 그룹을 코드로 관리.

5. 추가 참고사항 (Quick Reference)

CIDR 블록 계산표

CIDR서브넷 마스크사용 가능 IP용도
/32255.255.255.2551개단일 호스트
/28255.255.255.24011개 (16-5)매우 작은 서브넷
/24255.255.255.0251개 (256-5)일반적인 서브넷
/20255.255.240.04,091개 (4096-5)큰 서브넷
/16255.255.0.065,531개 (65536-5)VPC 권장 크기
/12255.240.0.01,048,571개매우 큰 VPC
/8255.0.0.016,777,211개최대 VPC 크기

VPC 구성 요소 제한 (기본값)

리소스제한증가 가능 여부
VPC/리전5개Yes (수백 개)
서브넷/VPC200개Yes
IGW/VPC1개No
NAT Gateway/AZ5개Yes
VPC Peering 연결/VPC50개Yes (125개)
보안 그룹/VPC2,500개Yes
보안 그룹/인스턴스5개Yes (16개)
규칙/보안 그룹60개 (In+Out)Yes (1000개)
NACL/VPC200개Yes
규칙/NACL20개 (In+Out)Yes (40개)

주요 AWS 서비스 포트 (보안 그룹 설정용)

서비스포트프로토콜설명
SSH22TCPLinux 원격 접속 (Bastion에서만 허용)
RDP3389TCPWindows 원격 데스크톱 (Bastion에서만)
HTTP80TCP웹 트래픽 (ALB에서 허용)
HTTPS443TCP암호화 웹 트래픽 (ALB에서 허용)
MySQL/Aurora3306TCP데이터베이스 (App SG에서만 허용)
PostgreSQL5432TCP데이터베이스 (App SG에서만 허용)
Redis6379TCPElastiCache (App SG에서만)
Custom App8080, 8443TCP애플리케이션 (Web SG에서만)
NFS2049TCPEFS 마운트 (App SG에서만)
DNS53UDP/TCPRoute 53 (VPC 내부)
Ephemeral1024-65535TCP응답 트래픽 (NACL에서 허용 필요)

보안 그룹 설계 패턴

1. 웹 계층 (ALB/Web Server):

Security Group: web-tier-sg Inbound:

  • HTTP (80) from 0.0.0.0/0
  • HTTPS (443) from 0.0.0.0/0 Outbound:
  • All traffic (기본값)

2. 애플리케이션 계층:

Security Group: app-tier-sg Inbound:

  • Custom TCP (8080) from web-tier-sg
  • Custom TCP (8443) from web-tier-sg Outbound:
  • MySQL (3306) to db-tier-sg
  • HTTPS (443) to 0.0.0.0/0 (외부 API 호출)

3. 데이터베이스 계층:

Security Group: db-tier-sg Inbound:

  • MySQL (3306) from app-tier-sg Outbound:
  • None (또는 최소 필요)

4. Bastion Host:

Security Group: bastion-sg Inbound:

  • SSH (22) from <관리자 IP>/32 Outbound:
  • SSH (22) to app-tier-sg
  • SSH (22) to db-tier-sg

네트워크 트러블슈팅 체크리스트

☑ CIDR 블록 충돌 확인 (VPC Peering, On-Premise) ☑ 서브넷이 올바른 AZ에 배치되었는지 확인 ☑ 인터넷 게이트웨이가 VPC에 연결되었는지 확인 ☑ NAT Gateway가 Public Subnet에 있고 EIP가 할당되었는지 확인 ☑ 라우팅 테이블이 올바른 서브넷에 연결되었는지 확인 ☑ Public Subnet 라우팅: 0.0.0.0/0 → IGW ☑ Private Subnet 라우팅: 0.0.0.0/0 → NAT Gateway ☑ 보안 그룹 인바운드 규칙 확인 (필요한 포트 허용) ☑ NACL 인바운드/아웃바운드 규칙 확인 (Ephemeral 포트 허용) ☑ EC2 인스턴스에 Public IP 또는 EIP 할당 확인 (Public Subnet) ☑ VPC Peering 시 양쪽 라우팅 테이블 업데이트 확인 ☑ VPC Flow Logs로 REJECT 로그 확인 ☑ Reachability Analyzer로 네트워크 경로 진단