Subnet Mask와 CIDR 계산 완벽 이해 — 서버 엔지니어가 반드시 알아야 할 IP 계산법
시스템 엔지니어를 위한 네트워크 5편
Subnet Mask와 CIDR 계산 완벽 이해 — 서버 엔지니어가 반드시 알아야 할 IP 계산법
네트워크를 공부하다 보면 다음과 같은 표현을 자주 만나게 된다.
192.168.10.100/24 10.10.10.10/16 172.16.20.50/26 192.168.100.10/27
처음 보면 /24, /16, /26, /27 같은 숫자가 단순한 네트워크 설정값처럼 보인다.
하지만 시스템 엔지니어에게 이 숫자는 매우 중요하다.
/24라는 숫자를 보면 다음을 바로 판단할 수 있어야 한다.
Subnet Mask Network Address Broadcast Address 사용 가능한 Host 범위 Host 개수 같은 Network인지 Gateway가 필요한지
예를 들어:
192.168.10.70/26
이라는 서버가 있다면 다음 질문에 바로 답할 수 있어야 한다.
이 서버가 속한 Network는? Broadcast는? 사용 가능한 IP 범위는? 192.168.10.100과 같은 Subnet인가? 192.168.10.130과 통신할 때 직접 통신하는가? Gateway를 사용하는가?
이것을 계산할 수 있어야 실제 서버 장애 분석에서도 Subnet 문제를 빠르게 찾아낼 수 있다.
이번 글에서는 Subnet Mask와 CIDR을 계산하는 방법을 처음부터 끝까지 알아본다.
1. Subnet Mask를 왜 알아야 하는가?
IP Address만 보면 네트워크의 크기를 알 수 없다.
예를 들어:
192.168.10.100
만 봐서는 이 서버가:
192.168.10.0/24
에 있는지,
192.168.10.0/25
에 있는지,
192.168.10.64/26
에 있는지 알 수 없다.
따라서 IP Address와 함께 Subnet 정보가 필요하다.
IP Address + Subnet Mask
또는 CIDR 방식으로:
192.168.10.100/24
처럼 표현한다.
Subnet Mask는 서버에게 다음 질문에 답할 수 있게 해준다.
"이 목적지 IP가 나와 같은 네트워크에 있는가?"
이 판단은 서버의 통신 방식 자체를 결정한다.
같은 Network
↓
ARP
↓
목적지 MAC
↓
Switch
반대로:
다른 Network
↓
Gateway
↓
Router
↓
목적지 Network
따라서 Subnet 계산은 단순한 수학 문제가 아니라 서버의 패킷 전달 방식과 직접 연결된 문제다.
2. Subnet Mask의 기본 구조
IPv4는 총 32비트다.
8 bit 8 bit 8 bit 8 bit ↓ ↓ ↓ ↓ 192 168 10 100
Binary로 표현하면:
11000000.10101000.00001010.01100100
Subnet Mask가 /24라면:
11111111.11111111.11111111.00000000
10진수로:
255.255.255.0
이다.
이를 그림으로 보면:
IP Address 11000000.10101000.00001010.01100100 <----------- Network -----------><Host> Subnet Mask 11111111.11111111.11111111.00000000 <----------- 24bit -------------><8bit>
즉 /24는:
Network Bit = 24 Host Bit = 8
이다.
3. CIDR란 무엇인가?
CIDR는 다음의 약자다.
Classless Inter-Domain Routing
CIDR 표기법에서는 Subnet Mask를 /숫자로 표현한다.
예:
192.168.10.100/24
여기서:
/24
는:
IPv4 32비트 중 앞의 24비트가 Network 부분이다.
라는 의미다.
따라서:
32 - 24 = 8
Host Bit는 8비트다.
4. CIDR와 Subnet Mask의 관계
가장 먼저 다음 표를 익혀두면 좋다.
CIDRSubnet MaskHost Bit일반적인 Host 수/8255.0.0.02416,777,214/16255.255.0.01665,534/24255.255.255.08254/25255.255.255.1287126/26255.255.255.192662/27255.255.255.224530/28255.255.255.240414/29255.255.255.24836/30255.255.255.25222/31255.255.255.2541특수 용도/32255.255.255.2550단일 Host
여기서 일반적인 Host 수 계산은:
2^(Host Bit) - 2
이다.
다만 /31, /32는 일반적인 LAN Host 계산 규칙과 다르게 사용될 수 있으므로 별도로 이해해야 한다.
5. 가장 먼저 외워야 하는 Binary 값
Subnet 계산을 빠르게 하려면 1 Octet의 Binary 값을 익혀두면 좋다.
128 64 32 16 8 4 2 1
각 비트가 1이면 해당 값을 더한다.
예:
11000000
는:
128 + 64 = 192
따라서:
11000000 = 192
다음:
11100000
은:
128 + 64 + 32 = 224
따라서:
11100000 = 224
자주 사용하는 값은 다음과 같다.
BinaryDecimal1000000012811000000192111000002241111000024011111000248111111002521111111025411111111255
이 표를 익혀두면 /25부터 /30까지 계산하기가 매우 쉬워진다.
6. /24를 기준으로 생각하기
실무에서는 /24를 기준으로 생각하면 편하다.
192.168.10.0/24
Subnet Mask:
255.255.255.0
전체 주소:
256개
Network:
192.168.10.0
Broadcast:
192.168.10.255
Host:
192.168.10.1 ~ 192.168.10.254
그런데 /24를 더 작은 네트워크로 나눌 수 있다.
/24 ↓ /25 ↓ /26 ↓ /27 ↓ /28 ↓ /29 ↓ /30
CIDR 숫자가 커질수록 Network Bit가 증가한다.
즉:
Network ↑ Host ↓
이다.
7. /25 계산하기
다음 네트워크를 보자.
192.168.10.0/25
/25는:
Network Bit = 25 Host Bit = 7
이다.
Subnet Mask:
255.255.255.128
왜 128인가?
마지막 Octet이:
10000000
이기 때문이다.
Host Bit가 7개이므로:
2^7 = 128
개의 주소를 갖는다.
따라서:
Network 192.168.10.0 Broadcast 192.168.10.127 Host 192.168.10.1 ~ 192.168.10.126
이다.
8. /25가 /24를 어떻게 나누는가?
192.168.10.0/24를 /25로 나누면:
192.168.10.0/25 192.168.10.128/25
두 개가 된다.
첫 번째:
Network 192.168.10.0 Host 192.168.10.1 ~ 126 Broadcast 192.168.10.127
두 번째:
Network 192.168.10.128 Host 192.168.10.129 ~ 254 Broadcast 192.168.10.255
그림으로 보면:
192.168.10.0/24
│
├── 192.168.10.0/25
│ .0 ~ .127
│
└── 192.168.10.128/25
.128 ~ .255
9. /26 계산하기
이번에는:
192.168.10.0/26
이다.
Network Bit:
26
Host Bit:
32 - 26 = 6
Host Bit가 6개이므로:
2^6 = 64
주소가 하나의 Subnet에 들어간다.
Subnet Mask:
255.255.255.192
왜 192인가?
11000000
이기 때문이다.
Network는 64 단위로 증가한다.
0 64 128 192
따라서:
192.168.10.0/26 192.168.10.64/26 192.168.10.128/26 192.168.10.192/26
총 4개의 Subnet이 만들어진다.
10. /26 네트워크 하나를 완벽하게 분석하기
다음 IP를 보자.
192.168.10.70/26
여기서 가장 중요한 것은:
70
이 어느 구간에 속하는지를 찾는 것이다.
/26은 64 단위다.
0 64 128 192
70은:
64 ~ 127
사이에 있다.
따라서:
Network 192.168.10.64
Broadcast:
192.168.10.127
Host:
192.168.10.65 ~ 192.168.10.126
정답은:
IP 192.168.10.70 Network 192.168.10.64 Broadcast 192.168.10.127 Host Range 192.168.10.65 ~ 192.168.10.126
이다.
11. /26 계산을 빠르게 하는 방법
실무에서는 매번 Binary AND 연산을 하지 않는다.
Block Size를 이용하면 훨씬 빠르다.
공식:
Block Size = 256 - Subnet Mask의 해당 Octet
/26의 Subnet Mask:
255.255.255.192
마지막 Octet:
192
따라서:
256 - 192 = 64
즉 Block Size는:
64
이다.
따라서 Network는:
0 64 128 192
단위로 증가한다.
이 방법을 익히면 Subnet 계산 속도가 크게 빨라진다.
12. /27 계산하기
192.168.10.0/27
Host Bit:
32 - 27 = 5
주소 개수:
2^5 = 32
Subnet Mask:
255.255.255.224
Block Size:
256 - 224 = 32
따라서 Network는:
0 32 64 96 128 160 192 224
로 증가한다.
즉:
192.168.10.0/27 192.168.10.32/27 192.168.10.64/27 192.168.10.96/27 192.168.10.128/27 192.168.10.160/27 192.168.10.192/27 192.168.10.224/27
총 8개의 Subnet이다.
각 Subnet은:
32개 주소
를 갖고 일반적으로:
30개 Host
를 사용할 수 있다.
13. /28 계산하기
192.168.10.0/28
Host Bit:
32 - 28 = 4
주소:
2^4 = 16
Subnet Mask:
255.255.255.240
Block Size:
256 - 240 = 16
따라서:
0 16 32 48 64 80 96 112 128 144 160 176 192 208 224 240
단위로 Network가 나뉜다.
예를 들어:
192.168.10.50/28
을 계산해보자.
50은:
48 ~ 63
에 들어간다.
따라서:
Network 192.168.10.48 Broadcast 192.168.10.63 Host 192.168.10.49 ~ 192.168.10.62
이다.
14. /29 계산하기
192.168.10.0/29
Host Bit:
3
주소 개수:
2^3 = 8
Subnet Mask:
255.255.255.248
Block Size:
256 - 248 = 8
따라서:
0 8 16 24 32 40 48 56 ...
단위로 나뉜다.
예:
192.168.10.35/29
35는:
32 ~ 39
에 속한다.
따라서:
Network 192.168.10.32 Host 192.168.10.33 ~ 38 Broadcast 192.168.10.39
이다.
15. /30 계산하기
/30은 네트워크 장비 간 Point-to-Point 연결에서 전통적으로 많이 사용되어 왔다.
192.168.10.0/30
Host Bit:
2
주소:
2^2 = 4
Subnet Mask:
255.255.255.252
Block Size:
256 - 252 = 4
따라서:
Network 192.168.10.0 Host 192.168.10.1 192.168.10.2 Broadcast 192.168.10.3
다음 네트워크는:
192.168.10.4/30
이다.
16. CIDR 계산 핵심 공식
여기까지 배운 것을 공식으로 정리해보자.
Host Bit
Host Bit = 32 - Prefix
예:
/26 32 - 26 = 6
전체 주소 개수
2^(Host Bit)
예:
/26 2^6 = 64
일반적인 Host 개수
2^(Host Bit) - 2
예:
/26 64 - 2 = 62
Block Size
특정 Octet에서:
256 - Subnet Mask 값
예:
/26 Subnet Mask 255.255.255.192 256 - 192 = 64
따라서:
0 64 128 192
단위로 Network가 증가한다.
17. 가장 중요한 Subnet 계산 공식표
CIDRMaskBlock Size전체 주소일반 Host/24255.255.255.0256256254/25255.255.255.128128128126/26255.255.255.192646462/27255.255.255.224323230/28255.255.255.240161614/29255.255.255.248886/30255.255.255.252442
이 표는 시스템 엔지니어라면 자주 사용하는 범위이므로 익숙해지는 것이 좋다.
18. 실제 문제 1 — 192.168.10.70/26
다음 IP를 계산해보자.
192.168.10.70/26
Step 1. Mask
255.255.255.192
Step 2. Block Size
256 - 192 = 64
Step 3. Network 구간
0 ~ 63 64 ~ 127 128 ~ 191 192 ~ 255
70은:
64 ~ 127
Step 4. 결과
Network 192.168.10.64 Broadcast 192.168.10.127 Host 192.168.10.65 ~ 192.168.10.126
19. 실제 문제 2 — 192.168.10.130/26
192.168.10.130/26
Block Size:
64
구간:
0 ~ 63 64 ~ 127 128 ~ 191 192 ~ 255
130은:
128 ~ 191
이다.
따라서:
Network 192.168.10.128 Broadcast 192.168.10.191 Host 192.168.10.129 ~ 192.168.10.190
20. 실제 문제 3 — 192.168.10.200/27
192.168.10.200/27
/27:
Mask 255.255.255.224
Block Size:
256 - 224 = 32
Network 구간:
0 ~ 31 32 ~ 63 64 ~ 95 96 ~ 127 128 ~ 159 160 ~ 191 192 ~ 223 224 ~ 255
200은:
192 ~ 223
에 있다.
따라서:
Network 192.168.10.192 Broadcast 192.168.10.223 Host 192.168.10.193 ~ 192.168.10.222
21. 실제 문제 4 — 172.16.50.77/28
이번에는 세 번째 Octet이 아니라 네 번째 Octet을 계산하면 된다.
172.16.50.77/28
/28:
Mask 255.255.255.240
Block Size:
16
범위:
64 ~ 79
77은 여기에 포함된다.
따라서:
Network 172.16.50.64 Host 172.16.50.65 ~ 172.16.50.78 Broadcast 172.16.50.79
22. 세 번째 Octet에서 Subnet이 발생하는 경우
지금까지는 대부분 마지막 Octet에서 계산했다.
하지만 /16보다 크고 /24보다 작은 Prefix에서는 세 번째 Octet을 계산해야 한다.
예:
172.16.70.10/20
/20의 Subnet Mask는:
255.255.240.0
이다.
세 번째 Octet의 Mask가:
240
이므로 Block Size:
256 - 240 = 16
이다.
따라서 세 번째 Octet은:
0 16 32 48 64 80 96 ...
단위로 나뉜다.
70은:
64 ~ 79
에 들어간다.
따라서:
Network 172.16.64.0/20 Broadcast 172.16.79.255 Host 172.16.64.1 ~ 172.16.79.254
이다.
이것이 매우 중요한 계산법이다.
23. /20 계산을 단계별로 다시 보기
172.16.70.10/20
Prefix
/20
Binary Mask
11111111.11111111.11110000.00000000
Decimal Mask
255.255.240.0
중요한 Octet
세 번째 Octet:
240
Block Size
256 - 240 = 16
Network
70이 속하는 구간:
64 ~ 79
따라서:
172.16.64.0
Broadcast
다음 Network:
172.16.80.0
바로 이전 주소:
172.16.79.255
최종 결과
Network 172.16.64.0 Host 172.16.64.1 ~ 172.16.79.254 Broadcast 172.16.79.255
24. /21 계산
172.16.70.10/21
Subnet Mask:
255.255.248.0
Block Size:
256 - 248 = 8
세 번째 Octet이:
0 8 16 24 32 40 48 56 64 72 80 ...
으로 증가한다.
70은:
64 ~ 71
범위다.
따라서:
Network 172.16.64.0 Broadcast 172.16.71.255
Host:
172.16.64.1 ~ 172.16.71.254
25. /22 계산
172.16.70.10/22
Subnet Mask:
255.255.252.0
Block Size:
256 - 252 = 4
세 번째 Octet:
0 4 8 12 ... 64 68 72 ...
70은:
68 ~ 71
에 포함된다.
따라서:
Network 172.16.68.0 Broadcast 172.16.71.255 Host 172.16.68.1 ~ 172.16.71.254
26. /23 계산
172.16.70.10/23
Mask:
255.255.254.0
Block Size:
256 - 254 = 2
세 번째 Octet:
0 2 4 6 ... 68 70 72 ...
70은 정확히 Network 시작점이다.
따라서:
Network 172.16.70.0 Broadcast 172.16.71.255 Host 172.16.70.1 ~ 172.16.71.254
27. /17 ~ /23을 계산하는 방법
중간 Prefix를 계산할 때 핵심은 하나다.
Subnet Mask에서 255가 아닌 Octet을 찾는다.
예:
/20
255.255.240.0
↑
세 번째 Octet에서 계산한다.
/22
255.255.252.0
↑
역시 세 번째 Octet이다.
반면:
/26
255.255.255.192
↑
네 번째 Octet에서 계산한다.
즉:
/1 ~ /8 → 첫 번째 Octet /9 ~ /16 → 두 번째 Octet /17 ~ /24 → 세 번째 Octet /25 ~ /32 → 네 번째 Octet
라고 생각하면 된다.
28. CIDR 계산 실전 공식
어떤 IP든 다음 5단계로 계산할 수 있다.
Step 1
Prefix를 확인한다.
192.168.10.70/26
↑
Step 2
Subnet Mask로 변환한다.
/26 → 255.255.255.192
Step 3
255가 아닌 Octet을 찾는다.
255.255.255.192
↑
Step 4
Block Size를 계산한다.
256 - 192 = 64
Step 5
IP가 속한 구간을 찾는다.
0 64 128 192
70은:
64 ~ 127
따라서:
Network 192.168.10.64 Broadcast 192.168.10.127 Host 192.168.10.65 ~ 126
이 5단계를 익히면 대부분의 기본 Subnet 계산을 빠르게 할 수 있다.
29. 두 IP가 같은 Subnet인지 판단하는 방법
실무에서 매우 자주 사용하는 계산이다.
다음 두 서버가 있다고 하자.
Server A 192.168.10.70/26 Server B 192.168.10.100/26
A의 Network:
192.168.10.64/26
B도:
192.168.10.64/26
이다.
따라서 같은 Subnet이다.
이번에는:
Server A 192.168.10.70/26 Server B 192.168.10.130/26
A:
192.168.10.64/26
B:
192.168.10.128/26
다르다.
따라서 서로 다른 Subnet이다.
30. 같은 Subnet인지 빠르게 판단하기
다음과 같은 환경을 생각해보자.
192.168.10.0/24
이것을 /26으로 나누면:
192.168.10.0/26 192.168.10.64/26 192.168.10.128/26 192.168.10.192/26
따라서:
192.168.10.10 192.168.10.50
은 같은 Subnet이다.
하지만:
192.168.10.10 192.168.10.70
은 다른 Subnet이다.
왜냐하면:
10 → 0 ~ 63 70 → 64 ~ 127
이기 때문이다.
31. 이것이 실제 서버 장애로 연결된다
서버 A:
192.168.10.10/26
서버 B:
192.168.10.70/26
이라고 하자.
두 서버 모두:
192.168.10.x
이므로 같은 네트워크처럼 보인다.
하지만 실제로는:
A Network 192.168.10.0/26
B:
Network 192.168.10.64/26
이다.
따라서 다른 네트워크다.
그런데 A의 Gateway 설정이 없거나 잘못되어 있다면:
A
192.168.10.10/26
│
│ Destination
│ 192.168.10.70
▼
다른 Network라고 판단
│
▼
Gateway 필요
하지만 Gateway가 없다.
결과:
통신 실패
이런 장애가 실제 현장에서 발생할 수 있다.
32. 잘못된 Subnet Mask 장애
이번에는 실제 서버 설정 오류를 생각해보자.
Server A:
IP 192.168.10.10 Mask 255.255.255.0
Server B:
IP 192.168.10.70 Mask 255.255.255.192
A는:
192.168.10.0/24
전체를 자신의 Local Network라고 생각한다.
B는:
192.168.10.64/26
만 자신의 Local Network라고 생각한다.
따라서 서로의 네트워크 판단이 다르다.
이런 구성은 장애를 매우 어렵게 만든다.
서버 A:
"192.168.10.70은 같은 네트워크다."
서버 B:
"192.168.10.10은 다른 네트워크다."
즉 한쪽에서는 직접 통신하려 하고 다른 쪽에서는 Gateway를 사용하려는 상황이 발생할 수 있다.
33. Linux에서 Subnet 설정 확인
서버에서:
ip -4 addr show ens160
예:
inet 192.168.10.70/26
여기서 /26을 확인한다.
그리고:
ip route
결과:
192.168.10.64/26 dev ens160 proto kernel scope link src 192.168.10.70 default via 192.168.10.65 dev ens160
이렇게 나온다면:
Network 192.168.10.64/26 Gateway 192.168.10.65
임을 확인할 수 있다.
34. ip route get으로 Subnet 판단 확인
목적지가:
192.168.10.100
이라고 하자.
ip route get 192.168.10.100
결과:
192.168.10.100 dev ens160 src 192.168.10.70
이면 직접 연결된 것으로 판단하고 있다.
반면 목적지가:
192.168.10.130
이면:
ip route get 192.168.10.130
결과:
192.168.10.130 via 192.168.10.65 dev ens160
처럼 Gateway를 사용하게 된다.
이 명령은 서버가 실제로 목적지를 어떻게 판단하고 있는지 확인하는 매우 강력한 도구다.
35. tcpdump로 Subnet 문제 확인하기
다음 서버를 생각해보자.
Server 192.168.10.70/26 Gateway 192.168.10.65
목적지:
192.168.10.100
이 서버는 같은 Subnet에 있다.
따라서 ARP 대상은:
192.168.10.100
이다.
tcpdump -e -nn -i ens160 arp
예:
ARP, Request who-has 192.168.10.100 tell 192.168.10.70
반면 목적지가:
192.168.10.130
이면 다른 Subnet이다.
따라서 ARP 대상은:
192.168.10.65
Gateway다.
ARP, Request who-has 192.168.10.65 tell 192.168.10.70
이 차이를 tcpdump에서 직접 확인할 수 있다.
36. Subnet 장애 분석의 핵심
장애가 발생했을 때 다음과 같이 생각하면 된다.
통신 대상
192.168.10.130
│
▼
내 IP
192.168.10.70/26
│
▼
같은 Network인가?
│
├── YES
│ ↓
│ ARP
│ ↓
│ Target MAC
│
└── NO
↓
Routing
↓
Gateway
따라서 장애가 발생하면 먼저:
ip addr
그리고:
ip route
그리고:
ip route get <목적지>
를 확인하는 것이 좋다.
37. VLSM이란 무엇인가?
실제 네트워크에서는 모든 Subnet을 같은 크기로 만들 필요가 없다.
예를 들어:
Server Network 100대 필요 Management Network 20대 필요 Network Device 6대 필요
모두 /24를 사용하면 IP가 낭비된다.
따라서 필요한 Host 수에 맞게 서로 다른 Prefix를 사용할 수 있다.
이를 VLSM이라고 한다.
Variable Length Subnet Mask
즉:
서로 다른 크기의 Subnet을 하나의 네트워크 안에서 사용하는 방식
이다.
38. VLSM 실제 예제
다음 네트워크가 있다고 하자.
192.168.10.0/24
필요한 Host:
Server 100대 Management 30대 Network 10대
가장 큰 네트워크부터 배정한다.
Server 100대
100대를 수용하려면:
/25
가 필요하다.
192.168.10.0/25
Host:
192.168.10.1 ~ 126
Management 30대
30대를 수용하려면:
/27
이다.
남은 공간에서:
192.168.10.128/27
Host:
192.168.10.129 ~ 158
Network 10대
10대를 수용하려면:
/28
이 필요하다.
192.168.10.160/28
Host:
192.168.10.161 ~ 174
이렇게 필요한 크기만큼 나누어 사용할 수 있다.
39. VLSM을 사용할 때 주의할 점
Subnet을 나눌 때는 반드시 경계가 맞아야 한다.
예를 들어 /27은:
32
단위다.
따라서 Network Address는:
0 32 64 96 128 160 192 224
중 하나여야 한다.
다음은 올바른 Network Address다.
192.168.10.128/27
하지만:
192.168.10.130/27
은 Host IP이지 Network Address가 아니다.
즉:
192.168.10.130/27
이라는 서버가 있다면 실제 Network는:
192.168.10.128/27
이다.
40. CIDR과 Routing의 관계
CIDR은 IP 주소를 나누는 것뿐만 아니라 Routing에서도 매우 중요하다.
예를 들어 Router에:
10.0.0.0/8
이라는 Route가 있다고 하자.
그리고:
10.10.10.0/24
라는 더 구체적인 Route가 있다고 하자.
목적지가:
10.10.10.50
이면 Router는 더 구체적인 Prefix를 선택한다.
10.10.10.0/24
이것을 일반적으로 Longest Prefix Match라고 한다.
즉:
Prefix가 더 긴 Route → 더 구체적인 Network → 우선 선택
이라는 개념이다.
이것은 앞으로 Routing을 배울 때 매우 중요하다.
41. 서버 엔지니어가 CIDR을 알아야 하는 이유
실제 서버 운영에서는 다음과 같은 작업이 매우 많다.
서버 IP 설정 Subnet 변경 Gateway 변경 방화벽 Rule 작성 Routing 설정 VLAN 구성 Cloud VPC 구성 Kubernetes Network 구성 Docker Network 구성 Load Balancer 설정 ACL 설정
이 모든 영역에서 CIDR이 사용된다.
예를 들어 방화벽에서:
192.168.10.0/24
라고 설정하면:
192.168.10.1 ~ 192.168.10.254
범위를 의미할 수 있다.
다음과 같이:
192.168.10.0/26
이라면:
192.168.10.1 ~ 192.168.10.62
범위가 된다.
따라서 CIDR을 이해하지 못하면 서버 방화벽과 네트워크 정책을 정확하게 작성하기 어렵다.
42. Kubernetes에서도 CIDR은 중요하다
시스템 엔지니어라면 Kubernetes에서도 CIDR을 자주 만나게 된다.
예:
Pod CIDR 10.244.0.0/16
또는:
Service CIDR 10.96.0.0/12
이런 값들이 있다.
따라서 Kubernetes에서:
Pod Network Service Network Node Network
을 구분할 때도 CIDR 이해가 필요하다.
결국 서버 네트워크에서 배운 CIDR 계산 능력이 Kubernetes 네트워크를 이해하는 기반이 된다.
43. Docker에서도 CIDR은 사용된다
Docker Network를 확인하면:
docker network inspect bridge
다음과 같은 설정을 볼 수 있다.
Subnet: 172.17.0.0/16 Gateway: 172.17.0.1
이것 역시 동일한 Subnet 개념이다.
즉:
물리 서버 ↓ Linux Network ↓ Docker Network ↓ Kubernetes Network
모두 IP와 CIDR이라는 같은 기본 원리를 사용한다.
44. 실전 장애 분석 예제
다음과 같은 서버가 있다고 하자.
Server A IP : 192.168.10.70 Subnet : /26 Gateway : 192.168.10.65
목적지:
192.168.10.100
통신이 되지 않는다.
먼저:
ip -4 addr show ens160
확인.
192.168.10.70/26
정상.
다음:
ip route
확인.
192.168.10.64/26 dev ens160 default via 192.168.10.65 dev ens160
정상.
다음:
ip route get 192.168.10.100
결과:
192.168.10.100 dev ens160
직접 연결이라고 판단한다.
이제:
ip neigh
확인.
192.168.10.100 dev ens160 INCOMPLETE
이제 ARP 문제 가능성이 높다.
다음:
tcpdump -e -nn -i ens160 arp
결과:
ARP Request Who has 192.168.10.100?
만 반복된다.
ARP Reply가 없다.
이때는:
Subnet 계산 → 정상 Routing 판단 → 정상 ARP → 실패
라는 식으로 장애 범위를 좁힐 수 있다.
가능한 원인은:
상대 서버 Down 상대 NIC 문제 VLAN 문제 Switch Port 문제 중복 IP 네트워크 장비 문제
등이다.
이것이 Subnet 계산이 실제 장애 분석으로 연결되는 과정이다.
45. Subnet 계산 실전 문제
다음 문제를 직접 계산해보자.
문제 1
192.168.1.100/24
정답:
Network 192.168.1.0 Broadcast 192.168.1.255 Host 192.168.1.1 ~ 254
문제 2
192.168.1.100/25
구간:
0 ~ 127 128 ~ 255
100은 첫 번째다.
정답:
Network 192.168.1.0 Broadcast 192.168.1.127 Host 192.168.1.1 ~ 126
문제 3
192.168.1.100/26
구간:
0 ~ 63 64 ~ 127 128 ~ 191 192 ~ 255
100은:
64 ~ 127
정답:
Network 192.168.1.64 Broadcast 192.168.1.127 Host 192.168.1.65 ~ 126
문제 4
192.168.1.100/27
구간:
96 ~ 127
정답:
Network 192.168.1.96 Broadcast 192.168.1.127 Host 192.168.1.97 ~ 126
문제 5
192.168.1.100/28
구간:
96 ~ 111
정답:
Network 192.168.1.96 Broadcast 192.168.1.111 Host 192.168.1.97 ~ 110
이처럼 Prefix가 증가할수록 Network가 작아진다.
46. CIDR 계산을 빠르게 하는 핵심 패턴
다음 패턴은 반드시 익숙해지는 것이 좋다.
/25 → 128 단위 /26 → 64 단위 /27 → 32 단위 /28 → 16 단위 /29 → 8 단위 /30 → 4 단위
예를 들어:
/27
이라고 하면 바로:
Block Size = 32
를 떠올린다.
/28
이면:
Block Size = 16
이다.
이것만 익혀도 현장에서 상당히 빠르게 계산할 수 있다.
47. CIDR 계산을 표로 정리
/24 255.255.255.0 Block 256 Host 254 /25 255.255.255.128 Block 128 Host 126 /26 255.255.255.192 Block 64 Host 62 /27 255.255.255.224 Block 32 Host 30 /28 255.255.255.240 Block 16 Host 14 /29 255.255.255.248 Block 8 Host 6 /30 255.255.255.252 Block 4 Host 2
48. 시스템 엔지니어의 Subnet 장애 분석 순서
Subnet과 관련된 장애가 발생했다면 다음 순서로 확인하는 것을 권장한다.
① IP Address
↓
② CIDR / Subnet Mask
↓
③ Network Address
↓
④ Destination Network
↓
⑤ Routing Table
↓
⑥ Gateway
↓
⑦ ARP / Neighbor
↓
⑧ tcpdump
↓
⑨ Switch / Router
Linux에서는:
ip -4 addr
↓
ip route
↓
ip route get <destination>
↓
ip neigh
↓
tcpdump -nn -i ens160 'arp or icmp'
순서로 확인할 수 있다.
49. 이번 편에서 반드시 기억해야 할 것
Subnet과 CIDR 계산은 복잡해 보이지만 핵심 원리는 간단하다.
첫 번째
IPv4는:
32bit
이다.
두 번째
CIDR:
/24 /25 /26
는 Network Bit의 개수다.
세 번째
Host Bit:
32 - Prefix
네 번째
전체 주소:
2^HostBit
다섯 번째
일반적인 Host 수:
2^HostBit - 2
여섯 번째
Block Size:
256 - 해당 Octet의 Subnet Mask
일곱 번째
Network Address:
IP가 속한 Block의 시작 주소
여덟 번째
Broadcast:
다음 Network Address - 1
아홉 번째
같은 Network면:
ARP → Destination MAC → Switch
다른 Network면:
Gateway → Router → Destination Network
마무리
Subnet Mask와 CIDR은 단순히 네트워크 자격증 시험을 위한 계산 문제가 아니다.
시스템 엔지니어가 서버를 운영하면서 실제로 매일 만나게 되는 개념이다.
서버 설정에서:
192.168.10.70/26
이라는 값을 봤을 때 단순히:
"IP가 192.168.10.70이구나."
에서 끝나는 것이 아니라:
/26 ↓ 255.255.255.192 ↓ Block Size 64 ↓ 192.168.10.64/26 ↓ Host 192.168.10.65 ~ 126 ↓ Broadcast 192.168.10.127
까지 머릿속에서 바로 연결할 수 있어야 한다.
그리고 이것이 실제 장애 분석에서는:
목적지 IP
↓
같은 Subnet인가?
│
├── YES
│ ↓
│ ARP
│ ↓
│ Destination MAC
│ ↓
│ Switch
│
└── NO
↓
Gateway
↓
Router
↓
Destination Network
이라는 패킷 전달 과정으로 이어진다.
결국 Subnet Mask와 CIDR을 이해한다는 것은 서버가 목적지를 어떻게 판단하고 패킷을 어디로 보낼지를 이해한다는 의미다.
다음 네트워크 교육에서는 이 개념을 실제 네트워크 장비와 연결해서 **「Gateway와 Routing 완벽 이해」**를 다루는 것이 자연스럽다.
다음 편에서는 다음 내용을 중심으로 진행할 수 있다.
Gateway란 무엇인가?
↓
Default Gateway란?
↓
Routing Table이란?
↓
ip route 완벽 분석
↓
ip route get 활용
↓
Static Route
↓
Destination Network 판단
↓
Gateway 장애
↓
잘못된 Route 장애
↓
tcpdump로 Gateway 통신 확인
↓
실제 서버 Routing 장애 분석
이 과정을 거치면 지금까지 배운 Ethernet → MAC → ARP → IP → Subnet이 실제 Routing으로 자연스럽게 연결된다.
중복 계산 예제를 줄여 글을 압축해줘CIDR 계산 절차를 앞쪽에 통합해줘/31과 /32 예외를 명확히 설명해줘
댓글
아직 댓글이 없습니다.
로그인 후 댓글을 남길 수 있습니다.