VirtualBox 网络设置:完整指南

在这个现代商业世界中,网络是交互式计算机操作的关键组成部分。很难想象在一切都以不断增长的速度变化的世界中,如何在计算机之间交换数据而没有网络。硬件虚拟化背后的一个核心理念是在几乎所有物理计算机可以使用的情况下使用虚拟机的可能性。

因此,虚拟机必须能够通过其虚拟网络适配器连接到物理和虚拟网络。在VirtualBox上运行的虚拟机可以连接到不同的网络。VirtualBox为虚拟机提供了多种网络模式。本博客文章涵盖了VirtualBox网络设置,以帮助您以最适合您需求的方式配置VirtualBox。

虚拟网络适配器

每个VirtualBox虚拟机最多可以使用八个虚拟网络适配器,每个适配器又被称为网络接口控制器(NIC)。可以在VirtualBox GUI(图形用户界面)中配置四个虚拟网络适配器。所有虚拟网络适配器(最多8个)可以使用VBoxManage modifyvm命令进行配置。VBoxManage是VirtualBox的命令行管理工具,可用于配置所有VirtualBox设置,包括VirtualBox网络设置。可以在虚拟机设置中访问VirtualBox网络适配器设置(选择您的虚拟机,点击设置,然后转到虚拟机设置窗口中的网络部分)。

在那里,你应该看到四个适配器选项卡。在创建虚拟机后,默认情况下会启用一个虚拟网络适配器。您可以选中“启用网络适配器”复选框以启用该适配器,并取消选中该复选框以禁用(该复选框定义虚拟网络适配器设备是否连接到虚拟机)。

点击高级以展开高级的VirtualBox网络适配器设置。

VirtualBox中的虚拟网络适配器类型

A virtual network adapter is a software-emulated physical device. There are six virtual adapter types that can be virtualized by VirtualBox.

  • AMD PCnet-PCI II(Am79C970A)。该网络适配器基于AMD芯片,可以在许多情况下使用。对于Windows客户端,此网络适配器可用于较旧的Windows版本(如Windows 2000),因为较新的Windows版本(如Windows 7、8和10)不包含此适配器的内置驱动程序。最初,Am79C970A PCI设备包含单芯片10兆位控制器和DMA引擎集成。该网络适配器还支持AMD的魔术数据包技术进行远程唤醒。
  • AMD PCnet-FAST III(Am79C973)。几乎所有可以在VirtualBox上运行的客户操作系统都支持这个虚拟化网络适配器。GRUB(引导加载程序)可以使用此适配器进行网络引导。与前一个网络适配器类似,这个也是基于AMD芯片的。
  • Intel PRO/1000 MT Desktop(82540EM)。此适配器与Windows Vista和更新的Windows版本完美兼容。大多数Linux发行版也支持此适配器。
  • Intel PRO/1000 T 服务器(82543GC)。Windows XP 在不安装额外驱动程序的情况下识别此适配器。
  • Intel PRO/1000 MT 服务器(82545EM)。此适配器型号对于从其他平台导入 OVF 模板并简化导入过程非常有用。
  • Para虚拟网络适配器(virtio-net) 是一个特例。不是虚拟化大多数操作系统支持的网络硬件,而是客户操作系统必须为虚拟化环境提供特殊的软件接口。这种方法可以避免网络硬件仿真的复杂性,因此可以改善网络性能。

行业标准的virtIO网络驱动程序得到了VirtualBox的支持。virtIO网络驱动程序是KVM项目的一部分,是开源的。这些驱动程序适用于具有2.6.25或更高内核的Linux,以及包括旧版本如Windows 2000、XP和Vista在内的Windows。

巨帧支持

VirtualBox对巨帧提供有限支持(以太网帧可携带大小超过1,500字节的数据包)。如果需要使用巨帧,请选择英特尔虚拟化网络适配器,并将该适配器配置为桥接模式。基于AMD的虚拟网络适配器不支持巨帧。如果尝试为基于AMD的虚拟网络适配器启用巨帧,则输入和输出流量的巨帧将被静默丢弃。巨帧默认禁用。

VirtualBox网络模式

