在大型 VMware vSphere 基础架构中,您可能只知道虚拟机的 IP 地址,需要名称,或反之。例如,您可能具有 IP 地址,通过 SSH 或远程桌面协议(RDP)远程访问客户操作系统,但需要虚拟机的名称,以便在 ESXi 主机上定位该虚拟机进行配置、迁移或备份。您可以使用 vSphere 完成这些操作,但不能使用客户操作系统。
此外,您可能需要识别虚拟网络适配器使用的虚拟网络适配器的 MAC 地址。在本博客文章中,我们将解释如何查找虚拟机的 IP 或 MAC 地址,以及如何在您知道 IP 或 MAC 地址时发现 VM 的名称。
在 VMware vSphere Client 中检查 IP 地址
在 VMware vSphere 中检查虚拟机的 IP 地址最直接的方法是使用 VMware vSphere Client。
- 在网页浏览器中,输入您的 vCenter Server 的 IP 地址,打开 vSphere Client,并输入您的凭据以登录。
- 转到 主机和集群,按名称选择所需的 VM,然后检查 摘要 标签。虚拟机的 VMware IP 地址显示在 IP 地址 部分。一个 VM 可以有多个虚拟网络适配器和多个 IP 地址。
- 单击 查看所有 N 个 IP 地址 以显示 VM 使用的所有 IP 地址。
- 在下面的截图中,您可以看到 VMware VM 使用的一个 IPv4 和一个 IPv6 地址。必须在 VMware vSphere Client 的 Web 界面中安装 VMware Tools 在客户操作系统(OS)上查看 IP 地址。虚拟机必须处于开机状态。
在 vSphere 客户端中检查 MAC 地址
A VM’s MAC address can be used for network diagnostics and other purposes.
- 为了检查 MAC 地址,在 VMware vSphere Client 的 Navigator 窗格中右键单击 VM 的名称,在上下文菜单中,单击 Edit Settings。
- 在 编辑设置 窗口的 虚拟硬件 选项卡中,单击网络适配器的名称以检查 VM 使用的虚拟网络适配器的 MAC 地址。
在 VMware 主机客户端中检查 VM 的 IP 地址
如果您使用没有VMware vCenter的独立ESXi主机,则无法使用VMware vSphere Client来管理虚拟环境。当您在服务器上使用ESXi Free Edition时会出现此情况。在这种情况下,您可以使用VMware Host Client在Web界面中管理ESXi主机。
- 在Web浏览器的地址栏中输入您的ESXi主机的IP地址,并输入ESXi管理员帐户的用户名和密码。
- 在导航器窗格中,单击虚拟机,并选择需要识别IP地址的VM。与在vSphere Client中识别VMware IP地址相同,VM必须启动,并且必须在客户操作系统上安装了VMware Tools。
- 在VM信息页面上,找到带有常规信息的部分,单击网络以展开窗格并查看VM使用的IP地址。
在VMware Host Client中检查VM MAC地址
- 要在VMware Host Client中检查VM的MAC地址,请像检查IP地址时选择VM。
在Web界面中向下滚动页面到 硬件配置 部分。 - 请在网页界面中滚动到硬件配置部分。
- 单击需要展开选项并查找相应虚拟网络适配器的MAC地址的VM网络适配器。
注意:在此示例中,我们使用由vCenter Server管理的ESXi主机,但我们登录到VMware Host Client。虚拟机是在vCenter中创建的。
在VMware vSphere中搜索VM可让您按名称而不是IP地址或MAC地址查找VM。
通过IP地址识别VM名称
如果您知道IP地址,可以使用vSphere PowerCLI来识别VM名称。
- 连接到ESXi主机或vCenter,并输入管理员帐户的用户名和密码:
Connect-VIServer ESXi_or_vCenter_IP -User root - 在我们的情况下,我们使用以下命令连接到由vCenter Server管理的ESXi主机:
Connect-VIServer 10.10.10.74 -User root - 显示具有指定IP地址的虚拟机的最简单命令是:
Get-VM * |where-object{$_.Guest.IPAddress -match “192.168.17.137”}
如果您知道PowerCLI中虚拟机的IP地址,还有另一种识别虚拟机名称的方法。在这种情况下,您应该运行两个命令。
- 定义要识别的虚拟机的IP地址:
$vmIP=”192.168.17.137″ - 获取有关虚拟机的信息:
Get-VM * |where-object{$_.Guest.IPAddress -eq $vmIP}|select Name, VMHost, PowerState,GuestId,@{N=”IP 地址”;E={@($_.guest.IPAddress[0])}}|ft - 如果您知道部分 IP 地址,可以显示所有与搜索模式匹配的 IP 地址的 VM。
$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 - 以下是获取主机或集群上所有虚拟机列表并显示可能的 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地址识别VM名称
如果您知道虚拟机的MAC地址,还可以使用VMware PowerCLI识别VM名称。
- 在VMware PowerCLI中连接到ESXi主机或vCenter。 在我的示例中,我连接到前面示例中提到的ESXi主机:
Connect-VIServer 10.10.10.74 -User root - 定义虚拟机的MAC地址并查找此VM的名称:
$vmMAC=”00:50:56:84:C4:5F”
Get-VM | Get-NetworkAdapter | Where-Object {$_.MacAddress -eq $vmMAC } | Select-Object Parent,Name,MacAddress - 你可以通过SSH连接到ESXi主机,并使用ESXi命令行界面来通过虚拟机MAC地址识别虚拟机名称。
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虚拟机的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虚拟机
- 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主机使用不同的前缀来避免在主机未连接到vCenter Server但稍后可以连接到vCenter的情况下MAC地址冲突。如果ESXi主机由vCenter管理,则vCenter会为VMware VM生成VMware vSphere MAC地址。
当手动设置MAC地址到VM(在VM设置中)时,前缀(前三个八位字节)会自动保留。MAC地址的后半部分可以自定义。
如果要为VMware VM手动设置MAC地址,请使用此模板:
00:50:56:XX:YY:ZZ
- 建议的十六进制值而不是XX之间的数字为00和3F。
- YY和ZZ字段的有效数字范围为00到FF(完整范围)。
使用这些建议可帮助您避免手动设置的MAC地址与VMware vCenter自动生成的VMware 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 服务器的唯一 ID(可以是 0 到 63)。
让我们看一个示例,当我们部署 vCenter 服务器作为一个具有 VMware MAC 地址的 VM 的网络接口时:
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
虚拟机名称:Windows-VM
让我们检查虚拟机 UUID,并比较 UUID 的最后几个字符和虚拟机 MAC 地址。
您可以使用以下 PowerCLI 命令检查虚拟机的 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 的图形用户界面中检查虚拟机的 MAC 地址和 IP 地址。作为替代方案,如果您知道虚拟机的名称,请使用 ESXi 命令行或 PowerCLI 来检测虚拟机的 MAC 地址。您还可以使用 VMware PowerCLI 根据虚拟机的 IP 或 MAC 地址来识别虚拟机名称。了解将 VMware MAC 地址分配给虚拟机和 VMware 虚拟基础设施中的其他设备的原则,有助于在检查连接设备的 MAC 地址时,从网络中识别出 VMware 相关的设备。
不要忘记备份在 VMware vSphere 中运行的虚拟机。使用可靠的 VMware ESXi 备份软件,如 NAKIVO Backup & Replication,进行强大的数据保护。该解决方案支持虚拟机备份、物理服务器备份、数据库备份和 Microsoft 365 备份。
Source:
https://www.nakivo.com/blog/locating-vmware-vms-by-ip-or-mac-address/