網路與 IP

IP 段劃分規則:按用途分割槽、按規模取 2 的冪、按位置連續

IP 段劃分規則可以落成四條:一個網段只放一種用途的裝置;掩碼按“裝置數 + 閘道器 + 網路位址和廣播位址”向上取 2 的冪;位址順序跟著機房、列、機櫃的物理順序走;在功能區、網段、機櫃三級各留餘量。照這四條劃出來的段,看位址就知道裝置在哪,擴容時已分配的位址不用動。

作者 頂聯產品團隊發布於 8 分鐘閱讀

IP 段劃分規則說到底要回答四個問題:這個段放什麼裝置、開多大、從哪裡開始、留多少餘量。對應的四條規則是:按用途分割槽,管理、IPMI、業務、儲存、裝機各用各的段;按規模取 2 的冪,把裝置數、閘道器、網路位址和廣播位址加起來,取不小於它的最小 2 的冪作為塊大小;按物理位置連續,同一列、同一機櫃的裝置位址排在一起;分層預留,功能區留夥伴塊,網段內留週轉位址,機櫃裡留替換位。下面逐條給出做法和判斷標準,最後用一個 4 列 40 櫃的機房把四條規則串成一張劃分表。

規則一:按用途分割槽,一個網段只放一類裝置

判斷兩類裝置能不能放進同一個網段,看三件事:存取策略是否相同、MTU 是否相同、是否需要 DHCP。三件事有一件不同,就必須分段。按這個標準,機房裡通常要分出下面八個功能區:

功能區 放什麼 閘道器 特殊要求
裝置管理網 交換器、防火牆管理口,PDU、動環採集器 有,只對基礎服務區開放 不接任何客戶裝置
IPMI 網 伺服器 BMC 管理口 有,只對跳板機和管理系統開放 與裝置管理網分開,BMC 數量多、風險高
業務公網 出租伺服器、託管客戶的公網位址 有,在核心或出口裝置上 以 /24 為單位登記和排程
業務內網 客戶伺服器之間的私網互聯 一般不需要 按客戶分 VLAN、分段
儲存網 iSCSI、NFS、Ceph 等儲存流量 一般不配,不參與路由 常開巨型幀,MTU 端到端一致
裝機網 PXE 裝機時的臨時位址 有,裝機伺服器在這裡 全機房只有這裡允許 DHCP
基礎服務 跳板機、監控、DNS、NTP 有 維運人員進入管理網、IPMI 網的入口
互聯與環回 裝置之間的點對點鏈路、環回位址 不適用 互聯用 /31 或 /30,環回用 /32

其中有兩對最容易被合併、也最不該合併:

  • 儲存網和業務內網。儲存流量突發大,一次資料重平衡就能把鏈路跑滿;儲存網通常開 MTU 9000 的巨型幀,業務網是 1500,混在一個 VLAN 裡會出現小包能通、大包被丟的隱蔽故障。Ceph 還可以再拆一層:public_network 給客戶端存取,cluster_network 給副本複製和資料恢復,兩個各佔一個段。iSCSI 做多路徑時,常見做法是 A、B 兩條路徑各用一個網段,以儲存廠商的建議為準。
  • 裝機網和 IPMI 網。不少 BMC 出廠預設用 DHCP 獲取位址。如果裝機用的 DHCP 服務和 BMC 在同一個廣播域,新上架伺服器的 BMC 會從裝機位址池裡領到一個位址,之後它的位址就不再可預測,管理系統裡登記的位址也對不上。裝機網單獨一個 VLAN,全機房只有它開 DHCP。

規則二:按規模取 2 的冪,先算清一個段要佔哪些位址

子網的位址數只能是 2 的冪,所以掩碼不是“看著夠用就行”,而是先把所有佔用加起來,再向上取整:

需要的位址數 = 規劃期末的裝置數 + 閘道器佔用 + 2(網路位址和廣播位址)

閘道器佔用這樣算:單台閘道器,或堆疊成一台邏輯裝置的閘道器,算 1 個;用 VRRP 時虛擬位址加兩台裝置的實位址,算 3 個;不需要閘道器的儲存網、業務內網算 0 個。塊大小取不小於需要位址數的最小 2 的冪,字首長度 = 32 − log₂(塊大小)。

