把單個額外位址加進網卡並在重新開機後保留

額外位址在控制台裡逐行給出。每一行追加到已經持有第一個位址的那張網卡上,遮罩按單臺主機來寫,並放進啟動時會讀的那份配置。只在當前會話裡臨時添加,重新開機後會消失。

控制台裡的每一行是一個位址

付款並且機器可以連接之後,控制台把位址拆開、去重,放進一個可以滾動的列表。第一行單獨顯示,SSH 或 RDP 只用這一行。後面的每一行也是一個完整的 IPv4,彼此之間沒有「網路位址」「廣播位址」或「這段裡還能算出幾個」。

訂單裡預設已經含 1 個 IPv4。需要更多時按個增加,每個每月 1.6 美元,最多再加 255 個,和已含的那 1 個加在一起不超過 256 個。列表上的行數應當等於這個合計。買了 4 個額外位址,列表裡是 5 行,而不是一段寫著 /29 的前綴。

下面用文檔位址做例子,配置時換成列表裡的原文。假設第一行是 203.0.113.10,另外兩行是 203.0.113.21 和 203.0.113.34。三行不連續。不連續仍然是三臺主機位址,中間空著的號碼不在這臺機器上。

改網卡之前,把列表整份複製下來。後面對個數、對每一行,都用這份清單,不用遮罩倒推。清單上沒有的位址,不要寫進網卡。

位址按個交付。配置時也按行追加。買到的個數不能換算成 /29、/28 或其它網段前綴。

遮罩沿用第一行,額外行用單主機

安裝完成時,第一個位址已經在網卡上,並且帶著當時的前綴長度和預設閘道。這三項保持原樣。前綴可能是 /24,也可能是別的長度,以系統裡現有的那一條為準,不要改成購買個數對應的遮罩。

一段 /29 固定佔 8 個位址:1 個網路位址、6 個主機位址、1 個廣播位址。按個購買並不交付這 8 個位置,也不保證行與行相鄰。把額外位址的遮罩寫成 255.255.255.248,主機會把相鄰號碼當成同一網段裡的本地鄰居,那些鄰居並不屬於這張訂單。

每一行額外位址使用 255.255.255.255,也就是 /32。這樣網卡只認這一個主機位址,不會順帶聲明旁邊一串。預設閘道仍然只有原來那一條,不要為新位址再填一條預設路由。

來源怎麼寫進網卡
列表第一行,系統已經配好保留原位址和原前綴,保留原預設閘道
列表其餘每一行追加這個位址,遮罩 255.255.255.255(/32)
按個數套出來的 /29、/28不寫。清單上沒有的網路位址和廣播位址也不寫

行與行剛好連續時,仍然逐行追加,仍然用 /32。連續只說明號碼排在一起,不說明這臺機器拿到了一整段。

加到已經持有第一個位址的網卡

額外位址不另附一塊網卡。先看第一個位址現在在哪一個接口上,新位址就加在同一個接口上。

ip -4 addr show
ip route show default

第一條命令裡,找到含有列表第一行的那個接口名,後面的例子寫成 eno1。實際名字可能是 eno1、eth0 或 vmbr0,以輸出為準。第二條命令裡的 via 後面是現有閘道,dev 後面應當和這個接口一致。閘道和接口都從這裡抄,不根據新位址現編。

Proxmox VE 8 或 9 常把第一個位址放在橋 vmbr0 上,物理口只做橋的成員。追加位置跟著第一個位址走。位址已經在橋上時,再加到物理口,新位址往往不應答。

站台若跑在虛擬機裡,這個位址應當出現在最終應答它的那張虛機網卡上,宿主機不要再佔用同一行。同一行同時出現在橋和虛機上,入站會落到先應答的一邊。虛機裡的寫法與下面相同:原位址和原閘道不動,新行用 /32。

先做一次臨時添加,確認這一行能被看見,再寫入啟動配置。臨時添加重新開機後消失,它只用來核對接口是否選對。