VirtualBox提供了一长串网络模式,这是VirtualBox网络设置中最有趣的功能之一。每个虚拟网络适配器都可以单独配置为不同的网络模式。例如,您可以为适配器1设置NAT模式,为适配器2设置仅主机模式。您可以在连接到下拉菜单中选择网络模式。

让我们详细看看每种VirtualBox网络模式。

未连接

A virtual network adapter is installed in a VM, but the network connection is missing, much like when you unplug the Ethernet network cable when using a physical network adapter. This mode can be useful for testing. For example, you can enable this network mode for a short time to emulate unplugging the cable. When you disable the Not Attached mode by switching to another network mode, the network connection becomes available again. You can also check whether a DHCP client obtains the IP address correctly, whether the appropriate application can resume downloading after link interruption or packet loss, and so on.

您可以选择不使用未连接网络模式,而是在不选中连接电缆复选框的情况下使用任何其他网络模式。您可以在虚拟机运行时选中/取消复选框(请参阅上面的截图)。不要忘记点击确定以应用虚拟机网络配置的更改。

NAT

这种网络模式默认为虚拟网络适配器启用。虚拟机上的客户操作系统可以通过使用虚拟NAT(网络地址转换)设备访问物理局域网(LAN)中的主机。从客户操作系统可以访问外部网络,包括互联网。当使用NAT模式进行VirtualBox网络设置时,主机机器或网络中的其他机器无法访问客户机。这种默认网络模式对于只想要用虚拟机进行互联网访问的用户来说已经足够了。

虚拟机网络适配器的IP地址是通过DHCP获取的,在此网络模式下,网络的IP地址无法在GUI中更改。VirtualBox内置了DHCP服务器和NAT引擎。虚拟NAT设备使用VirtualBox主机的物理网络适配器作为外部网络接口。NAT模式中使用的虚拟DHCP服务器的默认地址为10.0.2.2(这也是VM的默认网关的IP地址)。网络掩码为255.255.255.0。

如果将两个或更多个VM的网络适配器配置为使用NAT模式,则每个VM将在其自己的隔离网络中通过私有虚拟NAT设备获得10.0.2.15 IP地址。每个VM的默认网关为10.0.2.2。在使用NAT模式时,VirtualBox中的IP地址不会更改,如下所示:

为了为使用VBoxManage的VM启用NAT模式,请执行以下命令:

VBoxManage modifyvm VM_name –nic1 nat

其中:

  • VM名称是您虚拟机的名称;
  • nic1是虚拟网络适配器的编号;
  • nat是您需要设置的VirtualBox网络模式的名称。

端口转发可以直接从VirtualBox VM网络设置窗口进行配置,方法是点击端口转发按钮(如上截屏所示)。关于在VirtualBox网络设置中配置端口转发的详细信息,请查看网络模式部分之后的内容。

NAT网络

这种模式类似于您在配置路由器时使用的NAT模式。如果您为多个虚拟机使用NAT网络模式,它们可以通过网络相互通信。虚拟机可以访问物理网络中的其他主机,并且可以访问包括互联网在内的外部网络。来自外部网络的任何机器以及与主机机器连接的物理网络中的机器都无法访问配置为使用NAT网络模式的虚拟机(类似于您在家中配置路由器以访问互联网的情况)。在使用NAT网络模式时,您无法从主机机器访问来宾机器(除非您在全局VirtualBox网络设置中配置端口转发)。内置的VirtualBox NAT路由器使用VirtualBox主机的物理网络接口控制器作为外部网络接口(与NAT模式的情况相同)。

可以在全局VirtualBox首选项中更改网络地址和名称(文件 > 首选项)。在首选项窗口的左侧窗格中,选择网络以访问全局VirtualBox网络设置,然后双击现有的NAT网络以编辑设置(您也可以通过单击+x图标添加新网络或删除现有网络)。

在小弹出窗口中,还可以启用/禁用DHCP、IPv6和配置端口转发。

默认的NatNetwork地址是10.0.2.0/24。