裝置數 單閘道器時需要 掩碼 VRRP 時需要 掩碼
5 8 /29 10 /28
13 16 /28 18 /27
29 32 /27 34 /26
61 64 /26 66 /25
125 128 /25 130 /24
200 203 /24 205 /24
300 303 /23 305 /23

前五行的裝置數是故意卡在邊界上的:單閘道器時,塊大小減 3 就是能放的裝置上限,/27 最多放 29 台,第 30 台就要換 /26;改用 VRRP 後上限再少 2 台。不少網段開通一兩年後“突然不夠用”,原因就是當初只算了一個閘道器位址,後來改成雙機 VRRP,兩個實位址擠掉了兩台裝置的位置。

邊界附近用指令碼算更不容易錯:

def prefix_for(devices, gw=1):
    need = devices + gw + 2              # 裝置 + 閘道器佔用 + 網路位址與廣播位址
    return 32 - (need - 1).bit_length()  # 取不小於 need 的最小 2 的冪

for n in (5, 13, 29, 61, 125, 200, 300):
    print(n, f"/{prefix_for(n)}", f"/{prefix_for(n, gw=3)}", f"/{prefix_for(n, gw=0)}")

每行輸出裝置數,以及單閘道器、VRRP、無閘道器三種情況下的掩碼。算出掩碼之後,起始位址還要對齊到塊大小的整數倍:/26 的塊大小是 64,第四節只能從 0、64、128、192 開始;寫成“x.x.x.32/26”的網段並不存在,裝置和計算工具會把它當成 x.x.x.0/26,或者直接報錯。

兩個例外不按公式算:裝置互聯的點對點鏈路只有兩台裝置,用 /31 或 /30;環回位址每台裝置一個 /32。它們也要集中放在一個功能區裡,不要散落在業務段之間,否則網段表裡會多出幾十條零碎記錄。

規則三:按物理位置連續,位址順序跟著機櫃走

物理連續的意思是:位址的層次和機房的物理層次一一對應。機房、列、機櫃、U 位,每往下一層,都是上一層位址塊裡的一段連續位址。這樣做有三個直接的好處:

  1. 看位址就知道位置。告警裡出現一個 BMC 位址,不用查表就能算出在哪一列、哪個櫃、第幾台。
  2. 按列寫規則。每列交換器下面是一個連續塊,ACL、監控採集範圍、彙總路由都能按列寫一條。
  3. 整塊回收。一列機櫃整體改造或退租時,它的位址是完整的一塊,收回來可以原樣再分配,不會留下碎片。

具體可以這樣定,後面的劃分表就按這套規則:

  • 每列一個 IPMI 段、一個公網段,第三節或網段本身對應列號:A 列 IPMI 用 10.40.16.0/24,B 列用 10.40.17.0/24,依此類推。
  • 每個機櫃在段內佔 20 個位址,機櫃編號 k 從 1 起算,第 k 個機櫃從 k × 20 + 1 開始,到 k × 20 + 20 結束;櫃內按 U 位從下往上編號,第 n 台伺服器的末位是 k × 20 + n。這樣 1 號櫃從 .21 開始,段首的 .1~.20 正好空出來給閘道器和其他用途。
  • IPMI 位址和公網位址末位相同。B 列 7 號櫃第 5 台伺服器,IPMI 是 10.40.17.145,公網是 198.51.100.145,知道其中一個就能推出另一個。

不是所有功能區都適合按位置排。業務內網和儲存網跟著客戶和叢集走:一個客戶的伺服器可能分散在幾個機櫃,一個 Ceph 叢集可能跨兩列,它們的段按客戶或叢集分配,段內再按節點順序編號。託管客戶的公網位址也一樣,裝置是客戶的,可能換櫃,按客戶分段比按機櫃分段省事。判斷標準只有一句:位址跟著服務商自己的裝置走,就按位置排;位址跟著客戶或叢集走,就按歸屬排。

規則四:分層預留,每一層留什麼

預留不是最後統一留一塊,而是每一層各留一部分,用途各不相同:

