判斷IP是否屬于某個網段
判斷一個IP是否是否屬于某個CIDR網段,核心是比較IP與網段的網絡位是否一致,步驟如下:
一、明確CIDR網段的兩個關鍵信息
假設要判斷的IP是 IPx
,目標網段是 CIDR = 網段地址/n
(例如 192.168.1.0/24
):
- 網段地址:如
192.168.1.0
(網段的基準地址) - 前綴長度
n
:如24
(表示前n
位是網絡位,后面是主機位)
二、判斷步驟(以IPv4為例)
步驟1:將IP和網段地址轉換為32位二進制
- 例:判斷
192.168.1.5
是否屬于192.168.1.0/24
- IPx:
192.168.1.5
→ 二進制:11000000.10101000.00000001.00000101
- 網段地址:
192.168.1.0
→ 二進制:11000000.10101000.00000001.00000000
- IPx:
步驟2:根據前綴長度 n
截取前 n
位(網絡位)
- 前綴
n=24
→ 截取前24位:- IPx的網絡位:
11000000.10101000.00000001
(前3段) - 網段地址的網絡位:
11000000.10101000.00000001
(前3段)
- IPx的網絡位:
步驟3:比較兩者的網絡位是否完全相同
- 若相同 → IP屬于該網段;若不同 → 不屬于。
- 上例中兩者網絡位相同 →
192.168.1.5
屬于192.168.1.0/24
。
三、簡化計算法(無需手動轉二進制)
利用子網掩碼快速判斷(子網掩碼 = 前 n
位為1,后 32-n
位為0):
- 計算子網掩碼:根據
n
寫出子網掩碼(如n=24
→255.255.255.0
)。 - 分別與子網掩碼做“與運算”:
IPx & 子網掩碼
→ 得到IP的網絡地址網段地址 & 子網掩碼
→ 得到網段的網絡地址
- 比較兩個結果:若相等,則IP屬于該網段。
示例:
- IPx =
192.168.1.5
,子網掩碼 =255.255.255.0
192.168.1.5 & 255.255.255.0 = 192.168.1.0
- 網段地址 =
192.168.1.0
192.168.1.0 & 255.255.255.0 = 192.168.1.0
- 結果相等 → 屬于該網段。
四、常見場景舉例
目標網段 | 測試IP | 是否屬于 | 原因(網絡位是否相同) |
---|---|---|---|
10.0.0.0/8 | 10.249.5.24 | 是 | 前8位均為 10 |
172.16.0.0/16 | 172.16.100.5 | 是 | 前16位均為 172.16 |
192.168.0.0/24 | 192.168.1.1 | 否 | 前24位分別為 192.168.0 和 192.168.1 |
五、工具輔助(避免手動計算)
- 在線工具:搜索“CIDR查詢”,輸入IP和網段即可自動判斷(如
cidr.xyz
)。 - 命令行:Linux中用
ipcalc
工具:ipcalc 192.168.1.5/24 # 直接顯示該IP是否在網段內
核心邏輯:IP與網段的網絡位(前n位)完全一致,則屬于該網段。