如果我有一个虚拟机(例如使用 VirtualBox)在我的主操作系统中运行;如何从原始(主机)操作系统中识别(虚拟机的)虚拟接口和 IP 地址?
我想我可以只使用ifconfig
、ip a
或类似的;但不显示与连接的虚拟机相关的信息。尽管它显示主(主机)操作系统已192.168.1.104
通过wlan0
.
但是,如果我从虚拟机内部运行这些命令之一,我可以确认它当前处于活动状态 @ 10.0.2.15
via 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),我必须安装来宾添加才能从主机查看属性,所以这是一个先有鸡还是先有蛋的问题。
- 在主机上,将 VBoxGuestAdditions.iso 设置为来宾 CD 之一。
- 启动访客。
- 登录虚拟机(如果是无头的,则需要 IP)。
- 如果不存在,请安装 kernel-devel。
- 挂载 CD (/dev/sr?)
- 从 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 来宾添加已安装
单击“开始”按钮,键入
cmd.exe
并点击Return以启动 Windows 命令行。然后粘贴并运行:
"c:\Program Files\Oracle\VirtualBox Guest Additions\VBoxControl.exe" guestproperty get "/VirtualBox/GuestInfo/Net/0/V4/IP"