← 返回部落格

什麼是 CIDR 區塊?表示法解析

什麼是 CIDR 區塊?表示法解析

CIDR 區塊是以基底位址與前綴長度表示的一段 IP 位址範圍,例如 192.168.1.0/24,斜線後的數字表示有多少個前導位元被固定用來識別網路。CIDR 代表無類別域間路由(Classless Inter-Domain Routing),網路在路由表、防火牆規則與雲端安全群組中即是以此方式描述。

如何閱讀 CIDR 表示法

IPv4 位址有 32 位元。在 192.168.1.0/24 中,/24 表示前 24 位元是網路部分,其餘 8 位元可自由用來識別其中的主機。這 8 個自由位元提供 2^8 = 256 個位址,範圍從 192.168.1.0 到 192.168.1.255。這條規則適用於任何前綴:區塊大小是 2 的(32 減去前綴長度)次方。

  • /8 固定一個八位元組,包含 16,777,216 個位址,例如 10.0.0.0/8。
  • /16 固定兩個八位元組,包含 65,536 個位址,例如 172.16.0.0/16。
  • /24 包含 256 個位址,而 /32 恰好是一個位址。
  • /0 是所有位址,在防火牆規則中你會看到 0.0.0.0/0,意思是「任何地方」。

較舊的子網路遮罩形式說的是同一件事。/24 等於 255.255.255.0,/16 等於 255.255.0.0,/20 等於 255.255.240.0。在 IPv6 中,相同的概念適用於 128 位元,因此 2001:db8::/32 固定了前 32 位元。

為何 CIDR 取代了有類別定址

在 CIDR 之前,位址被劃分為固定的類別:A、B 和 C,前綴分別為 /8、/16 和 /24。需要 2,000 個位址的組織,必須取得有 65,536 個位址的 B 類,浪費大部分,或是取得數個 C 類,使路由表膨脹。CIDR 允許任何前綴長度,因此 /21(2,048 個位址)可以被精確配發。它也讓相鄰的區塊得以彙總:兩個在邊界上對齊的相鄰 /24,可以作為一個 /23 宣告,使全球路由表保持較小。

對齊與可用位址

區塊必須從符合其大小的邊界開始。/24 必須從最後一個八位元組為 0 的位址開始;/22 必須從第三個八位元組為 4 的倍數處開始,例如 10.0.4.0/22。這就是為何 10.0.3.0/22 無效:它沒有對齊,工具會拒絕它,或悄悄將其正規化到真正的邊界。在一般子網路中,第一個位址識別網路,最後一個是廣播位址,因此 /24 提供 254 個可用主機位址。雲端供應商往往會在每個子網路中再保留數個,因此在規劃大小之前,請先查看其規則。

實務上在哪裡會遇到 CIDR

防火牆與允許清單是最常見的情況。允許 203.0.113.0/24 只需一個項目就能放行 256 個位址。危險在於範圍太廣:本意是 /24 卻寫成 /16,可能放行數以萬計互不相關的主機。當你只知道單一 IP 時,找出周圍的區塊是一個調查步驟,其中部分工作可以用 ipto 完成。IP 範圍目錄讓你依 /8 與 /16 區塊瀏覽位址空間,並附上每個區塊的國家與 ASN 明細。ASN 查詢顯示歸屬於某個網路的範圍,而 IP whois 查詢則透過 RDAP 回傳已登記的區塊,告訴你某個組織所持有的確切範圍。

保留範圍同樣以 CIDR 表示。私有空間如 10.0.0.0/8、172.16.0.0/12 和 192.168.0.0/16、迴路 127.0.0.0/8 以及鏈路本地 169.254.0.0/16,都不應作為公開來源出現。bogon IP 檢查工具會告訴你某個位址是否落在其中,而 ipto IP 查詢則為相同目的回傳 bogon 和 bogon_type 欄位。

彙總也可以反向運作:要判斷兩個範圍是否能合併,請檢查它們是否大小相同、相鄰,且第一個範圍從合併後區塊的邊界開始。只要有一個條件不符,你就需要兩個項目而不是一個。

常見錯誤

  • 將基底位址與主機混為一談。192.168.1.0/24 描述的是網路,而不是某台裝置。
  • 因為一個位址就封鎖整個範圍。共用主機代管區塊中的單一濫用主機,並不會讓周圍的 /24 都變成敵意,封鎖它可能波及無辜的客戶。
  • 忘了 IPv6。只針對 IPv4 範圍撰寫的規則,會讓 IPv6 流量不受過濾。

若要快速做合理性檢查,請計算主機位元數,將 2 提升到該次方,並與你預期的結果比較。API 文件說明了如何以程式方式取得範圍資料。

直接的答案

/24 表示 IPv4 位址的前 24 位元用來識別網路,留下 8 位元給主機。這會得到 256 個位址,例如 192.168.1.0 到 192.168.1.255。
對 IPv4 而言,用 32 減去前綴長度,再將 2 提升到該次方。/28 有 2^4 = 16 個位址,/20 有 2^12 = 4,096 個位址。
它們以不同形式描述同一個邊界:CIDR 使用像 /24 這樣的前綴長度,而子網路遮罩則寫成 255.255.255.0。CIDR 表示法更簡短,也適用於 IPv6。
← 返回部落格