通过IP或MAC地址定位VMware虚拟机;

在一個大型的VMware vSphere基礎架構中,您可能只知道一個VM的IP地址,需要知道名稱或反之亦然。例如,您可能擁有IP地址通過SSH或遠程桌面協議(RDP)遠程訪問到客戶操作系統,但需要知道VM的名稱來定位ESXi主機上的VM以進行配置、遷移或備份。您可以使用vSphere完成這些操作,但無法使用客戶操作系統。

此外,您可能需要識別VM使用的虛擬網絡適配器的MAC地址。在本博客文章中,我們將解釋如何查找虛擬機器的IP或MAC地址,以及在您知道IP或MAC地址時如何查找VM的名稱。

在VMware vSphere Client中檢查IP地址

在VMware vSphere中查看VM的IP地址最直接的方法是使用VMware vSphere Client。

  1. 在網頁瀏覽器中,輸入您的vCenter Server的IP地址在地址欄中,打開vSphere Client,並輸入您的憑證以登錄。
  2. 轉到主機和集群,按名稱選擇需要的VM,並檢查摘要選項卡。虛擬機的VMware IP地址顯示在IP地址部分。一個VM可以有多個虛擬網絡適配器和多個IP地址。
  3. 在下面的截圖中,您可以看到 VMware VM 使用的一個 IPv4 和一個 IPv6 地址。VMware 工具 必須安裝在客戶操作系統(OS)上,以在 VMware vSphere Client 的 Web 界面中查看 IP 地址。VM 必須處於已啟動狀態。

在 vSphere Client 中檢查 MAC 地址

A VM’s MAC address can be used for network diagnostics and other purposes.

  1. 為了檢查 MAC 地址,在 VMware vSphere Client 的 導航器 窗格中右鍵單擊 VM 的名稱,並在上下文菜單中,點擊 編輯設置
  2. 虛擬硬件 標籤的 編輯設置 窗口中,單擊網絡適配器的名稱,以檢查 VM 使用的虛擬網絡適配器的 MAC 地址。

在 VMware 主機客戶端檢查 VM 的 IP 地址

如果您使用獨立的ESXi主機而沒有VMware vCenter,則無法使用VMware vSphere Client來管理虛擬環境。當您在服務器上使用ESXi免費版本時,就會發生這種情況。在這種情況下,您可以使用VMware Host Client在Web界面中管理ESXi主機。

  1. 在網絡瀏覽器的地址欄中輸入您的ESXi主機的IP地址,並輸入ESXi管理員帳戶的用戶名和密碼。
  2. 導航器窗格中,點擊虛擬機器,並選擇需要識別IP地址的VM。與在vSphere Client中識別VMware IP地址相同,VM必須啟動並且在客戶操作系統上安裝了VMware Tools。
  3. 在包含VM信息的頁面上,找到具有一般信息的部分,並點擊網絡以展開窗格並查看VM使用的IP地址。

在VMware Host Client中檢查VM MAC地址

  1. 要在VMware Host Client中檢查VM的MAC地址,請像檢查IP地址時那樣選擇VM。在Web界面中向下滾動頁面到硬件配置部分。
  2. 請在網頁界面中滾動頁面至硬體配置部分。
  3. 點擊需要展開選項的VM網路適配器,找到相應虛擬網路適配器的MAC地址。

注意:在此示例中,我們使用由vCenter Server管理的ESXi主機,但我們已登入VMware Host Client。VM是在vCenter中建立的。

在VMware vSphere中進行VM搜索可讓您通過名稱而非IP地址或MAC地址找到VM。

通過IP地址識別VM名稱

如果您知道IP地址,可以使用vSphere PowerCLI來識別VM名稱。

  1. 連接到ESXi主機或vCenter,輸入管理帳戶的用戶名和密碼:
    Connect-VIServer ESXi_or_vCenter_IP -User root
  2. 在我們的情況下,我們使用以下命令連接到由vCenter Server管理的ESXi主機:
    Connect-VIServer 10.10.10.74 -User root
  3. 顯示擁有已定義 IP 位址的虛擬機器的最簡單命令是:
    Get-VM * |where-object{$_.Guest.IPAddress -match “192.168.17.137”}

    其中 192.168.17.137 是要識別的虛擬機器的 IP 位址。