默认网关IP为10.0.2.1(使用x.x.x.1模板分配默认网关IP)。例如,如果在VirtualBox中为NAT网络模式创建一个新的虚拟网络,并设置192.168.22.0/24网络地址,那么该网络中网关的IP地址将为192.168.22.1。您无法更改NAT网络模式中所使用网络的网关IP地址和DHCP服务器分配的IP地址范围。同样,默认情况下DHCP服务器的IP地址为10.0.2.3(使用x.x.x.3模板)。

在VirtualBox中运行的Windows 7虚拟机上配置了使用NAT网络模式的虚拟网络适配器的IP配置显示在截图中。

如果您不想在GUI中编辑VirtualBox网络设置,可以使用以下命令通过VBoxManage添加新的NAT网络:

VBoxManage natnetwork add –netname natnet1 –network “192.168.22.0/24” –enable

其中:

  • natnet1是NAT网络的名称;
  • 192.168.22.0/24是该NAT网络的地址。

如果您想要使用VBoxManage配置虚拟机网络适配器以使用NAT网络模式,请运行以下命令:

VBoxManage modifyvm VM_name –nic1 natnetwork

其中:

  • nic1是第一个虚拟网络适配器(网络接口控制器);
  • natnetwork是VirtualBox网络模式的名称。

在应用这些设置之前,您可能需要关闭虚拟机。

为了避免在文章的每个部分中选择虚拟网络适配器的网络模式时重复使用 VBoxManage 命令,考虑所有可能的 VirtualBox 网络模式的名称:none, null, nat, natnetwork, bridged, intnet, hostonly, generic。

端口转发 是另一个可以从此窗口访问和配置的选项。端口转发可用于配置从主机机器和同一物理网络的其他主机访问在 VM 内运行的客户 OS 上的服务(见下文详细信息)。正如您所看到的,在 VirtualBox GUI 中,NAT 模式和 NAT 网络 模式的端口转发设置位置不同。NAT 模式的端口转发设置位于 VM > 设置 > 网络,而 NAT 网络 模式的端口转发设置可以在 文件 > 首选项 > 网络 中配置。这是因为 NAT 模式的端口转发规则针对每个 VM 是单独的,而 NAT 网络 模式的端口转发规则是针对连接到相应 NAT 网络的多个 VM 公用的。请查看下文有关配置端口转发的详细信息:端口转发 部分。

桥接适配器

这种模式用于将虚拟机的虚拟网络适配器连接到VirtualBox主机机器的物理网络适配器连接的物理网络。虚拟机的虚拟网络适配器使用主机网络接口进行网络连接。简单来说,网络数据包直接从/到虚拟网络适配器发送和接收,无需额外的路由。VirtualBox使用特殊的网络过滤驱动程序来过滤主机的物理网络适配器中的数据以实现桥接网络模式。

这种网络模式可用于在虚拟机上运行必须从物理局域网完全访问的服务器。在VirtualBox中使用桥接网络模式时,你可以从虚拟机访问主机机器、物理网络的主机和外部网络,包括互联网。虚拟机可以从主机机器以及连接到物理网络的其他主机(和虚拟机)中访问。

如果您的主机有多个物理网络适配器,您应该在VirtualBox网络设置中选择正确的适配器。在下面的截图中,您可以看到两个物理网络适配器 – 以太网适配器和Wi-Fi适配器。如果您为无线网络适配器使用桥接模式,您将无法在客户操作系统中使用该Wi-Fi适配器的低级功能。例如,您无法选择要连接的Wi-Fi网络、启用监控模式等。相反,您需要在主机机器上连接到Wi-Fi网络。如果您必须在虚拟机的客户操作系统中使用Wi-Fi适配器的所有功能,请使用USB Wi-Fi适配器和USB透传功能,如博客文章中关于在VirtualBox上安装Kali Linux所述。

在VirtualBox中,当使用桥接模式时,VM虚拟网络适配器的IP地址可以属于与主机机器的物理网络适配器的IP地址相同的网络。如果您的物理网络中有DHCP服务器,在桥接模式下,VM的虚拟网络适配器将自动获取IP地址(如果在客户操作系统的网络接口设置中设置为自动获取IP地址)。因此,以桥接模式运行的虚拟网络适配器的默认网关与您的主机机器相同。让我们看一个关于IP地址的简单示例。

物理网络的地址:10.10.10.0/24

物理网络中默认网关的IP地址:10.10.10.1

