📚 네트워크 · 패킷 분석 › 01. TCP/IP 구조 이해 — 15편
이전 글: 14. IPv4 주소와 서브넷(CIDR) — 같은 네트워크인지 판단하는 법 · 다음 글: 16. Default Gateway

1. 개념

Subnetting(서브넷팅) 은 하나의 IP 네트워크를 더 작은 여러 네트워크(서브넷)로 나누는 작업입니다. 방법은 단순합니다. Subnet Mask의 1 비트를 늘려서, 원래 호스트 부분이던 비트 일부를 네트워크 부분으로 "빌려 오는" 것입니다.

Subnet Mask 자체의 의미와 Network/Host 부분의 구분은 12. Subnet Mask란 무엇인가와 13. Network Address와 Host Address에서, /24 같은 표기와 사설·특수 대역은 14. IPv4 주소와 서브넷(CIDR) — 같은 네트워크인지 판단하는 법에서 다뤘습니다. 이 글은 "나누는 계산 절차" 만 다룹니다.

서브넷을 나누는 이유는 다음과 같습니다.

  • 브로드캐스트 범위 축소: 한 서브넷의 브로드캐스트는 그 서브넷 안에서만 퍼집니다.
  • 주소 낭비 감소: 필요한 호스트 수에 맞는 크기로 할당할 수 있습니다.
  • 구역 분리: 서버망·사용자망·관리망을 나누면 그 사이에 라우터나 방화벽 정책을 둘 수 있습니다.

2. 동작 원리

호스트 비트 h개 중 n개를 빌리면 다음이 성립합니다.

항목계산식설명
새 프리픽스 길이원래 프리픽스 + n예: /24에서 3비트 빌리면 /27
만들어지는 서브넷 수2ⁿ빌린 비트로 표현 가능한 조합 수
서브넷당 전체 주소 수2^(h−n)남은 호스트 비트로 표현 가능한 주소 수
서브넷당 사용 가능 호스트 수2^(h−n) − 2네트워크 주소·브로드캐스트 주소 제외 (/31, /32는 예외)
블록 크기256 − (해당 옥텟의 마스크 값)서브넷 시작 주소가 증가하는 간격

계산 순서를 흐름으로 정리하면 다음과 같습니다.

[요구사항] 필요한 서브넷 수 또는 서브넷당 호스트 수
      ↓
[비트 수 결정] 2ⁿ ≥ 서브넷 수  또는  2^h − 2 ≥ 호스트 수
      ↓
[새 마스크] 프리픽스 = 원래 + n  →  마스크 값 계산
      ↓
[블록 크기] 256 − 마스크 옥텟 값
      ↓
[범위 나열] 시작 주소(네트워크) ~ 다음 시작 − 1(브로드캐스트)

/31과 /32 예외: /31은 두 장비만 연결하는 점대점 링크에서 네트워크·브로드캐스트 주소 없이 두 주소를 모두 쓰도록 RFC 3021에 정의되어 있고, /32는 단일 호스트를 가리킵니다. 일반 LAN 계산에서는 "−2" 규칙을 적용합니다.


3. 주요 특징

  • 고정 길이 서브넷(FLSM): 모든 서브넷을 같은 크기로 나눕니다. 계산이 쉽지만 호스트 수가 다른 구역에서는 주소가 남습니다.
  • 가변 길이 서브넷(VLSM): 구역마다 다른 프리픽스를 씁니다. 큰 서브넷부터 먼저 배치해야 범위가 겹치지 않습니다.
  • 경계는 블록 크기의 배수: /27의 시작 주소는 반드시 32의 배수(.0, .32, .64 …)입니다. 10.10.0.40/27 같은 표기는 호스트 주소를 가리킬 뿐, 그 서브넷의 시작은 .32입니다.

자주 쓰는 크기를 한 번에 보면 다음과 같습니다(4번째 옥텟 기준).

프리픽스마스크블록 크기/24 안의 서브넷 수사용 가능 호스트
/25255.255.255.1281282126
/26255.255.255.19264462
/27255.255.255.22432830
/28255.255.255.240161614
/29255.255.255.2488326
/30255.255.255.2524642

4. 예시

계산 예시(값은 환경마다 다름): 10.10.0.0/24를 /27로 나눕니다. 3비트를 빌렸으므로 서브넷 8개, 블록 크기 32, 서브넷당 호스트 30개입니다.