ip addr add 203.0.113.21/32 dev eno1
ip -4 addr show dev eno1

輸出裡應同時有原來的第一行和新的這一行。第一行的前綴沒有被改掉。預設路由仍然指向原來的閘道。核對完再寫檔案。另一行 203.0.113.34 用同樣的方式再加一次。

寫進啟動時會讀的那一份

只改已經寫著第一個位址的那一份配置。同一接口不要再留一份只含新位址的配置,兩份同時生效時,後讀的那份可能把第一行蓋掉,SSH 就只剩額外位址,和控制台給出的連接命令對不上。

Ubuntu Server 22.04、24.04、26.04 使用 netplan。打開含有第一行位址的 yaml,在 addresses 裡保留原行,並追加 /32。routes 裡的預設閘道保持原值。nameserver 也保持原值。

network:
  version: 2
  ethernets:
    eno1:
      addresses:
        - 203.0.113.10/24
        - 203.0.113.21/32
        - 203.0.113.34/32
      routes:
        - to: default
          via: 203.0.113.1

例子裡的 /24 和 203.0.113.1 表示「原樣保留」。機器上若是別的前綴、別的閘道,按 ip 命令的輸出填寫。檔案裡若已有別的鍵,只追加位址行,不要整份替換成上面這一段。

保存後執行 netplan try。它會應用配置,並在超時後自動退回。超時時間內另開一個 SSH 會話,從第一個位址連上,再確認。try 通過之後再 netplan apply。只留當前這一個會話就 apply,斷開時沒有入口核對配置是否已經退回。

若應用後第一個位址的 SSH 不通,從控制台的圖形接入改回這份配置。圖形接入只在控制台裡打開,公開的連接方式仍是 SSH 或 RDP。

Debian、Proxmox 與 NetworkManager

Debian 11、12、13 若把位址寫在 /etc/network/interfaces,就改這一份,用 post-up 追加,用 pre-down 在接口關閉時去掉。第一行的 address 和 gateway 保持安裝時的寫法。

auto eno1
iface eno1 inet static
    address 203.0.113.10/24
    gateway 203.0.113.1
    post-up ip addr add 203.0.113.21/32 dev eno1
    post-up ip addr add 203.0.113.34/32 dev eno1
    pre-down ip addr del 203.0.113.21/32 dev eno1
    pre-down ip addr del 203.0.113.34/32 dev eno1

Proxmox 的橋同樣寫在這份檔案裡,接口名改成已經持有第一行的 vmbr0。物理口的橋接行不要改成位址行。

AlmaLinux 8、9、10 和 CentOS Stream 9、10 多由 NetworkManager 管理。連接名用 nmcli connection show 查看,對那一個連接追加位址,不改已有的 ipv4.gateway,也不把 method 改成會清空位址的值。

nmcli connection modify "System eno1" +ipv4.addresses 203.0.113.21/32
nmcli connection modify "System eno1" +ipv4.addresses 203.0.113.34/32
nmcli connection up "System eno1"

modify 寫進連接配置,重新開機後仍在。只執行 ip addr add 則只留在當前啟動裡。up 之後立刻看 ip -4 addr,第一行應當還在。

FreeBSD 13 把別名寫進 /etc/rc.conf。接口名從 ifconfig 裡第一個位址所在的那一塊抄。

ifconfig_em0_alias0="inet 203.0.113.21 netmask 255.255.255.255"
ifconfig_em0_alias1="inet 203.0.113.34 netmask 255.255.255.255"

原有的 ifconfig_em0 一行繼續負責第一個位址和預設路由。別名序號接著現有的 alias 往下排,不要另寫一塊網卡。

同一臺機器只保留一種網路管理方式。interfaces、netplan、NetworkManager 裡若有兩份都寫著這個接口,啟動順序會決定最後剩下哪一組位址。看到第一行寫在哪裡,就只改哪裡。

