子網路計算工具

192.168.1.128/26私有(RFC 1918)
網路位址
192.168.1.128
廣播位址
192.168.1.191
可用範圍
192.168.1.129 – 192.168.1.190
可用位址數
62
位址總數
64
子網路遮罩
255.255.255.192
萬用遮罩
0.0.0.63
前綴
/26 · 6 主機位元
二進位11000000.10101000.00000001.10000010

在你的瀏覽器中計算,不會傳送到任何地方,也不會進行任何查詢。依 RFC 3021,/31 的兩個位址都可使用;/32 只有一個可用主機;IPv6 既不保留網路位址也不保留廣播位址。

您輸入的內容不會被儲存、記錄或分享。

以 CIDR 表示法輸入位址,即可得到網路位址與廣播位址、可用的主機範圍、子網路遮罩、萬用遮罩與位址數量。IPv4 與 IPv6 都支援,全部在你的瀏覽器中計算,不做任何查詢。

使用方式

  1. 輸入位址與前綴,例如 192.168.1.130/26。
  2. 查看網路位址、廣播位址、可用範圍與主機數。
  3. 需要時可將網路平均切分成更小的子網路。

什麼是前綴

IPv4 位址共有 32 位元。斜線後面的前綴長度表示其中有多少位元用來識別網路,剩下的位元則用來識別網路中的主機。/24 固定了前 24 位元,留下 8 位元給主機,也就是 256 個位址;前綴每減少 1,區塊就加倍,所以 /23 是 512 個位址,/16 是 65,536 個。

子網路遮罩是把同樣的資訊寫成位址的形式:24 個 1 接著 8 個 0,就是 255.255.255.0。遮罩必須是連續的 1,這樣切分才會是一條單一邊界,而不是零散的位元。因此 255.255.0.255 根本不是遮罩;如果計算工具默默把它修正成最接近的合法遮罩,反而會掩蓋你正在找的設定錯誤。

萬用字元遮罩(wildcard mask)是子網路遮罩的反轉,之所以存在,是因為 Cisco 存取清單與 OSPF 是用「可以變動的位元」而不是「固定的位元」來描述。/24 的萬用字元遮罩是 0.0.0.255。需要哪一種完全取決於你在設定什麼,所以這裡兩者都會顯示。

二進位那一列至少值得讀一次。切子網路就是在 32 位元中畫一條界線,親眼看到那條線,通常比用點分十進位推算快得多。

應該一眼認出的位址範圍

RFC 1918 保留了三個私有用途、不會在網際網路上路由的 IPv4 區塊:10.0.0.0/8、172.16.0.0/12(注意是 172.16 到 172.31,而不是整個 172 開頭),以及 192.168.0.0/16。你會遇到的內部網路幾乎都是從其中之一切出來的。

還有幾個範圍常常出現,值得一眼認出。100.64.0.0/10 是電信級 NAT(CGNAT),用在 ISP 客戶與 ISP 自有路由器之間,出現在家用網路的頻率比多數人以為的高。169.254.0.0/16 是鏈路本地位址,在 DHCP 失敗時自行指派,所以看到這個範圍的位址,通常代表出了問題,而不是刻意的設定。127.0.0.0/8 是迴路位址,是整個 /8,不只有 127.0.0.1。224.0.0.0/4 是多播,255.255.255.255 則是受限廣播位址。

文件與範例用途則有 RFC 5737 保留的三個區塊:192.0.2.0/24、198.51.100.0/24 和 203.0.113.0/24。在架構圖或部落格文章中,應該使用這些位址,而不是隨手挑一個屬於別人的位址。

切割網路

切割區塊就是把邊界往右移。一個 /24 切成四份,得到四個各 64 個位址的 /26;切成兩份,得到兩個各 128 個位址的 /25。因為前綴永遠對應 2 的次方,計算方式始終相同,而這也正是限制所在:你無法建立剛好 100 個位址的子網路,只能選 64 或 128。

可變長度子網路遮罩(VLSM)是依照實際需求決定每個子網路的大小,而不是全部切成一樣大。兩台路由器之間的點對點連線只需要兩個位址,所以給 /31 或 /30;有 60 台裝置的使用者 VLAN 給 /26;預期會成長的伺服器網段給 /24。做得好的關鍵主要是預留空間:子網路一旦超出前綴容量,重新編號就得動到每一台裝置、每一條防火牆規則,以及每一筆引用它的靜態設定。

