如何安全地變更 Proxmox VE 的主要 IP 位址
在使用 Proxmox VE 管理虛擬環境時,您可能需要變更 Proxmox 主機的 IP 位址。原因可能各不相同——例如您可能想重新規劃本地資料中心、重新配置辦公室,或是將主機遷移至另一家資料中心供應商。請閱讀這份逐步指南,了解如何變更 Proxmox 的 IP 位址。
變更 Proxmox VE IP 位址的先決條件
安裝 Proxmox 時,安裝程式會要求您設定靜態 IP 位址。雖然也可以透過 DHCP 取得 IP 設定(例如,您可以透過 DHCP 將租用的 IP 位址綁定至 Proxmox 主機的網路卡 MAC 位址),但建議採用靜態 IP 設定。
當我們提到 Proxmox 的主要 IP 位址時,通常是指用於管理 Proxmox 主機的 IP 位址。 其他 IP 位址可能存在於其他實體網路介面卡上,例如用於連接共用儲存裝置,或存在於用於路由虛擬機器網路(NAT 網路)的 Proxmox 主機上。本部落格文章的主要目的是變更用於主機管理的 Proxmox IP 位址。
在這篇文章中,Proxmox 主機的初始設定如下:
- IP 位址: 192.168.101.229 (Proxmox 的靜態 IP 位址)
- 網路遮罩: 255.255.255.0
- 入口: 192.168.101.2
- 主機名稱: deb-proxmox
- 已為 192.168.101.229 配置網路橋接器,用以建立虛擬機器與實體網路之間的連線,以及虛擬機器彼此之間的連線。
- Proxmox 主機 (192.168.101.229) 並非叢集成員。叢集的工作流程有所不同。
變更 Proxmox IP 位址的主要且最有效的方法是使用命令列。此外,也可以使用 Proxmox 的網頁介面。請閱讀這篇關於 如何安裝 Proxmox 如需進一步了解安裝與初始設定,請參閱以下內容。
在命令列中變更 Proxmox 的 IP 位址
透過 SSH 連線至 Proxmox 主機並登入該主機。若要存取 Proxmox 命令列,您可以使用 SSH 客戶端,或點擊 Shell 在 Proxmox 網頁介面中,點選已選取主機旁的按鈕。若您使用 SSH 客戶端,請確認 Proxmox 主機上已設定 SSH 伺服器,且防火牆未阻擋該連線。
- 您需要 root 權限才能變更系統設定,包括 IP 設定。若要取得 root 權限,請使用以下指令:
sudo -i - 檢查 Proxmox 主機的當前 IP 設定:
ifconfig在輸出結果中,我們可以看到橋接的 vmbr0 我們需要設定的介面 (vmbr0 已連接至 ens33)。請注意,您的介面名稱與 IP 位址可能不同。在此範例中, vmbr1 (10.10.101.229) 連接至 ens36 這是 VM NAT 網路的介面。我們不會對該介面進行任何變更。 10.10.101.0/24 用於位於 NAT 後方(位於 Proxmox 路由器後方)虛擬機的網路。

註: 建議的做法是在進行變更前先備份設定檔。您可以使用 cp 指令建立該檔案的副本,例如:
cp file-original file-copy - 透過編輯來變更 IP 位址
/etc/network/interfaces在文字編輯器中開啟檔案。您可以使用輕量級的內建nano或進階文字編輯器vim.nano /etc/network/interfaces- 如果您從其他網路設定了新的 IP 位址,則需在 Proxmox 的 IP 網路設定中變更閘道 IP 位址。
- 您可能需要變更 DNS 名稱伺服器的 IP 位址。不同網路可使用不同的 DNS 伺服器。
註 1: 如果您為虛擬機器設定了路由網路(NAT 網路),您可能也需要變更對應的 IP 位址、網路及閘道。在此情況下,請編輯相關介面、網路及 iptables 路由規則。
註 2: 如果您將主機連接到另一個網路,例如, /16 而非 /24 (與子網掩碼 255.255.0.0 而非 255.255.255.0),請在 IP 網路設定中相應地調整網路位址與子網遮罩。
在此範例中,我們將 192.168.101.229 變更為 192.168.105.229,作為橋接網路介面及 Proxmox 主機管理的 IP 位址(我們不會編輯 NAT 網路的設定)。
我們將閘道器 192.168.101.2 變更為 192.168.105.2,使其與對應的 192.168.105.0/24 網路相符。
- 新聞 Ctrl+O 將變更儲存至檔案,然後按下 Ctrl+X 要退出 奈米.

