我有一個虛擬化主機(可以是 VSphere 或 SCVVM),有四個 NIC,兩個 1 gbps 和兩個 10 gbps。該電腦在兩個具有唯一名稱的 vSwitch(例如 vSwitch0 和 vSwitch1)上託管 VM,其中一個位於 1 gbps NIC 上,另一個位於 10 gbps NIC 上。
該虛擬機器是透過一個長的 powershell 進程自動產生的,該進程會建立匯入虛擬機器定義和空虛擬磁碟、安裝作業系統、安裝其他軟體等。
我的問題是,在來賓作業系統(Server 2012 R2)中,網路適配器簡單地標記為「乙太網路適配器」和「乙太網路適配器1」。我無法判斷哪個在“vSwitch0”或“vSwitch1”上。我需要每個適配器都有一個非常特定的 IP,這取決於它所連接的虛擬交換器。
有任何想法嗎?我需要在配置來賓作業系統的 powershell 腳本中以某種方式配置它。
先致謝!
答案1
我能想到的最簡單的方法是以某種方式從虛擬機器配置中提取每個網路適配器的 MAC 位址,並根據虛擬機器內的網路卡進行檢查。
你不一定需要放MAC 位址 - 如果您未指定自訂 MAC 位址,vSphere 將自動為您指派一個 MAC(該指派足夠智能,知道不要重新指派已使用的位址,因此您無需擔心衝突)。然後就可以查詢VM的配置了後它已創建,並將其與作業系統中出現的 NIC 進行匹配。例如:
首先,透過 vSphere 查詢虛擬機器配置:
- 網卡A連接到 vSwitch0 並具有 MAC 位址
00:56:3f:00:21:12
- 網路卡B連接到 vSwitch1 並具有 MAC 位址
00:56:3f:12:32:4a
然後,您在建立後查詢來賓作業系統中存在的 NIC:
- 乙太網路適配器有 MAC 位址
00:56:3f:12:32:4a
,因此網路卡B並附於vSwitch1 - 乙太網路適配器 1有 MAC 位址
00:56:3f:00:21:12
,因此網卡A並附於vSwitch0
您也許能夠以程式設計方式執行此操作,但我對 vSphere PowerShell CLI 不夠熟練,無法確定。
答案2
我為雙宿主虛擬機器處理此問題的方法是,我在一個網路上有一個 DHCP 伺服器,因此我知道獲得 DHCP 分配的 IP 位址的 vNIC 連接到 DHCP 伺服器所在的網路。為自己指派 APIPA 位址的 NIC 連接到其他網路。這很粗糙,但很有效。您可能不想僅出於此目的設置 DHCP 伺服器,但在我的例子中,我使用 DHCP 伺服器,因此我很幸運,我可以使用它來識別每個 vNIC 連接到哪個網路。