서브넷사용 가능 범위브로드캐스트
10.10.0.0/27.1 ~ .30.31
10.10.0.32/27.33 ~ .62.63
10.10.0.64/27.65 ~ .94.95
………
10.10.0.224/27.225 ~ .254.255

VLSM 예시(값은 환경마다 다름): 192.168.10.0/24에 서버망 100대, 사용자망 50대, 관리망 10대, 라우터 간 링크 1개가 필요하다면 큰 것부터 배치합니다.

서버망   100대 → /25 (126) → 192.168.10.0   ~ .127
사용자망  50대 → /26 (62)  → 192.168.10.128 ~ .191
관리망    10대 → /28 (14)  → 192.168.10.192 ~ .207
링크       2대 → /30 (2)   → 192.168.10.208 ~ .211
남은 공간                 → 192.168.10.212 ~ .255 (추후 할당)

실습 예시: Linux에서 계산 결과를 도구로 검증할 수 있습니다. 패키지 이름이 배포판마다 다릅니다.

# Ubuntu
sudo apt install -y ipcalc
ipcalc 10.10.0.40/27

# Rocky Linux (기본 제공되는 ipcalc는 옵션 형식이 다름)
ipcalc -n -b -m 10.10.0.40/27

Ubuntu의 ipcalc는 Network·Broadcast·HostMin·HostMax를 표로 보여 주고, Rocky의 ipcalc는 NETWORK=10.10.0.32, BROADCAST=10.10.0.63 같은 형식으로 출력합니다. 손 계산과 결과가 같은지 확인하는 용도로 씁니다.


5. 보안 관점

  • 서브넷 = 정책을 걸 수 있는 경계입니다. 같은 서브넷 안의 통신은 라우터·방화벽을 거치지 않으므로, 서버망과 사용자망을 한 서브넷에 두면 둘 사이에 접근 통제를 걸 지점이 없습니다(구역 분리는 179. Network Segmentation에서 다룸).
  • 너무 큰 서브넷은 브로드캐스트·ARP 범위가 넓어지고, 내부 정찰 시 한 번에 훑을 수 있는 대상도 늘어납니다.
  • 겹치는 서브넷(설계 오류) 은 라우팅이 모호해지고, 방화벽 정책이 의도와 다른 범위에 적용되는 원인이 됩니다.

6. SOC 관점

관제자는 서브넷을 직접 나누기보다 "이 IP가 어느 구역에 속하는가" 를 판단하는 데 서브넷 계산을 씁니다.

흔적이 남는 곳

  • 방화벽 정책과 로그의 출발지·목적지 객체가 CIDR 단위로 정의됩니다.
  • SIEM의 자산(Asset) 정보나 네트워크 구역 정의(예: "서버망 = 192.168.10.0/25")가 서브넷 단위로 등록됩니다.

관제자가 확인할 질문

  • 출발지와 목적지가 같은 서브넷인가? 같다면 경계 방화벽 로그에는 남지 않는 것이 정상입니다.
  • 사용자망 IP가 서버망·관리망 서브넷으로 접근했는가? 허용된 흐름인가?
  • 한 출발지가 서브넷 전체 범위(.1 ~ .254)를 순차적으로 두드렸는가? 스캔 여부는 227. 다수 IP에 대한 Port 접근에서 다룸.

오탐 주의

  • 경계값을 잘못 계산하면 오판합니다. /25에서 .127은 브로드캐스트이고 .128은 다른 서브넷의 네트워크 주소입니다.
  • 문서상 구역 정의와 실제 설정이 다를 수 있으므로, 판단 전에 현재 라우팅·인터페이스 설정을 확인하는 것이 좋습니다.

7. 핵심 정리

  • Subnetting은 호스트 비트를 빌려 네트워크 비트로 쓰는 작업입니다.
  • n비트를 빌리면 서브넷 2ⁿ개, 서브넷당 사용 가능 호스트는 2^(남은 비트) − 2개입니다.
  • 블록 크기(256 − 마스크 옥텟 값)의 배수가 서브넷의 시작 주소입니다.
  • VLSM은 큰 서브넷부터 배치해야 범위가 겹치지 않습니다.
  • 서브넷 경계는 접근 통제를 걸 수 있는 경계이며, 관제에서는 "어느 구역의 IP인가"를 판단하는 기준입니다.
profile
코드에 숨겨진 위협을 읽고 AI로 보안의 미래를 설계합니다. 프론트엔드 개발 경험을 자산 삼아 더 견고하고 지능적인 보안 운영 시스템을 구축해 나가는 과정을 기록합니다

0개의 댓글