按照可以彙總的邊界來分配也很有幫助。如果一個據點的所有網段都落在同一個 /20 裡,網路的其他部分只需要一條路由就能到達,而不是十六條;在大型環境中,這個差距會不斷累積。

IPv6 不是位數更多的 IPv4

計算方式相同,但設計前提並不相同,所以沿用 IPv4 的習慣,往往會做出彆扭的 IPv6 網路。

標準的子網路大小永遠是 /64,與主機數量無關。無狀態位址自動設定(SLAAC)依賴 64 位元的主機部分,所以切得比 /64 更細會讓它失效,除非是點對點連線、而且你清楚自己放棄了什麼,否則不值得這麼做。據點通常會分配到 /48 或 /56,也就是 65,536 或 256 個子網路。這樣設計的用意是讓你不必再考慮節省位址,每個 VLAN 直接分配一個 /64 即可,不需要精打細算。

IPv6 沒有廣播位址,原本的工作由多播負責。前綴內也沒有保留位址,所以一個 /64 真的有 18,446,744,073,709,551,616 個可用位址,「減二」的習慣在這裡不適用。此外,NAT 不在這個模型之中:主機擁有可全球路由的位址,能否連線由防火牆決定。這是觀念的轉變,而不是算術的差異。

為小型辦公室切割一個 /24

假設你手上有 192.168.10.0/24,而需要容納四種東西:大約 50 台員工裝置、十幾台伺服器、幾台印表機和攝影機,以及兩條連到分公司路由器的點對點線路。直覺反應是把這個區塊平均切成四個 /26,但這樣會浪費掉大半空間,真正需要餘裕的地方反而不夠用。

可變長度子網路切割的做法好得多。員工 VLAN 給 192.168.10.0/26,可用位址 62 個。伺服器給 192.168.10.64/27,可用 30 個,數量翻倍也還放得下。印表機和攝影機放在 192.168.10.96/27,因為把它們和使用者網路分開,防火牆規則會單純很多。這樣一來 192.168.10.128/25 整段都還空著,兩條線路可以從這段的尾端各取一個 /30,也就是 192.168.10.252/30 和 192.168.10.248/30,中間留白。

之所以要留下空隙而不是緊緊塞滿,是因為日後若要重新編號,等於要動到每一台裝置、每一個 DHCP 範圍、每一條防火牆規則和每一筆靜態設定。私有範圍裡的位址空間不用錢,但為了重新編號而賠上的一個週末可不便宜。

路由器如何處理這些前綴

路由表就是一份前綴與下一跳的清單,而挑選的規則是最長前綴比對:包含該目的地的路由當中,最明確的那一條勝出。若表中同時有 10.0.0.0/8 和 10.1.0.0/16,一個送往 10.1.2.3 的封包會走 /16,跟這兩條路由的加入順序無關。

預設路由 0.0.0.0/0 不過就是所有可能前綴中最不明確的一條,所以它只在其他都不符合時才會用到。單單這一個機制,就能解釋大多數讓人意外的路由行為,包括為什麼加了一條更明確的路由,就會悄悄蓋過原本那條範圍較大的路由。

路由彙總則是刻意運用同一個道理。如果某個據點的所有子網路都落在同一個 /20 之內,網路的其他部分只需要一筆記錄而不是十六筆,這讓路由表維持精簡,也代表據點內部某條線路不穩時,那些震盪不會往外擴散。不考慮彙總的位址規劃,會讓路由表隨著任何人新增的每一個 VLAN 線性膨脹。

讓子網路真正可用的那些服務

子網路本身其實沒什麼作用。DHCP 會從其中的一段位址池發放位址,而這段池子應該只是整個範圍的一部分,而不是全部,要保留空間給需要固定位址的伺服器、印表機和網路設備。用 MAC 位址做保留,可以讓裝置拿到穩定的位址,又不必在裝置上做設定,通常這是兩種做法中比較好的一種。

閘道依慣例會放在第一個或最後一個可用位址上,而跨據點保持一致比你選哪一個更重要:知道閘道永遠是 .1 的工程師,排查問題時會快得多。

