IPv4 주소는 32비트이고, 프리픽스는 네트워크가 끝나는 지점을 알려 준다
IPv4 주소는 8비트 옥텟 네 개로 쓰는 32비트 숫자이며 192.168.10.37이 한 예입니다. CIDR 표기(RFC 4632)는 슬래시와 프리픽스 길이를 덧붙입니다. 192.168.10.37/26은 앞 26비트가 네트워크를, 나머지 6비트가 그 안의 호스트를 구분한다는 뜻입니다. 프리픽스 길이가 예전의 A·B·C 클래스 경계를 대체했기 때문에 /26이나 /19 같은 네트워크가 가능합니다.
서브넷 마스크는 같은 내용을 주소 형태로 쓴 것으로, 프리픽스 길이만큼의 1 뒤에 0이 이어집니다. /26이면 1이 26개, 0이 6개인 11111111.11111111.11111111.11000000, 즉 255.255.255.192입니다. 일부 라우터 ACL 문법에서 쓰는 와일드카드 마스크는 비트를 뒤집은 0.0.0.63입니다.
비트 연산 두 개로 모든 계산이 끝납니다. 네트워크 주소는 IP 주소 AND 마스크이고, 브로드캐스트 주소는 호스트 비트를 모두 1로 채운 값, 즉 네트워크 주소 OR 와일드카드 마스크입니다.
192.168.10.37 = 11000000.10101000.00001010.00100101
마스크 /26 = 11111111.11111111.11111111.11000000 (255.255.255.192)
네트워크 (AND) = 11000000.10101000.00001010.00000000 = 192.168.10.0
브로드캐스트 (OR 와일드카드 0.0.0.63) = 192.168.10.63
사용 가능 호스트 = 192.168.10.1 ~ 192.168.10.62 (2^6 - 2 = 62)빠른 방법: 블록 크기
매번 이진수를 쓸 필요는 없습니다. 마스크가 255도 0도 아닌 옥텟(흥미로운 옥텟)을 찾아 256 - 그 옥텟의 마스크 값으로 블록 크기를 구하세요. /26에서는 네 번째 옥텟이 해당하고 마스크 값이 192이므로 블록 크기는 64이며, 네트워크는 0, 64, 128, 192에서 시작합니다. 주소 .37은 0에서 시작하는 블록에 속하므로 네트워크는 .0, 브로드캐스트는 다음 블록 직전인 .63입니다.
더 큰 예로 172.16.37.200/20을 봅시다. 마스크가 255.255.240.0이라 세 번째 옥텟이 해당하고 블록 크기는 256 - 240 = 16입니다. 세 번째 옥텟 37은 32에서 시작하는 블록(0, 16, 32, 48, ...)에 있으므로 네트워크는 172.16.32.0, 브로드캐스트는 172.16.47.255입니다. 사용 가능 범위는 172.16.32.1~172.16.47.254이고 호스트는 4,094개입니다.
/8~/32 참조 표
전체 주소 수는 2^(32 - 프리픽스)입니다. 사용 가능 호스트는 네트워크·브로드캐스트 주소를 뺀 2^(32 - 프리픽스) - 2이며, /31과 /32는 아래에서 설명하는 예외입니다. 표의 값은 마스크와 개수를 직접 계산해서 만들었습니다.
| 프리픽스 | 서브넷 마스크 | 와일드카드 | 전체 주소 | 사용 가능 호스트 |
|---|---|---|---|---|
| /8 | 255.0.0.0 | 0.255.255.255 | 16,777,216 | 16,777,214 |
| /9 | 255.128.0.0 | 0.127.255.255 | 8,388,608 | 8,388,606 |
| /10 | 255.192.0.0 | 0.63.255.255 | 4,194,304 | 4,194,302 |
| /11 | 255.224.0.0 | 0.31.255.255 | 2,097,152 | 2,097,150 |
| /12 | 255.240.0.0 | 0.15.255.255 | 1,048,576 | 1,048,574 |
| /13 | 255.248.0.0 | 0.7.255.255 | 524,288 | 524,286 |
| /14 | 255.252.0.0 | 0.3.255.255 | 262,144 | 262,142 |
| /15 | 255.254.0.0 | 0.1.255.255 | 131,072 | 131,070 |
| /16 | 255.255.0.0 | 0.0.255.255 | 65,536 | 65,534 |
| /17 | 255.255.128.0 | 0.0.127.255 | 32,768 | 32,766 |
| /18 | 255.255.192.0 | 0.0.63.255 | 16,384 | 16,382 |
| /19 | 255.255.224.0 | 0.0.31.255 | 8,192 | 8,190 |
| /20 | 255.255.240.0 | 0.0.15.255 | 4,096 | 4,094 |
| /21 | 255.255.248.0 | 0.0.7.255 | 2,048 | 2,046 |
| /22 | 255.255.252.0 | 0.0.3.255 | 1,024 | 1,022 |
| /23 | 255.255.254.0 | 0.0.1.255 | 512 | 510 |
| /24 | 255.255.255.0 | 0.0.0.255 | 256 | 254 |
| /25 | 255.255.255.128 | 0.0.0.127 | 128 | 126 |
| /26 | 255.255.255.192 | 0.0.0.63 | 64 | 62 |
| /27 | 255.255.255.224 | 0.0.0.31 | 32 | 30 |
| /28 | 255.255.255.240 | 0.0.0.15 | 16 | 14 |
| /29 | 255.255.255.248 | 0.0.0.7 | 8 | 6 |
| /30 | 255.255.255.252 | 0.0.0.3 | 4 | 2 |
| /31 | 255.255.255.254 | 0.0.0.1 | 2 | 2 (점대점, RFC 3021) |
| /32 | 255.255.255.255 | 0.0.0.0 | 1 | 1 (단일 호스트) |
특수 사례: /31과 /32
고전적인 공식대로면 /31은 주소 2개에서 예약 2개를 빼 사용 가능 호스트가 0개이고 /32는 -1개입니다. 실제 네트워크는 그렇게 쓰지 않습니다. RFC 3021은 점대점 링크용 /31 서브넷을 정의합니다. 링크에는 장치가 둘뿐이라 브로드캐스트가 필요 없으므로 두 주소를 모두 사용할 수 있습니다. 라우터 간 링크에서 /30 대비 주소를 절반만 쓰게 되고, 요즘의 라우터와 운영체제 대부분이 지원하지만 오래된 장비는 확인이 필요합니다.
/32는 주소 하나를 정확히 가리킵니다. 루프백의 호스트 라우트(10.1.1.1/32), 단일 IP 방화벽 규칙과 허용 목록, 클라우드 보안 그룹 항목에서 볼 수 있습니다. 제외할 네트워크·브로드캐스트 주소가 없으므로 -1개가 아니라 호스트 1개입니다.
표의 반대쪽 끝도 기억해 두세요. 0.0.0.0/0은 모든 IPv4 주소(기본 경로)이고, 10.0.0.0/8 같은 /8에는 1,670만 개의 주소가 있습니다. 사설 대역도 알아 둡시다. RFC 1918은 10.0.0.0/8, 172.16.0.0/12(172.16.0.0~172.31.255.255), 192.168.0.0/16을 예약했습니다.
/24를 같은 크기로 나누기
네트워크를 같은 크기로 나누려면 호스트 비트를 빌려 옵니다. n비트를 빌리면 2^n개의 서브넷이 생기고 프리픽스는 n만큼 길어집니다. 192.168.10.0/24를 4개로 나누려면 2비트를 빌려 /26 네트워크 네 개를 얻습니다. 블록 크기는 64이므로 .0, .64, .128, .192에서 시작합니다.
- 2개로: /25 두 개, 블록 크기 128(.0과 .128).
- 8개로: /27 여덟 개, 블록 크기 32(.0, .32, .64, .96, .128, .160, .192, .224), 각 30호스트.
- 16개로: /28 열여섯 개, 블록 크기 16, 각 14호스트.
- 64개로: /30 예순네 개, 블록 크기 4, 각 2호스트로 전형적인 점대점 크기.
| 서브넷 | 네트워크 | 사용 가능 범위 | 브로드캐스트 |
|---|---|---|---|
| 1 | 192.168.10.0/26 | 192.168.10.1 - 192.168.10.62 | 192.168.10.63 |
| 2 | 192.168.10.64/26 | 192.168.10.65 - 192.168.10.126 | 192.168.10.127 |
| 3 | 192.168.10.128/26 | 192.168.10.129 - 192.168.10.190 | 192.168.10.191 |
| 4 | 192.168.10.192/26 | 192.168.10.193 - 192.168.10.254 | 192.168.10.255 |
VLSM(가변 길이 서브넷팅) 실전
실제 네트워크는 크기가 다른 서브넷이 필요합니다. 확실한 방법은 요구 사항을 큰 것부터 정렬하고, 각각에 들어맞는 가장 작은 프리픽스(호스트 수 + 2 <= 2^(32 - 프리픽스))를 주고, 모든 서브넷이 자기 블록 크기의 배수에서 시작하도록 차례로 배치하는 것입니다.
10.0.5.0/24를 100호스트, 50호스트, 20호스트, 라우터 링크 2호스트용으로 나눈다고 합시다. /25는 126호스트를 담으므로 100호스트 서브넷은 /25입니다. 50호스트는 /26(62호스트), 20호스트는 /27(30호스트), 링크는 /30(2호스트)이 필요합니다. 범위의 위쪽부터 배치하면 10.0.5.0/25가 .0~.127, 10.0.5.128/26이 .128~.191, 10.0.5.192/27이 .192~.223, 10.0.5.224/30이 .224~.227입니다. 256개 중 128 + 64 + 32 + 4 = 228개를 쓰고 .228~.255는 앞으로의 확장용으로 남습니다.
큰 것부터 배치해야 하는 이유는 블록 정렬 때문입니다. /25는 .0이나 .128에서만 시작할 수 있습니다. 20호스트 /27을 먼저 .0에 놓으면 100호스트 /25는 앞쪽 절반에 들어가지 못하고 .128을 차지해 공간이 낭비됩니다.
10.0.5.0/25 100호스트 (사용 가능 126) .0 - .127
10.0.5.128/26 50호스트 (사용 가능 62) .128 - .191
10.0.5.192/27 20호스트 (사용 가능 30) .192 - .223
10.0.5.224/30 2호스트 (사용 가능 2) .224 - .227
남은 범위: 10.0.5.228 - 10.0.5.255요약(summarization)과 겹침 검사
인접한 서브넷 두 개는 크기가 같고 첫 번째가 더 큰 블록 경계에 정렬되어 있을 때만 하나의 경로로 요약할 수 있습니다. 192.168.0.0/24와 192.168.1.0/24는 192.168.0.0/23으로 합쳐집니다. 그러나 192.168.1.0/24와 192.168.2.0/24는 /23이 될 수 없습니다. /23은 세 번째 옥텟이 짝수에서 시작해야 하므로 192.168.0.0/23과 192.168.2.0/23 두 개가 되고, 둘 다 내 소유가 아닌 주소를 포함하게 됩니다.
두 CIDR 블록이 겹치는지 확인하려면 각각의 네트워크 주소와 브로드캐스트 주소를 계산합니다. 한쪽 범위가 시작할 때 다른 쪽이 아직 끝나지 않았다면 겹칩니다. 10.0.0.0/16(10.0.0.0~10.0.255.255)은 10.0.128.0/17(10.0.128.0~10.0.255.255)을 완전히 포함하며, VPC 피어링 실패와 VPN 경로 충돌의 흔한 원인입니다. IPv6도 128비트로 같은 프리픽스 논리를 따르고, LAN 하나는 관례적으로 /64입니다.
정답이 있는 연습 문제 다섯 개
계산기를 열기 전에 직접 풀어 보고 확인하세요. 문제마다 위에서 설명한 방법의 서로 다른 부분을 씁니다.
| 문제 | 풀이 | 정답 |
|---|---|---|
| 10.20.30.77/27이 속한 서브넷은? | 블록 크기 256 - 224 = 32, 77은 64에서 시작하는 블록에 속함 | 네트워크 10.20.30.64, 브로드캐스트 10.20.30.95, 사용 가능 .65~.94 |
| /22 안에 /28 서브넷이 몇 개 들어가는가? | 2^(28 - 22) = 2^6 | 16개 주소짜리 서브넷 64개 |
| 호스트 500개에 필요한 가장 짧은 프리픽스는? | 500 + 2 = 502이고 2^9 = 512가 들어맞는 첫 2의 거듭제곱이므로 호스트 비트 9, 프리픽스 32 - 9 | /23, 사용 가능 호스트 510개 |
| 호스트 1000개에 필요한 가장 짧은 프리픽스는? | 1000 + 2 = 1002, 2^10 = 1024 | /22, 사용 가능 호스트 1,022개 |
| 192.168.1.130은 192.168.1.0/25 안에 있는가? | /25는 .0~.127만 포함 | 아니요. 192.168.1.128/25에 속함 |
실제 장애로 이어지는 실수
가장 흔한 오류는 .0으로 끝나는 주소는 모두 네트워크 주소, .255로 끝나는 주소는 모두 브로드캐스트라고 가정하는 것입니다. 이는 프리픽스가 /24 이상일 때만 맞습니다. 192.168.0.0/23의 범위는 192.168.0.0~192.168.1.255이므로 192.168.0.255와 192.168.1.0은 둘 다 평범한 사용 가능 호스트입니다. 이를 할당하지 않는 소프트웨어나 방화벽에서 막아 버리는 엔지니어는 /24의 습관을 /23에 적용한 것입니다.
두 번째는 여유 없이 오늘의 호스트 수에 맞춰 크기를 정하는 것입니다. 사용 가능 주소가 62개인 /26은 기기가 62대가 되면 가득 차고, 운영 중인 서브넷의 주소를 바꾸려면 이를 참조하는 모든 고정 할당, DHCP 범위, 방화벽 규칙, DNS 레코드를 건드려야 합니다. 성장이 예상되면 프리픽스를 한 단계 짧게 잡으세요. 한 단계 작은 크기의 두 배 공간이 들 뿐이고, 주소 재할당 비용은 그보다 훨씬 큽니다.
세 번째는 겹침입니다. 두 사이트가 모두 192.168.1.0/24를 골랐다면 NAT나 주소 재할당 없이는 VPN으로 연결할 수 없습니다. 여러 사무실이나 클라우드 네트워크의 주소 공간을 계획할 때는 하나의 계획에서 겹치지 않는 블록을 할당하고, 이웃을 건드리지 않고 각자 두 배로 커질 수 있게 블록 사이에 여유를 두세요.
- 할당 계획을 CIDR 블록 목록으로 적고, 설정을 시작하기 전에 겹침이 없는지 검토하세요.
- 2의 거듭제곱 경계를 선호하세요. 10.1.0.0/16, 10.2.0.0/16 같은 배치는 임의의 범위보다 요약하기 쉽습니다.
- RFC 1918 주소는 공인 인터넷에서 라우팅되지 않으므로, 공개 서비스의 /32 허용 목록 항목은 공인 주소여야 합니다.