Windows 裡追加,閘道留空

選用 Windows Server 後,接入是 RDP,仍然只用列表第一行。額外位址加在已經持有第一行的那塊適配器上。標準版每月加 18.1 美元,資料中心版每月加 31.8 美元,版本為 2019、2022 或 2025。系統差價和位址個數無關,位址仍按個計。

打開該適配器的 IPv4 屬性,進入高級,在 IP 位址列表裡新增一行:位址填列表中的額外行,子網遮罩填 255.255.255.255。新增行的預設閘道留空。已有的那一行閘道保持不動。再填一條閘道,會和原預設路由搶出口。

用 PowerShell 時,接口別名按 Get-NetAdapter 的輸出填寫。SkipAsSource 設為 true 時,這塊新位址可以接收入站,新發起的出站連接仍從第一個位址出去。站台要不要各佔一個位址、出站為什麼仍走第一條,見 站台共用一個位址還是各佔一個。

New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 203.0.113.21 -PrefixLength 32 -SkipAsSource $true
New-NetIPAddress -InterfaceAlias "Ethernet" -IPAddress 203.0.113.34 -PrefixLength 32 -SkipAsSource $true

這條命令寫入系統配置,不是一次臨時生效。Get-NetIPAddress 裡應能看到新行,前綴長度 32。原位址的前綴和預設路由保持原值。

重新開機之後按列表勾對

  1. 01 重新開機整臺機器,不要只重新開機網路服務就算完成。臨時添加的位址會在這一步消失,啟動配置裡的位址會重新出現。
  2. 02 再次執行 ip -4 addr,或在 Windows 裡看適配器的位址列表。第一行還在,前綴與重新開機前相同。
  3. 03 預設路由只有一條,下一跳仍是原來的閘道。Linux 上執行 ip route show default 核對 via。
  4. 04 用控制台清單逐行勾。清單上的每一行都在網卡上,網卡上沒有清單以外的位址。
  5. 05 從另一臺機器用第一個位址做 SSH 或 RDP。這條管理連接先通,再測額外位址上的業務埠。

行數可以用命令幫一次忙,結論仍以清單為準。下面這一行數的是全局 IPv4 的個數,應當等於已含的 1 個加上額外購買的個數。

ip -4 -o addr show scope global | wc -l

少一行時,回到啟動配置,看是哪一行沒有寫進檔案,或者寫進了另一份沒有被啟動過程讀取的檔案。多一行時,刪掉清單上沒有的那一行,尤其是按 /29 算出來的網路位址或廣播位址。

位址已經在網卡上,業務埠仍可能被防火牆丟掉。ufw、firewalld 或 Windows 防火牆若沒有放行 80、443 或業務實際使用的埠,連接會超時。這是埠策略,和這一行有沒有寫進網卡是先後兩步。先確認位址在重新開機後還在,再查埠。

個數不夠就在配置頁增加額外 IPv4,每個每月 1.6 美元,寫入同一筆月租。128GB 記憶體檔月租 454.8 美元,256GB 是 612.7 美元,記憶體都是 DDR4-3200 ECC RDIMM,下單後不能加條。處理器是 AMD EPYC 7543P,32 核 64 執行緒,2.8 到 3.7 GHz。預設是兩顆 1TB NVMe,無硬體 RAID,各自直連,可用容量按兩塊相加,大約 2TB。頻寬預設 250 Mbps 且不限流量,換成 1 Gbps 每月加 245.0 美元,換成 2 Gbps 每月加 742.7 美元。月租把這些加在一起,應付等於月租乘月數。月付、季付、半年付、年付都不打折,沒有安裝費。機器部署在日本東京。

網卡這一步只解決「行在不在、重新開機後還在不在」。多個站台是共用第一行,還是各佔一行,以及新發起的連接為什麼仍從第一行出去,在下一篇裡分開寫。

按清單上的個數加位址

$454.8 / 月起