如何查看虚拟机的IP?

如何查看虚拟机的IP?

如果我有一个虚拟机(例如使用 VirtualBox)在我的主操作系统中运行;如何从原始(主机)操作系统中识别(虚拟机的)虚拟接口和 IP 地址?

我想我可以只使用ifconfigip a或类似的;但不显示与连接的虚拟机相关的信息。尽管它显示主(主机)操作系统已192.168.1.104通过wlan0.

但是,如果我从虚拟机内部运行这些命令之一,我可以确认它当前处于活动状态 @ 10.0.2.15via eth0

答案1

Virtualbox 包含一个名为 的工具VBoxManage。该工具可以访问有关来宾操作系统的信息。

在此示例中(Windows 10,在 PowerShell 窗口中),我想查找名为 的 VM 的 IP DS201

PS C:\Program Files\Oracle\VirtualBox> .\VBoxManage.exe guestproperty get DS201 "/VirtualBox/GuestInfo/Net/0/V4/IP"
Value: 10.0.2.15

(它在 Linux 和 Mac OS X 中的工作方式与在 Windows 中的工作方式相同)

有关 VBoxManage 功能的文档可以在以下位置找到:https://www.virtualbox.org/manual/ch08.html

答案2

对于 NAT 模式(根据评论)来自NAT 模式虚拟网络的手动小节

对于您的评论,“主机必须...记录...IP链”,它是VirtualBox,而不是主机本身,这样做的是:

VirtualBox 的 NAT 引擎接收来宾操作系统发出的网络帧,提取 TCP/IP 数据并使用主机操作系统重新发送。对于主机上的应用程序,或者与主机位于同一网络上的另一台计算机,数据看起来像是由主机上的 VirtualBox 应用程序使用属于该主机的 IP 地址发送的。 VirtualBox 侦听对发送的包的回复,然后重新打包并将它们重新发送到其专用网络上的来宾计算机。

对于您最初的问题,只有 VirtualBox 知道访客的模拟地址:

虚拟机从集成到 VirtualBox 中的 DHCP 服务器接收其在专用网络上的网络地址和配置。这样分配给虚拟机的IP地址通常与主机位于完全不同的网络上。由于虚拟机的多个卡可以设置使用 NAT,因此第一个卡连接到专用网络 10.0.2.0,第二个卡连接到网络 10.0.3.0,依此类推。如果出于某种原因需要更改来宾分配的 IP 范围,请参阅第 9.11 节 “微调 VirtualBox NAT 引擎”。

答案3

@Tim Kennedy 的答案是可行的方法,但对于桥接的 Linux 来宾(Fedora),我必须安装来宾添加才能从主机查看属性,所以这是一个先有鸡还是先有蛋的问题。

  1. 在主机上,将 VBoxGuestAdditions.iso 设置为来宾 CD 之一。
  2. 启动访客。
  3. 登录虚拟机(如果是无头的,则需要 IP)。
  4. 如果不存在,请安装 kernel-devel。
  5. 挂载 CD (/dev/sr?)
  6. 从 CD 中,以 root 身份运行 VBoxLinuxAdditions.run。虚拟机将重新启动。

从现在开始,运行:

VBoxManage guestproperty 获取 YourVmName /VirtualBox/GuestInfo/Net/0/V4/IP

在主机上给出:

值:XYZT

请记住在更新来宾系统内核之后和重新启动之前安装来宾附加功能。这可以通过以下方式完成:

$ sudo /sbin/rcvboxadd Quicksetup <新内核版本(例如 5.13.9-200.fc34.x86_64)>

答案4

如果 Windows 是您的来宾系统,则使用VirtualBox 来宾添加已安装

  1. 单击“开始”按钮,键入cmd.exe并点击Return以启动 Windows 命令行。

  2. 然后粘贴并运行:

    "c:\Program Files\Oracle\VirtualBox Guest Additions\VBoxControl.exe" guestproperty get "/VirtualBox/GuestInfo/Net/0/V4/IP"

相关内容