如果您知道 PowerCLI 中虛擬機器的 IP 位址,還有另一種識別虛擬機器名稱的方法。在這種情況下,您應該運行兩個命令。

  1. 定義要識別的虛擬機器的 IP 位址:
    $vmIP=”192.168.17.137″
  2. 取得虛擬機器的資訊:
    Get-VM * |where-object{$_.Guest.IPAddress -eq $vmIP}|select Name, VMHost, PowerState,GuestId,@{N=”IP 地址”;E={@($_.guest.IPAddress[0])}}|ft
  3. 如果您知道部分 IP 地址,您可以顯示所有符合搜尋模式的具有 IP 地址的虛擬機器。
    $vmIP=”192.168.”

    Get-VM * |where-object{$_.Guest.IPAddress -match $vmIP}|select Name, VMHost, PowerState,@{N=”IP 地址”;E={@($_.guest.IPAddress[0])}} ,@{N=”作業系統”;E={$_.Guest.OSFullName}},@{N=”主機名稱”;E={$_.Guest.HostName}}|ft
  4. 以下是一個命令,可取得主機或叢集上所有虛擬機器的清單並顯示其 IP 地址:
    Get-VM | Select Name, @{N=”IP 地址”;E={@($_.guest.IPAddress[0])}}

這種方法的缺點是有時候只會顯示部分的 IP 地址。

  • 有一个命令可以查看集群中的所有虚拟机(集群名称包含“cluster”字符串),并在可能的情况下显示IP地址:
    Get-Cluster “*cluster*” | Get-VM | Select Name, Host, @{N=”IP地址”;E={@($_.guest.IPAddress[0])}} 

    如果要显示第二个IP地址,请将[0]更改为[1]。您可以从命令中删除这些字符以查看显示结果的区别。

通过MAC地址识别虚拟机名称

如果您知道虚拟机的MAC地址,还可以使用VMware PowerCLI来识别虚拟机名称。

  1. 在VMware PowerCLI中连接到ESXi主机或vCenter。在我的示例中,我连接到前面示例中提到的ESXi主机:
    Connect-VIServer 10.10.10.74 -User root
  2. 定义虚拟机MAC地址并查找此虚拟机的名称:
    $vmMAC=”00:50:56:84:C4:5F”

    Get-VM | Get-NetworkAdapter | Where-Object {$_.MacAddress -eq $vmMAC } | Select-Object Parent,Name,MacAddress
  3. 您可以通過SSH連接到ESXi主機,使用ESXi命令行界面來通過虛擬機器MAC地址識別VM名稱。
    find /vmfs/volumes | grep .vmx$ | while read i; do grep -i “00:50:56:84:C4:5F” “$i” && echo “$i”; done

VMware環境中的虛擬機器MAC地址

MAC地址不是隨機分配的。MAC地址的前一半通常與適當的硬件或軟件製造商相關。

00:50:56開頭的MAC地址是屬於VMware虛擬機器的VMware MAC地址,正如在之前的例子中我們識別VMware VM的MAC地址時所看到的。

VMware MAC地址有四個分配:00:50:56, 00:0C:29, 00:05:69, 00:1C:14。讓我們看一些常見的VMware MAC地址範圍類別:

  • 00:50:56 – VMware Workstation,VMware vSphere,VMware ESXi服務器
  • 00:50:56:80:00:00 – 00:50:56:BF:FF:FF – vCenter,由vCenter管理的VMware vSphere VM
  • 00:0C:29 – 獨立ESXi主機,VMware Horizon,VMware Workstation
  • 00:05:69 – VMware ESXi, VMware GSX
  • 00:1C:14 – VMware

組織唯一標識符(OUI)根據 VMware OUI 分配方案用作 VMware MAC 位址的前缀。VMware vCenter 和 ESXi 主機使用不同的前缀為 MAC 位址,以避免主機未連接到 vCenter Server 但可以後續連接到 vCenter 時發生 MAC 位址衝突。如果 ESXi 主機由 vCenter 管理,那麼 vCenter 將為 VMware VM 生成 VMware vSphere MAC 位址。

