클라우드 콘솔에서 VPC를 만들 때 10.0.0.0/16을 입력하고, k8s NetworkPolicy에서 172.16.0.0/12를 허용하고, 방화벽 규칙에서 0.0.0.0/0을 차단한다. 이 숫자들이 무엇을 의미하는지 정확히 모르면 서브넷 설계를 할 때마다 찍게 된다.
IPv4 주소 구조
IPv4 주소는 32비트 숫자다. 읽기 편하게 8비트씩 네 덩어리로 나눠 점으로 구분한다.
192.168.1.100
↓
11000000.10101000.00000001.01100100
각 덩어리는 0~255 범위다. 주소 전체로는 약 43억 개(2³²)가 존재한다.
CIDR 표기법
CIDR(Classless Inter-Domain Routing)은 IP 주소 범위를 주소/프리픽스 길이 형태로 표현한다.
192.168.1.0/24
뒤의 숫자(24)는 앞에서부터 고정된 비트 수다. /24면 앞 24비트가 고정이고, 나머지 32-24=8비트가 호스트 주소다. 호스트 주소가 8비트면 2⁸=256개 주소가 이 범위에 속한다.
192.168.1.0/24 → 192.168.1.0 ~ 192.168.1.255 (256개)
192.168.0.0/16 → 192.168.0.0 ~ 192.168.255.255 (65,536개)
10.0.0.0/8 → 10.0.0.0 ~ 10.255.255.255 (16,777,216개)
0.0.0.0/0 → 모든 IP (기본 경로, "anywhere")
x.x.x.x/32 → 딱 하나의 IP
프리픽스 길이가 작을수록 범위가 넓다. /16이 /24보다 256배 넓다.
서브넷 마스크와의 관계
예전 방식인 서브넷 마스크와 같은 의미다.
/24 = 255.255.255.0
/16 = 255.255.0.0
/8 = 255.0.0.0
CIDR이 더 간결하고 유연해서 현재는 CIDR을 표준으로 쓴다.
사설 IP 대역
인터넷에서 라우팅되지 않는, 내부 네트워크 전용으로 예약된 대역이다. 공인 IP를 절약하고 내부 네트워크를 외부와 분리하기 위해 RFC 1918에서 정의했다.
10.0.0.0/8 → 10.x.x.x, 약 1,670만 개
172.16.0.0/12 → 172.16.x.x ~ 172.31.x.x, 약 100만 개
192.168.0.0/16 → 192.168.x.x, 약 6만 5천 개
AWS VPC, GCP VPC, 온프렘 내부 네트워크는 모두 이 대역에서 할당한다. 이 범위의 주소는 인터넷에서 목적지로 쓸 수 없다 — 인터넷 라우터가 이 주소로 향하는 패킷을 드롭한다. 인터넷과 통신하려면 NAT를 거쳐 공인 IP로 변환해야 한다.
127.0.0.0/8은 루프백 대역이다. 127.0.0.1(localhost)이 여기 속한다. 자기 자신으로 향하는 트래픽이고 네트워크로 나가지 않는다.
VPC 서브넷 설계
AWS VPC를 예로 들면, 큰 CIDR을 잡고 서브넷으로 쪼개는 방식이다.
VPC: 10.0.0.0/16 (65,536개 주소)
├── public subnet AZ-a: 10.0.1.0/24 (256개)
├── public subnet AZ-b: 10.0.2.0/24 (256개)
├── private subnet AZ-a: 10.0.11.0/24 (256개)
├── private subnet AZ-b: 10.0.12.0/24 (256개)
└── (여분) 10.0.20.0/24 ~ ...
서브넷은 VPC CIDR 안에 겹치지 않게 잡아야 한다. 10.0.1.0/24와 10.0.1.128/25는 겹친다.
실무에서 VPC CIDR을 작게 잡으면 나중에 서브넷이 부족해서 곤란해진다. 처음부터 /16으로 넉넉하게 잡는 것이 좋다. 단, VPC Peering을 할 경우 연결하려는 VPC들의 CIDR이 겹치면 안 된다. 여러 VPC를 운영할 계획이라면 대역을 미리 나눠두는 것이 안전하다.
개발 VPC: 10.1.0.0/16
스테이징: 10.2.0.0/16
프로덕션: 10.3.0.0/16
트레이드오프
AWS 서브넷에서는 각 서브넷의 첫 4개 주소와 마지막 1개 주소를 AWS가 예약해 쓸 수 없다. /24 서브넷(256개)에서 실제 사용 가능한 주소는 251개다. 서브넷을 너무 작게 잡으면 파드나 ENI 수가 주소 수를 초과하는 상황이 생긴다. EKS처럼 파드마다 VPC IP를 할당하는 환경에서는 특히 서브넷 크기에 여유를 줘야 한다.