NAT 是私有範圍能連上網際網路的原因,同時也是為什麼 10.0.0.0/8 或 192.168.0.0/16 裡的位址對你網路以外的任何人都毫無意義。當日誌裡的來源顯示為私有位址時,你看到的是 NAT 的內側,必須靠轉換表才能找出真正的主機。100.64.0.0/10 的電信級 NAT 在 ISP 的規模上做的是同一件事,這也是為什麼要辨識用戶身分,越來越需要在位址之外再加上一個通訊埠號碼。

為雲端網路做子網路規劃

在 AWS、Azure 和 Google Cloud 上,術語一樣但限制不同。每家業者都會在每個子網路中保留數個位址:AWS 會佔用五個,也就是網路位址、閘道、兩個留給 DNS 與未來用途的位址,以及廣播位址,所以一個 /28 的可用位址是十一個,而不是十四個。

VPC 的 CIDR 通常一旦決定就很難更動,因此值得在挑選時就把對接(peering)考慮進去:兩個範圍重疊的網路,不做轉換就無法互連,而最常見的原因就是大家都沿用預設的 10.0.0.0/16。為每個環境、每個區域保留不同的範圍,可以避開一種完全沒有好選項的遷移。

子網路一般是以可用區為單位劃分,再把每個可用區的範圍切成公有與私有兩層,這是標準做法。在層與層之間預留第三層的空間,例如資料層或是未來的可用區,在設計階段完全不花成本,卻能避免十八個月後才冒出來、那種不連續又難看的位址配置。

排查問題時如何解讀計算結果

現實中最常見的問題是:兩個位址是不是在同一個子網路裡。因為如果不是,主機就會把封包交給閘道而不是直接送出,防火牆或路由的問題也就跟著進場了。比對兩者的網路位址就能立刻得到答案:遮罩相同且網路位址相同,就是同一個子網路。

遮罩設錯是經典的設定失誤,會產生不對稱的症狀,也就是一端連得到另一端,反過來卻不通,因為兩邊對於目的地是不是在本地有不同的認知。把兩個網路並排來看,會讓問題一目了然,而這是讀兩份設定檔往往做不到的。

另一個能快速給出答案的是範圍標示。169.254.0.0/16 裡的位址代表 DHCP 失敗了,127.0.0.0/8 裡的位址代表有東西綁在回送介面而不是實體介面上,而在你以為會拿到公有位址的地方卻出現 100.64.0.0/10 的位址,通常代表 ISP 的路由器正在做電信級 NAT。

常見問題

為什麼有些計算機說 /31 的可用主機是零?
因為它們無條件扣掉網路位址與廣播位址。RFC 3021 針對點對點連線改變了這一點:/31 剛好有兩個位址,而且兩個都可以指派,這也是為什麼路由器之間的連線常用它,而不必浪費一個 /30。/32 同樣是單一主機且可用,不是負一。本工具兩者都正確處理。
為什麼 /24 的可用主機是 254 而不是 256?
區塊中的第一個位址代表網路本身,最後一個是廣播位址,兩者都不能指派給主機。這就是常見的「減二」的由來。它適用於 IPv4 的 /30 以上區塊;比這更小的情況請見上一題。
IPv6 每個子網路也會少兩個位址嗎?
不會。IPv6 根本沒有廣播位址(對應的功能由多播負責),也不像 IPv4 那樣保留前綴中的全零位址。IPv6 前綴中的每一個位址都可以指派,因此 /64 會顯示完整的 18,446,744,073,709,551,616。
那一行二進位在表示什麼?
把位址以二進位表示,並剛好在前綴邊界切開:左邊有顏色的部分是遮罩涵蓋的網路部分,其餘是主機部分。這個邊界正是子網路劃分的本質,直接看它通常比從點分十進位遮罩推算更快。
為什麼我的子網路遮罩被拒絕?
子網路遮罩必須是一連串的 1 之後接一連串的 0。255.255.255.192 有效,255.255.0.255 無效。有些工具會默默把不連續的遮罩四捨五入成最接近的有效值,但那正好掩蓋了你想找出的設定錯誤。本工具會拒絕並說明原因。
有任何東西被送到伺服器嗎?
沒有。這只是算術,在你的瀏覽器中完成,不做 DNS 解析、不做 WHOIS 查詢,也沒有任何形式的查詢。你輸入的位址通常是不願公開的內部範圍,它不會被傳送到任何地方。

最後更新:

回報問題

請提供操作步驟、預期結果及實際結果。請移除機密與個人資料。

相關工具