當手動為 VM 設定 MAC 位址(在 VM 設定中)時,前缀(前三個八位元組)會自動保留。MAC 位址的第二半段可以自訂。

如果您想要為 VMware VM 手動設定 MAC 位址,請使用此模板:

00:50:56:XX:YY:ZZ

  • 建議的十六進位值(而非 XX)是一個介於 00 和 3F 之間的數字。
  • YY 和 ZZ 字段的有效數字範圍介於 00 和 FF(全部範圍)。

使用這些建議有助於避免您手動設定 MAC 位址與 VMware vCenter 自動生成的 MAC 位址,以及 VMkernel 介面卡分派的 MAC 位址之間的衝突。請注意,如果使用 00:50:56 前缀(OUI)的話,手動設定 VMware MAC 位址的最大值為 00:50:56:3F:FF:FF。這種方法也可以幫助識別手動和自動分派的 VMware MAC 位址。勿忘所有網絡中的 MAC 位址必須是唯一的。

vCenter 唯一 ID 計算

讓我們探索識別 VMware vCenter MAC 地址的其他方面。

如上所述,vCenter 的 MAC 地址是從範圍(00:50:56:80:00:00 – 00:50:56:BF:FF:FF)中分配的,格式為 00:50:56:XX:YY:ZZ

在這種情況下,XX 值是基於 vCenter 的唯一 ID 計算得出。

XX=80+vCenterID

如果您知道 vCenter 的 MAC 地址,可以計算 vCenter Server 的唯一 ID(可以是 0 到 63)。

讓我們舉個例子,當我們部署 vCenter Server 為一個 VM,其網絡接口具有 VMware MAC 地址時:

00:50:56:9B:48:55

從 9B(十六進制)中減去 80。您可以使用十六進制計算器。

0x9B – 0x80 = 0x1B

將十六進制值轉換為十進制值:

0x1B = 27

在這種情況下,vCenter 的唯一 ID 為 27。

獨立主機上 VM 的 VMware MAC 地址

現在讓我們看一個獨立 ESXi 主機上 VM 的 MAC 地址生成示例,以了解如何在獨立 ESXi 主機上生成 VM MAC 地址並理解生成原則。VM 唯一通用識別符(UUID)的最後六個字符被用來填充 VM 的 VMware MAC 地址的最後三個八位組。在獨立 ESXi 主機上創建的 VM 的 VMware MAC 地址的前三個八位組是 00:0C:29

在下面的屏幕截圖中,您可以看到具有以下參數的 VM:

MAC 地址:00:0C:29:B0:3E:1D

VM 名稱: Windows-VM

讓我們檢查 VM UUID 並比較 UUID 和 VM MAC 地址的最後幾個字元。

您可以使用 PowerCLI 中的以下命令來檢查 VM 的 UUID:

Get-VM Windows-VM | %{(Get-View $_.Id).config.uuid}

在我們的情況下,UUID 是 564df9a2-261e-869e-5a1d-d118abb03e1d

而 MAC 地址是 00:0C:29:B0:3E:1D

如您所見,這個規則是有效的。

結論

您可以在 VMware vSphere Client 和 VMware Host Client 的圖形使用者界面中檢查 VM 的 MAC 地址和 IP 地址。作為替代方案,如果您知道 VM 的名稱,可以使用 ESXi 命令行或 PowerCLI 來檢測 VM 的 MAC 地址。如果您知道 VM 的 IP 或 MAC 地址,您還可以使用 VMware PowerCLI 來識別 VM 名稱。瞭解將 VMware MAC 地址分配給虛擬機和 VMware 虛擬基礎結構中的其他機器的原則,可以在檢查連接設備的 MAC 地址時幫助您從網絡中的其他設備中識別與 VMware 相關的機器。

不要忘記備份在 VMware vSphere 中運行的 VM。使用可靠的 VMware ESXi 備份軟件,如 NAKIVO Backup & Replication 進行強大的數據保護。該解決方案支持 VM 備份、物理服務器備份、數據庫備份和 Microsoft 365 備份。

Source:
https://www.nakivo.com/blog/locating-vmware-vms-by-ip-or-mac-address/