
VPC 란?
- Amazon VPC(Virtual Private Cloud)는 “내가 정의한 가상 네트워크” 안에 AWS 리소스(EC2/RDS/ALB 등)를 배치하는 서비스.
- 온프레미스 네트워크(스위치/라우터/서브넷/방화벽) 구조를 클라우드에서 비슷하게 구현하고, AWS의 확장성을 활용한다.
라우팅 관점: Subnet / Route Table / Internet gateway
Subnet은 “AZ 단위로 쪼갠 네트워크 구간”
- 서브넷 1개는 반드시 1개 AZ에만 속함.
Route Table은 “트래픽 길 안내 표”
- 라우트 테이블은 서브넷/VPC로 들어오고 나가는 트래픽의 경로 규칙을 가진다.
- VPC에는 Main Route Table이 있고, 서브넷별로 Custom Route Table을 붙일 수도 있다.
- 모든 라우트 테이블에는 삭제 불가능한 local route(VPC CIDR → local)가 기본으로 들어있고, 이게 같은 VPC 내 서브넷 간 통신 기반이 된다.
Internet Gateway(IGW)
- 서브넷이 인터넷과 통신하려면 라우팅에 0.0.0.0/0 → IGW가 필요하다.
- “서브넷 A만 인터넷 되게” 하려면: 서브넷 A에 연결된 라우트 테이블에만 0.0.0.0/0 → IGW를 넣고, 다른 서브넷은 해당 라우트 테이블을 따르지 않게 분리한다.
Public Subnet, Private Subnet
Public Subnet
- “인터넷으로 나가는 라우트(0.0.0.0/0 → IGW)가 있는 서브넷”
- Public IP가 있는 인스턴스는 인터넷 통신 가능
- 예: NAT, 웹 서버, 로드밸런서
Private Subnet
- “인터넷으로 나가는 라우트가 없는 서브넷”
- 인스턴스는 Private IP만 받음
- 인터넷 아웃바운드가 필요하면 보통 NAT를 사용
- 예: DB, App 서버
Subnet의 IPv4 주소: “AWS가 5개 IP 무조건 예약”
서브넷마다 AWS가 처음 4개 + 마지막 1개 IP를 예약해서 인스턴스에 할당 불가.
예) 10.0.0.0/24일 때 예약:
- 10.0.0.0 : 네트워크 주소
- 10.0.0.1 : VPC 라우터용
- 10.0.0.2 : Amazon 제공 DNS 매핑용
- 10.0.0.3 : 미래 사용 예약
- 10.0.0.255 : 브로드캐스트(※ VPC는 broadcast 미지원이라 예약)
VPC에서의 IP 종류: Private / Public / Elastic IP(EIP)
Private IP
- 서브넷 CIDR 범위에서 할당 (VPC 내부 통신의 기본)
Public IP
- AWS의 Public IP 풀에서 할당
- 인스턴스를 Stop/Start 하면 바뀔 수 있음.
Elastic IP(EIP)
- 내 계정에 할당(allocate)해두고 유지하는 고정 Public IPv4
- Stop/Start 해도 안 바뀌고, 다른 인스턴스로 재매핑 가능
- “공인 IP를 고정해야 하는데, 인스턴스가 바뀔 수도 있다” → EIP가 대표 해법
VPC 보안 2대장: Security Group vs Network ACL
Security Group(SG): “인스턴스(ENI) 단위 방화벽”
- Stateful: 인바운드 허용으로 들어온 트래픽의 리턴은 아웃바운드에 따로 룰 없어도 허용되는 개념
- 기본값: Inbound deny, Outbound allow all
Network ACL(NACL): “서브넷 단위 방화벽”
- Stateless: 인바운드/아웃바운드 각각 룰을 명시해야 함
- Allow/Deny 둘 다 가능, 룰 번호 순서대로 평가
- “서브넷 레벨에서 특정 IP를 차단” 같은 용도로 좋음
Private Subnet에서 인터넷 아웃바운드: NAT Gateway / NAT Instance
NAT의 목적
- Private Subnet 인스턴스가 IGW 없이 인터넷으로 나가게 해주는 장치(패킷이 VPC 밖으로 나갈 때 NAT 수행)
NAT Gateway (관리형)
- AWS가 관리, AZ 내에서 HA 성격
- NAT GW는 반드시 Public Subnet에 생성해야 인터넷과 통신 가능
- 생성 시 EIP를 붙여서 아웃바운드 출구 IP를 고정
- NAT GW 자체에는 SG를 붙이지 않고(관리형), 제어는 주로 서브넷 NACL 등으로 한다는 포인트가 나온다.
- Private Subnet 라우팅은 0.0.0.0/0 → NAT GW로 설정
NAT GW 고가용성(중요)
- NAT GW는 “단일 AZ 내에서”는 resilient이지만, AZ 장애 대비는 AZ별 NAT GW를 따로 만들어야 한다.
NAT Instance (직접 운영)
- Public Subnet에 EC2로 NAT 서버를 띄우는 방식
- 요구사항: Public/EIP 필요, Source/Destination check 비활성화 필수
- Private Subnet 라우트 테이블의 기본 경로를 NAT Instance ID로 보냄 (운영/패치/장애조치까지 전부 직접 해야 함)
댓글 남기기