플랫폼, 데브옵스와 클라우드

VPC와 네트워킹

meellon 2026. 7. 3. 05:40

학습 목표

VPC·subnet·route table클라우드 네트워크 경계를 설계할 수 있다.

Security GroupNACLstateful·stateless·적용 위치 차이를 설명할 수 있다.

ALB·NLB 역할K8s Ingress·Service 연결을 설명할 수 있다.

NAT gatewayprivate subnet 아웃바운드설계할 수 있다.

public/private 서브넷 배치·CIDR 계획 실수피할 수 있다.

문제 상황

  • EKS workerpublic subnet에 — SSH·API 노출·스캔 폭주
  • RDS를 public 접근 허용인터넷에서 5432 시도
  • VPC CIDR 10.0.0.0/16 겹침peering 불가
  • NACL443 허용했는데 응답 stateless return 규칙 누락
  • ALBPod 502target group health·SG 미허용
  • private subnet Pod 이미지 pull 실패NAT 없음

앞서 클라우드 모델·리전·AZ; Network IP·NAT 개념. 이번 편은 AWS VPC 중심 실무 토폴로지다 (GCP VPC·Azure VNet은 동일 패턴).

1. VPC와 subnet

VPC(Virtual Private Cloud) — 리전 내 격리된 가상 네트워크. CIDR 하나 (예: 10.0.0.0/16).

구성  
VPC 10.0.0.0/16전체 주소 공간
Subnet VPC 조각단일 AZ속함
Route table subnet 연결목적지target
IGW Internet Gateway — public 인터넷
VPC 10.0.0.0/16
  public  10.0.1.0/24  (AZ-a)  → route 0.0.0.0/0 → IGW
  public  10.0.2.0/24  (AZ-b)
  private 10.0.11.0/24 (AZ-a)  → route 0.0.0.0/0 → NAT
  private 10.0.12.0/24 (AZ-b)
# code/vpc-subnet.example.tf
resource "aws_vpc" "main" {
  cidr_block           = "10.0.0.0/16"
  enable_dns_hostnames = true
}

resource "aws_subnet" "public_a" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.1.0/24"
  availability_zone = "ap-northeast-2a"
  map_public_ip_on_launch = true
}

resource "aws_subnet" "private_a" {
  vpc_id            = aws_vpc.main.id
  cidr_block        = "10.0.11.0/24"
  availability_zone = "ap-northeast-2a"
}
규칙  
Subnet AZ 전체AZ마다 public+private  
CIDR 겹침 금지 — peering·VPN  
/16 VPC → /24 subnet 여유미리 계획  
  • 앞서 CIDR (Network 13편) — 클라우드 콘솔 기본값 이해
  • 14편 Terraform — VPC IaC 대상

2. Route table

Route table목적지 CIDRnext hop (IGW, NAT, VPC peering, TGW).

대상 target subnet
10.0.0.0/16 local 모든
0.0.0.0/0 igw-xxx public
0.0.0.0/0 nat-xxx private
10.1.0.0/16 pcx-xxx peering
Public subnet:   default → IGW (inbound from internet possible if SG allows)
Private subnet:  default → NAT only (no direct inbound from internet)
실수  
privateIGW route 의도치 public
NAT 단일 AZ AZ 장애아웃바운드 전체 중단AZ별 NAT
main route table 혼용 subnet 전용 table

3. Security Group vs NACL

방화벽SGENI·instance 단위, NACLsubnet 단위.

  Security Group NACL