DHCP服务器在物理网络中的IP地址为:10.10.10.1

主机的IP配置:IP地址-10.10.10.72;子网掩码-255.255.255.0;默认网关-10.10.10.1。

客机的IP配置:IP地址-10.10.10.91;子网掩码-255.255.255.0;默认网关-10.10.10.1。

有时你可能会发现在物理网络中有多个网关。您可以使用主机连接到必要的网络,通过一个网关,并使用客机通过第二个网关连接到其他网络。您还可以编辑虚拟机上的路由表,并添加路由,以使用两个网关连接到适当的网络。正如您所看到的,桥接网络模式是VirtualBox网络设置中一个功能强大的选项,具有许多用例。

混杂模式。此模式允许网络适配器传递所有接收到的流量,无论流量被发送到哪个适配器。在正常模式下,网络适配器只接收包括该特定网络适配器的MAC地址作为目的地址的帧。当处于正常模式时,被发送到与所选适配器的MAC地址不同的MAC地址的帧(当流量不是广播时)将被丢弃。混杂模式使得物理网络适配器能够拥有多个MAC地址,允许所有传入流量通过主机机器的物理网络适配器,并到达具有自己的MAC地址的虚拟机器的虚拟网络适配器,即使该流量不是针对该特定虚拟机器的虚拟网络适配器。

大多数无线网络适配器不支持混杂模式。将桥接到Wi-Fi适配器是通过以下方式完成的 – VirtualBox在必须传送到VM的虚拟网络适配器的以太网帧的标头中替换适当的MAC地址(必须使用主机Wi-Fi适配器的MAC地址)。混杂模式对于网络测试和安全审计非常有用。您可以在VirtualBox网络设置中启用混杂模式,并使用嗅探器监视网络流量。

有三种使用混杂模式的选项。

  • 拒绝。任何不打算传输到VM的虚拟网络适配器的流量都对VM隐藏。此选项默认设置。
  • 允许VM。除了传输到其他VM的流量之外,所有流量都对VM网络适配器隐藏。
  • 允许所有。在此模式下没有限制。VM网络适配器可以看到所有传入和传出的流量。

混杂模式不仅适用于桥接网络模式,还适用于NAT网络内部网络主机模式适配器模式。

内部网络

配置为在VirtualBox 内部网络模式下工作的适配器的虚拟机连接到隔离的虚拟网络。连接到此网络的虚拟机可以彼此通信,但不能与VirtualBox主机机器或物理网络或外部网络中的任何其他主机通信。连接到内部网络的虚拟机无法从主机或任何其他设备访问。VirtualBox 内部网络可用于建模真实网络。

例如,您可以创建三个虚拟机,每个虚拟机都有一个连接到内部网络的虚拟网络适配器(适配器1)。这些网络适配器的IP地址是从用于VirtualBox内部网络的子网中手动定义的。其中一个虚拟机(VM1)还具有第二个虚拟网络适配器,该适配器配置为在NAT模式下运行。VM1被配置为路由器(创建路由器的最佳解决方案之一是安装Linux并配置IPTABLES,但初次测试VirtualBox网络时,您可以使用更简单的路由解决方案)。

A VM2 and VM3 whose network adapters are connected only to the VirtualBox internal network can have access to external networks if the IP address of the internal network adapter of the VM1 are set as a gateway in the network settings of VM2 and VM3.

本示例中使用的网络配置:

VM1。IP地址–192.168.23.1(内部网络模式);10.0.2.15(NAT模式),网关10.0.2.2(内置VirtualBox NAT设备的IP地址)。

VM2。IP地址–192.168.23.2(内部网络),网关–192.168.23.1

VM3。IP地址–192.168.23.3(内部网络),网关–192.168.23.1

VirtualBox内部网络子网:192.168.23.0/24

请看下面的图示以获得更清晰的了解。

注意:您还可以在实施到您的真实网络基础设施之前,在IPTABLES中为测试防火墙规则部署此类虚拟基础设施,但最好在连接到/从外部网络时,使用桥接模式而不是NAT模式的第二个虚拟网络适配器的VM1

仅主机适配器