層級 私網怎麼留 公網怎麼留 留給什麼
功能區 按規劃期末需求取 2 的冪後至少再放大一倍,先啟用夠用的部分,其餘鎖定 不提前劃給功能區,持有的段裡至少保留一個完整 /24 不切分 擴容時縮短字首原地翻倍;公網整塊留給新業務
網段 段首留給閘道器和網路裝置,段尾留給臨時裝置 每個啟用的 /24 留出約 10% 不分配 客戶加購 IP、換 IP、故障替換時的週轉
機櫃 每櫃的位址區間比滿櫃檯數多 2 個 與 IPMI 同步 返修機、臨時測試機上架時不打亂編號

表裡的比例是經驗做法,增長快的機房可以留得更多。私網放大一倍幾乎沒有成本;公網稀缺,不能照搬“每個在用塊旁邊空一個夥伴塊”的做法,只在段內保留週轉空間,並在台帳上把未切分的整段鎖定。

預留塊最怕被臨時借用:借出去的位址往往不會按時歸還,夥伴塊一旦被佔,擴容時只能在同一個 VLAN 介面上再掛一個不連續的段,規則一到規則三會被同時破壞。所以預留塊在台帳和系統裡都要標成鎖定,借用必須走變更。

一張劃分表:4 列 40 個機櫃的機房

假設一個機房有 A~D 四列,每列 10 個 42U 機櫃,每櫃最多 18 台伺服器;A、B 列放服務商自有的出租伺服器,C、D 列給託管客戶。私網用 10.40.0.0/16,公網用 RFC 5737 的文件專用位址代替實際持有的段,套用時換成你自己的位址。

私網位址充裕,每個功能區統一給 /20(業務內網 /19),遠大於首期需求,也便於記憶。七個功能區加一塊整體預留,共八塊,每塊的起點都是自身大小的整數倍:

位址塊 功能區 當前啟用 VLAN 閘道器 分配規則
10.40.0.0/20 裝置管理網 10.40.0.0/24 10 10.40.0.1 核心與防火牆 .2~.10;每列 40 個位址(A 列 .20~.59),櫃內按業務接入、管理接入、A 路 PDU、B 路 PDU 的順序連續;動環 .200~.239
10.40.16.0/20 IPMI 網 10.40.16.0/22,每列一個 /24 21~24 各段 .1 櫃內按 k × 20 + n 編號,.221~.254 留給臨時裝置
10.40.32.0/19 業務內網 10.40.32.0/20 2001~2999 不配 按客戶切 /28、/27,不按位置
10.40.64.0/20 儲存網 10.40.64.0/24、10.40.66.0/24 3001、3002 不配 叢集一的 public 網和 cluster 網,各自後面一個 /24 留作擴容;MTU 9000
10.40.80.0/20 裝機網 10.40.80.0/24 30 10.40.80.1 裝機伺服器用 .2~.19,DHCP 池 .20~.250,裝機時才把伺服器連接埠切進來
10.40.96.0/20 基礎服務 10.40.96.0/24 40 10.40.96.1 跳板機、監控、DNS、NTP
10.40.112.0/20 互聯與環回 10.40.112.0/24、10.40.113.0/24 — — 前者切 /31 做互聯,後者給環回 /32
10.40.128.0/17 整塊預留 — — — 鎖定,留給二期或新功能區

公網按列和按客戶兩種方式並存:

網段 用途 VLAN 閘道器 分配規則
203.0.113.0/24 A 列出租伺服器 101 .1 末位與 IPMI 相同(k × 20 + n);.2~.20 和 .221~.254 共 53 個用於客戶加購 IP,其中至少 25 個(約 10%)不分配,留作換 IP 和故障替換的週轉
198.51.100.0/24 B 列出租伺服器 102 .1 同上
192.0.2.0/24 C、D 列託管客戶 每客戶一個,從 1101 起 各子網第一個可用位址 按客戶切 /29、/28、/27,大塊和小塊分割槽存放

逐條對照四條規則:規則一,八個功能區各有獨立的位址塊,需要二層的都有自己的 VLAN;規則二,IPMI 網每列 10 櫃 × 20 個位址,加閘道器 1 個、網路和廣播位址 2 個,共 203 個,取 /24,儲存網不配閘道器,按裝置數加 2 計算;規則三,IPMI 和出租伺服器公網都按列、櫃、U 位連續,業務內網和儲存網按客戶與叢集;規則四,私網每個功能區只啟用一部分、其餘鎖定,每櫃多留 2 個位置,公網每段至少留約 10% 作週轉。

