서브넷(Subnet)은 하나의 큰 네트워크를 더 작은 논리적 네트워크로 분할한 것입니다.
서브넷을 분리하면 네트워크 구간 간 트래픽을 방화벽이나 라우터로 제어할 수 있습니다. 데이터베이스 서버를 별도 서브넷에 두면 외부에서 직접 접근을 차단할 수 있습니다.
같은 서브넷 안의 모든 장치는 브로드캐스트 패킷을 수신합니다. 네트워크가 크면 브로드캐스트 트래픽이 과다해집니다. 서브넷으로 분리하면 브로드캐스트 영역이 작아집니다.
필요한 만큼 작은 서브넷을 할당하여 IP 주소를 효율적으로 사용합니다.
192.168.1.0/24 (256개 주소)를 4개의 서브넷으로 분할:
서브넷 1: 192.168.1.0/26 (64개 주소, 호스트 62개)
서브넷 2: 192.168.1.64/26 (64개 주소, 호스트 62개)
서브넷 3: 192.168.1.128/26 (64개 주소, 호스트 62개)
서브넷 4: 192.168.1.192/26 (64개 주소, 호스트 62개)
/24에서 /26으로 변경하면 네트워크 비트가 2개 늘어나 2² = 4개 서브넷이 생깁니다.
Public Subnet: 인터넷 게이트웨이를 통해 외부에서 접근 가능한 서브넷
Private Subnet: 인터넷에서 직접 접근이 불가능한 내부 서브넷
클라우드 아키텍처에서 전형적인 구성:
인터넷
↓
[인터넷 게이트웨이]
↓
퍼블릭 서브넷: 로드밸런서, NAT 게이트웨이, Bastion 호스트
↓
프라이빗 서브넷: 애플리케이션 서버, 데이터베이스
프라이빗 서브넷의 서버가 인터넷에 나가야 할 때는 NAT 게이트웨이를 거칩니다.
AWS를 예로 들면, 고가용성 구성에서 가용 영역(AZ)마다 서브넷을 하나씩 생성합니다.
VPC: 10.0.0.0/16
├── AZ-a 퍼블릭: 10.0.1.0/24
├── AZ-a 프라이빗: 10.0.10.0/24
├── AZ-b 퍼블릭: 10.0.2.0/24
└── AZ-b 프라이빗: 10.0.20.0/24
가용 영역 장애 시 다른 영역의 서브넷으로 서비스를 계속할 수 있습니다.