此网络模式用于主机与客户之间的通信。虚拟机可以与连接到仅主机网络的其他虚拟机以及主机机器进行通信。VirtualBox主机机器可以访问连接到仅主机网络的所有虚拟机。

VirtualBox 仅主机虚拟网络适配器是在主机操作系统中创建的,用于仅主机网络。您可以通过转到文件>主机网络管理器来编辑此VirtualBox网络的设置。

在我们的情况下,仅主机网络的默认网络地址是192.168.56.0/24,主机机器上的虚拟网络适配器的IP地址是192.168.56.1。您可以在适配器选项卡中手动编辑这些IP地址。可以通过选中适当的复选框启用或禁用DHCP服务器。在DHCP服务器选项卡中,您可以设置DHCP服务器的IP地址、子网掩码以及要为DHCP客户端分配的IP地址范围。

虚拟机的虚拟网络适配器在其IP配置中没有网关,因为“仅主机”模式不允许连接到主机之外的任何设备。您还可以创建多个VirtualBox主机专用网络适配器,以使用不同的主机专用网络——只需按下“创建”按钮。如果不再需要专用主机网络,只需选择适配器并点击“删除”按钮。

通用驱动程序

此网络模式允许您共享通用网络接口。用户可以选择适当的驱动程序在扩展包中分发,或者与VirtualBox一起包含。

VirtualBox的通用驱动程序模式有两个子模式——UDP隧道和VDE(虚拟分布式以太网)网络。

UDP隧道。运行在不同主机上的虚拟机可以通过使用现有的网络基础设施进行透明通信。

VDE网络。虚拟机可以连接到Linux或FreeBSD主机上的虚拟分布式交换机。您需要从源代码编译VirtualBox才能使用VDE网络,因为标准的VirtualBox包不包括此功能。

VirtualBox网络模式比较

为了更方便,让我们在这张表中总结VirtualBox支持的所有网络模式的信息:

端口转发

端口转发是拦截发送到适当IP地址和端口的流量,并将该流量重定向到不同的IP地址和/或端口的过程。特殊应用程序可用于计算机和其他路由器设备上配置端口转发。端口转发最常见的用例之一是通过为外部网络提供访问被隐藏在NAT后面的特定网络服务。配置端口转发规则后,客户端可以通过连接到路由器(主机)的外部IP地址和指定端口来从外部访问适当的服务。

数据包首先由路由器上的应用程序拦截,然后该应用程序读取适当标头的目标IP地址和端口号(IP数据包标头、TCP或UDP段的标头)。如果标头中的目标IP地址和/或端口号的组合与端口转发规则中设置的条件匹配,路由应用程序将重写标头信息(IP地址和/或端口号),并根据端口转发规则将数据包/段发送到另一个网络接口。

默认情况下,无法从VirtualBox主机和LAN中的其他主机连接到网络适配器设置为以NAT或NAT网络模式运行的VirtualBox虚拟机,但VirtualBox提供了内置的端口转发功能以启用此类访问。

示例1 – SSH访问

现在让我们考虑配置端口转发以连接到使用NAT模式连接到网络的Ubuntu Linux VM上运行的SSH服务器的VirtualBox VMs的示例。您可以在此博客文章中了解如何在VirtualBox上安装Ubuntu。

输入数据:

主机IP:10.10.10.72(物理网卡)。

Ubuntu VM IP:10.0.2.15(NAT模式)

用户名:user1

1. 在Ubuntu VM上安装SSH服务器。

apt-get install openssh-server

2. 编辑SSH服务器配置文件。

vim /etc/ssh/sshd_config

3. 取消对启用密码验证的字符串的注释。

PasswordAuthentication yes

4. 重新启动SSH守护程序(服务)。

/etc/init.d/ssh restart

5. 验证SSH服务器是否正常工作,并尝试从本地主机(Ubuntu VM)连接到SSH服务器。

ssh [email protected]

6. 如果一切正常,您可以开始在VirtualBox中配置端口转发。

如你所记,你应该打开虚拟机设置并选择网络部分。选择配置为工作在NAT模式的虚拟网络适配器,展开高级设置并点击端口转发按钮。点击+图标以在虚拟机的VirtualBox网络设置中添加新的端口转发规则。