劃分完成後核對四件事

  1. 功能區不重疊、沒縫隙、起點對齊。用 Python 自帶的 ipaddress 模組一次檢查:
import ipaddress

zones = ["10.40.0.0/20", "10.40.16.0/20", "10.40.32.0/19", "10.40.64.0/20",
         "10.40.80.0/20", "10.40.96.0/20", "10.40.112.0/20", "10.40.128.0/17"]
nets = [ipaddress.ip_network(z) for z in zones]       # 起點沒對齊會直接丟擲 ValueError
print(list(ipaddress.collapse_addresses(nets)))       # 只剩 10.40.0.0/16,說明中間沒有縫隙
print(sum(n.num_addresses for n in nets) == 2 ** 16)  # 再輸出 True,說明沒有重疊
  1. 每個網段只對應一個 VLAN、一種用途。逐個核對核心交換器上的三層介面位址與劃分表一致,沒有某個 VLAN 介面上掛著兩個不同用途的段。
  2. 儲存網巨型幀端到端可用。在一台儲存節點上用不允許分片的大包測試,9000 減去 20 位元組 IP 頭和 8 位元組 ICMP 頭,載荷是 8972 位元組:
ping -M do -s 8972 -c 3 10.40.66.12     # Linux;Windows 用 ping -f -l 8972 10.40.66.12

能通才說明沿途交換器連接埠和兩端網路卡的 MTU 都已調大;報“Message too long”或超時,說明某一段還是 1500。 4. 裝機網以外沒有 DHCP。在 IPMI 網和裝置管理網裡各找一台 Linux 主機,執行 sudo nmap --script broadcast-dhcp-discover,不應收到任何 DHCP 應答。

在 IPAM 裡落地這張表

劃分表寫在文件裡,幾個月後多半會和現場對不上。把它錄進 Toplink DCIM 的 IP 位址管理,四條規則大多可以交給系統守著:段按 CIDR 錄入後自動算出起止位址和掩碼,閘道器統一選第一個位址;型別標成公網 IP、IPMI、客戶內網、內網 IP 等,儲存網和裝機網可以用“其他”型別再加標籤區分;每個段記錄所在 VLAN 和閘道器所在的交換器,與劃分表的 VLAN 列一一對應;夥伴塊錄成單獨的段並鎖定,週轉位址也設為鎖定;開通伺服器時只從開啟了自動分配的段裡取址,並排除已佔用和已鎖定的位址,預留不會被悄悄用掉。

按列劃分的公網段是一個較大的廣播域,同一 VLAN 裡有幾十個客戶,需要防止有人改用別人的位址。在交換器管理裡對伺服器連接埠啟用 ARP 繫結和源位址校驗,IP 與 MAC、連接埠鎖定之後,冒用位址的流量會在交換器連接埠上被丟棄。

常見問題

IP 段劃分時閘道器用第一個位址還是最後一個?

兩種都可以,關鍵是全機房統一。統一用第一個可用位址(.1)更常見,配 VRRP 時虛擬位址用 .1、兩台裝置用 .2 和 .3;混用會讓每個段都要單獨查閘道器,裝機範本和指令碼也容易寫錯。

裝置互聯用 /30 還是 /31?

兩台裝置之間的點對點鏈路可以用 /31(RFC 3021),兩個位址都可用,比 /30 省一半;前提是兩端裝置都支援,部分老裝置和防火牆不支援時用 /30。放伺服器的網段一般不用 /31:它只有兩個位址,去掉閘道器只剩一台裝置的位置。

機房只有一個公網 /24,還要按列劃分嗎?

不用硬分。一個 /24 只夠一兩列伺服器時,按列切反而讓每列都不夠用;可以整段作為一個網段,段內仍按“列、機櫃、U 位”的順序給位址,保留物理連續的好處,等拿到第二個 /24 再按列分開。

想看看在你的機房裡怎麼用?

從一次產品示範開始,梳理你的業務鏈路。

查看價格
服務熱線 400-112-2951

讓我們聊聊你的 IDC 業務

掃碼新增企業微信,預約產品示範或申請試用。

Toplink 企業微信二維碼

長按儲存或使用企業微信 / 微信掃描

也可致電
400-112-2951
Telegram
@TopLink88