범위 ENI (EC2, ALB, RDS…) subnet 전체
상태 stateful — return 자동 stateless — in/out 별도
규칙 allow allow + deny 순서
기본 deny all inbound allow all (변경 권장)
# code/security-group.example.tf
resource "aws_security_group" "api" {
  name   = "api-sg"
  vpc_id = aws_vpc.main.id

  ingress {
    from_port       = 443
    to_port         = 443
    protocol        = "tcp"
    security_groups = [aws_security_group.alb.id]
  }
  egress {
    from_port   = 0
    to_port     = 0
    protocol    = "-1"
    cidr_blocks = ["0.0.0.0/0"]
  }
}
패턴  
ALB SG 443 from 0.0.0.0/0
App SG 8080 from ALB SG only
RDS SG 5432 from App SG only
NACL subnet 추가 격리드묾 필요
  • Network 방화벽클라우드SG일상
  • K8s NetworkPolicyPod 레벨 (플랫폼 추가 )

4. ALB와 NLB

로드 밸런서트래픽 분산·헬스 체크·TLS 종료.

  ALB (L7) NLB (L4)
계층 HTTP/HTTPS 라우팅 TCP/UDP
기능 path/host routing, TLS 초저지연, static IP
대상 IP·instance·Pod (IP mode) instance·IP
K8s Ingress controller 백엔드 Service type: LoadBalancer
Internet → ALB (public subnet) → target group → Pod / EC2 (private)
           TLS terminate at ALB
K8s 연결  
Ingress (7편) ALB Ingress ControllerAWS ALB 생성
Service LB NLB·CLBL4 직접
health readiness LB health 맞춤
  • 앞서 Ingress·TLSALB종료 지점 일반
  • 502SG·target unhealthy·wrong port

5. NAT gateway

Private subnet 리소스 — 인터넷 아웃바운드 (패키지·ECR·API) 필요 · 인바운드 직접 불가.

Private EC2 / EKS node (10.0.11.5)
    → route 0.0.0.0/0 → NAT GW (public subnet)
    → IGW → Internet
Return traffic: NAT remembers connection (SNAT)
   
NAT Gateway 관리형·AZ 고정·요금
NAT Instance 직접 운영레거시
VPC Endpoint S3·ECRNAT 우회·비용
설계  
EKS node private + NAT or endpoint
multi-AZ AZ마다 NAT (HA)
비용 NAT 시간·GBendpoint 검토
  • Network NAT (15편) — 사설 IP 공인 변환동일 아이디어
  • 17편VPC endpoint·관리형 서비스

6. EKS 배치 예시

리소스 subnet SG
ALB public 443 inbound
EKS nodes private cluster·node SG
RDS private 5432 from app
Control plane AWS 관리 endpoint access
                    ┌─ public subnet ─ ALB
Internet ─ IGW ─────┤
                    └─ public subnet ─ NAT GW
                              ↑
                    private subnet ─ EKS workers ─ RDS
체크  
API server access public vs private endpoint
Pod RDS SG 양방향 아님RDS inbound
peering 다른 VPC·온프레 CIDR route

7. 실무 체크리스트

항목 확인
CIDR peering·VPN 미래 겹침?
Subnet AZ 분산·public 최소?
Route privateNAT not IGW?
SG least privilege·SG 참조?
LB health·TLS·target port?
NAT multi-AZ·endpoint 대안?
IaC 14편 Terraform module?

8. 정리

  • VPC·subnet·route클라우드 네트워크 골격
  • SG stateful vs NACL stateless
  • ALB L7 Ingress · NLB L4 Service
  • NATprivate 아웃바운드
  • EKSprivate node + public ALB 표준
  • 다음 — 관리형 서비스 (RDS, S3, SQS, Lambda)

다음에 다룰 것

  • RDS·ElastiCache, S3
  • SQS/SNS, Lambda·Serverless 개요

해당 내용은 AWS VPC User Guide, AWS Well-Architected Framework 의 내용을 기반으로 합니다.

'플랫폼, 데브옵스와 클라우드' 카테고리의 다른 글

Well-Architected  (0) 2026.07.05
관리형 서비스  (1) 2026.07.04
클라우드 모델  (0) 2026.07.02
IaC와 GitOps  (0) 2026.07.01
배포 전략  (0) 2026.06.30