- 編輯版本
/etc/hosts請編輯該檔案以修改主機名稱,因為主機名稱必須與新 IP 位址相符,才能正確解析。nano /etc/hosts在此範例中,我們將 192.168.101.229 至 192.168.105.229 因為 deb-proxmox. 您的設定值可能有所不同——請在設定檔中編輯對應的數值。
編輯完所需的數值後,請按下
Ctrl+O將變更寫入檔案,然後按下Ctrl+X要退出 奈米, 文字編輯器。
- 重新啟動網路服務,以使變更生效。
systemctl restart networking
如果您無法重新啟動網路服務,或者重新啟動網路服務後問題仍未解決,請使用 init 6 指令。執行此操作前,請務必先關閉虛擬機器。
請注意,在變更 Proxmox IP 位址並重新啟動網路服務後,透過網頁介面或 SSH 連線至 Proxmox 主機時,必須使用新的 IP 位址。此時您應重新連線至 Proxmox 主機。請確認您已連線至正確的網路。
在 Web 介面中變更 Proxmox 的 IP 位址
變更 Proxmox IP 位址的第二種方法是使用圖形使用者介面,也就是 Proxmox 的網頁使用者介面。新使用者可能更傾向採用此方法,但設定原則仍然相同——您需透過修改 /etc/network/interfaces 檔案,然後透過修改 /etc/hosts. 為方便起見,這些設定是在 Proxmox 管理網頁介面中進行的。
本範例中 Proxmox 主機的初始設定,與先前使用命令列方法進行設定時的起始步驟相同。可透過 https://192.168.101.229:8006 在我們的情況下,連結為 8006。8006 是 Proxmox 網頁介面的預設埠號。
- 登入 Proxmox VE 的網頁介面,並在導覽窗格中選取您要變更 IP 位址的主機。在此範例中,我們選取名為 deb-proxmox.
- 前往
System>Network. 選取用於 Proxmox 主機管理的網路介面(即您要變更其 IP 位址的介面),然後按一下Edit. 我們挑選 vmbr0 作為網路介面。
- 選定的網路介面設定視窗隨即開啟:
IPv4/CIDR:請輸入新的 IP 位址和網路遮罩 (CIDR)。Gateway:如果您已將 IP 位址變更為來自其他網路的 IP 位址,請輸入新的閘道。- 其餘設定可維持原樣。
我們改變 192.168.101.229/24 至 192.168.105.229/24 以及 192.168.101.2 至 192.168.105.2. 如下方截圖所示,橋接介面 vmbr0 與……有關 ens33 網路介面卡(介面)。
點擊
OK儲存 Proxmox 的 IP 位址設定並關閉當前視窗。
- 前往
System>Hosts. 您可以查看/etc/hosts該檔案會顯示在網頁介面的特定欄位中,您可以在該處直接編輯 hosts 檔案的內容。請在主機的設定中將舊的 IP 位址更改為新的 IP 位址,以確保主機名稱能正確解析,然後點擊
Save. 我們改變 192.168.101.229 至 192.168.105.229 因為 deb-proxmox.
- 現在,請回到
System>Network,您在此處選取了用於變更 Proxmox IP 位址的網路介面。請按一下Apply Configuration以套用先前所做的網路變更。您要套用待處理的網路變更嗎?請按
Yes. 網路服務將重新啟動。
- 請等待網路服務重新啟動。
- 如有需要,請將主機連接到另一個實體網路。
- 輸入 Proxmox 主機的新 IP 位址以登入使用者介面。請確認您已連線至可存取該 Proxmox 主機(使用新 IP 位址)的正確網路。在本例中,Proxmox 網頁介面的新連結為 https://192.168.101.229:8006,其中 8006 是 Proxmox 的預設埠號。
在 Proxmox 叢集中變更 IP 位址
如果您擁有 Proxmox 叢集,則無法採用上述方法,因為儘管兩者中有部分操作是共通的,但仍可能發生問題。在 Proxmox 叢集中變更 IP 位址的流程包含更新網路設定、修改叢集設定,以及調整 corosync 設定。
以下展示一個基本的工作流程,實際情況可能因您的環境而異,這取決於多項因素,例如是否使用 Open vSwitch、VLAN 設定、IP 位址變更的叢集節點數量,以及其他設定參數。
建議您每次僅變更一個叢集節點(即身為叢集成員的 Proxmox 主機)的 IP 位址。此方法可確保叢集維持在運作狀態。
- 為避免服務中斷,請在即將變更 IP 位址的節點上停止與叢集相關的服務:
systemctl stop pve-clustersystemctl stop corosync - 編輯網路設定,以反映 Proxmox 主機的新 IP 位址:
nano /etc/network/interfaces請修改相關網路介面,使其使用新的 IP 位址。例如:
iface vmbr0 inet staticaddressnetmask 255.255.255.0gatewaybridge_ports eth0bridge_stp offbridge_fd 0儲存檔案,並在主機上重新啟動網路服務:
systemctl restart networking - 更新
/etc/hosts使用新 IP 位址的檔案:nano /etc/hosts請將對應主機名稱的舊 IP 位址替換為新 IP 位址。
- 修改 Proxmox 叢集設定以反映新的 IP 位址:
nano /etc/pve/corosync.conf請找到該節點的相關區段(其 IP 位址即將變更),並更新 IP 位址:
node {name:nodeid:quorum_votes: 1ring0_addr:}儲存檔案。
- 更新 Corosync 設定。若使用的是 Proxmox 的版本,採用
Corosync 3.x,您可能需要調整 Corosync 傳輸層以及 bindnetaddr 設定:nano /etc/pve/corosync.conf請確保 bindnetaddr 反映與新 IP 設定相關聯的網路位址:
totem {...interface {ringnumber: 0bindnetaddr:mcastport: 5405ttl: 1}...}該 corosync 此服務用於在所有叢集節點之間同步叢集配置。只需編輯 corosync 在單一節點上進行設定,然後將變更後的設定同步至叢集中的其他節點。
- 在目標節點上重新啟動與叢集相關的服務:
systemctl start corosyncsystemctl start pve-cluster - 如果您有任何與舊 IP 位址相關的防火牆規則或其他設定,請據此進行更新。
- 請確認該節點可透過新 IP 位址連線,且在叢集內具有正常的功能性:
pingpvecm status - 完成所有步驟並重新啟動服務後,叢集應能正常運作,並使用已更新 IP 設定的節點。若需變更第二個節點的 IP 位址,請針對 Proxmox 叢集的第二個節點重複上述步驟。
- 當所有節點的設定皆已更新後,請更新 known_hosts 在所有 Proxmox 節點上更新包含新 IP 位址的檔案。如此一來,即可確保各節點之間能無縫互通:
/etc/pve/priv/known_hosts您可以嘗試透過 SSH 從每個節點連線至所有其他節點。
結論
在非叢集伺服器上變更 Proxmox 的主要 IP 位址,可透過命令列介面或 Proxmox 網頁介面進行。這兩種方法都需要進行編輯 /etc/network/interfaces 以及 /etc/hosts 設定檔以及在這些檔案中變更 IP 位址。這兩種方法的差異在於存取這些檔案的方式。若 Proxmox 主機是叢集節點,操作流程會有所不同。若主機是叢集成員,請勿使用此操作流程在非叢集主機上變更 IP 位址。建議您在進行變更前先備份原始設定。