SSH服务器默认监听22号TCP端口。让我们创建一个规则,允许你将所有连接转发到端口8022的VirtualBox主机上,以便连接到Ubuntu虚拟机上的22号端口,这是SSH服务器监听的端口。首先,你可以创建一个仅允许来自VirtualBox主机的连接的规则。

名称 协议 主机IP 主机端口 客户机IP 客户机端口
Ubuntu-SSH TCP 127.0.0.1 8022 10.0.2.15 22

在VirtualBox GUI中,端口转发规则窗口的视图如下截图所示。

在你的VirtualBox主机上打开一个SSH客户端(例如,如果你使用Windows,则使用PuTTY)并连接到127.0.0.1的8022端口。

在你的物理网络中,如果创建类似的端口转发规则,其他主机可以通过连接到 VirtualBox 主机的端口 8022 来访问 Ubuntu 虚拟机上的 Ubuntu VM 通过 SSH 的。在这个例子中,VirtualBox 主机上的物理 NIC 的 IP 地址是 10.10.10.72。

名称 协议 主机 IP 主机端口 客户端 IP 客户端端口
Ubuntu-SSH TCP 10.10.10.72 8022 10.0.2.15 22

在 VirtualBox 主机上或连接到您的局域网的另一台主机上打开 SSH 客户端,并连接到端口 8022 的 VirtualBox 主机 IP。

示例 2 – HTTP 访问

如果你想在你的 VM 上部署一个 Web 服务器,并从外部提供对你的网站的访问,你可以添加另一个端口转发规则。让我们考虑如何配置从 VirtualBox 主机和连接到物理局域网 (LAN) 的其他计算机上访问部署在 Ubuntu VM 上的网站的端口转发规则。在这个例子中,Apache 被用作 Web 服务器。

首先,在运行在 VirtualBox 上的 Ubuntu VM 上安装 Apache。

apt-get install apache2

ufw防火墙在Ubuntu上默认处于禁用状态。如果在您的Ubuntu虚拟机上启用了防火墙,请确保已启用对TCP 80端口的访问。

安装Apache后,在Ubuntu虚拟机上打开一个网络浏览器,并在地址栏中输入http://127.0.0.1。如果一切正常,您将在网络浏览器中看到Apache2 Ubuntu默认页面

这意味着您现在可以在VirtualBox网络设置中配置端口转发规则,以访问托管在Ubuntu虚拟机上的网站。通过以下步骤打开端口转发设置窗口:VM设置 > 网络 > [选择您的适配器] > 端口转发(与上述类似)。您可以通过以下方式添加新规则:

名称 协议 主机IP 主机端口 客户IP 客户端口
Ubuntu-HTTP80 TCP 10.10.10.72 8080 10.0.2.15 80

在您的主机机器或连接到您的物理网络的任何其他机器上打开一个网络浏览器,并输入上述创建的端口转发规则中定义的VirtualBox主机机器的IP地址和端口:

http://10.10.10.72:8080

在当前示例中,10.10.10.72是VirtualBox主机机器的IP地址,8080是VirtualBox主机机器上监听的TCP端口。配置端口转发的积极结果如下屏幕截图所示。

您还可以为通过RDP、FTP和其他协议访问VM创建类似的规则。

对于虚拟网络适配器以NAT Network模式工作的VM,配置端口转发的功能类似(请参阅上面解释NAT Network模式的部分,以找到NAT Network模式的端口转发设置)。

结论

VirtualBox是一个功能强大的虚拟化解决方案,它灵活且提供了广泛的网络设置。每个VM可以使用高达八个虚拟网络适配器,每个网络适配器都可以仿真为真实的Intel和AMD网络接口控制器(NICs)的适当模型。VirtualBox网络适配器设置允许您更改每个虚拟NIC的MAC地址,插入或拔出虚拟网络电缆,并选择网络模式。为虚拟网络适配器设置网络模式是VirtualBox网络设置中最有趣和重要的部分之一。有六种网络模式,每种都可以用于不同的用例。端口转发可以针对网络适配器以NAT或NAT Network模式运行的VM进行配置。

Source:
https://www.nakivo.com/blog/virtualbox-network-setting-guide/