VirtualBox网络配置
一、概述
1.未指定
在此模式下,VirtualBox向客人报告网卡是否存在,但没有连接 - 就好像以太网电缆没有插入卡中一样。有助于通知客户机操作系统没有网络连接可用并强制重新配置。
2.网络地址转换(NAT)
如果您想要的是浏览网页,下载文件并在客人中查看电子邮件,那么此默认模式对您来说应该足够。请注意,使用Windows文件共享时有一些限制(详见第6.3.3节“NAT限制”)。
3.NAT网络
NAT网络是VirtualBox 4.3中引入的新NAT风格。详见 6.4 。
4.桥接网络
这是针对更高级的网络需求,如网络模拟和访客中运行的服务器。启用后,VirtualBox将连接到您安装的一个网卡,并直接交换网络数据包,从而绕过您的主机操作系统的网络堆栈。
5.内部联网
这可以用于创建不同类型的基于软件的网络,对于所选的虚拟机而言,该网络是可见的,而不是在主机或外部世界上运行的应用程序。
6.仅主机网络
这可以用于创建包含主机和一组虚拟机的网络,而不需要主机的物理网络接口。相反,虚拟网络接口(类似于环回接口)在主机上创建,从而提供虚拟机和主机之间的连接。
7.通用网络(暂不研究)
很少使用的模式共享相同的通用网络接口,允许用户选择可以包含在VirtualBox中的驱动程序,或者分发到扩展包中。
目前有两种可用的子模式:
①UDP隧道:
这可以用于通过现有网络基础架构直接,轻松,透明地互连在不同主机上运行的虚拟机。
②VDE(虚拟分布式以太网)网络:
此选项可用于连接到Linux或FreeBSD主机上的虚拟分布式以太网交换机。目前,这需 要从源代码编译VirtualBox,因为Oracle包不包括它。
下表简要介绍了最重要的组网模式:
| VM↔主机 | VM1↔VM2 | 虚拟机→互联网 | VM←互联网 |
仅主机 | + | + | - | - |
内部 | - | + | - | - |
桥接 | + | + | + | + |
NAT | - | - | + | |
NAT网络 | + | + | + |
二、详细讲解几种常用模式:
1.NAT(网络地址转换)
①介绍:
(网络地址转换)NAT是从虚拟机访问外部网络的最简单的方法。通常,它不需要主机网络和客户系统上的任何配置。因此,它是VirtualBox中的默认网络模式。
启用NAT的虚拟机非常像通过路由器连接到Internet的真实计算机。在这种情况下,“路由器”是VirtualBox网络引擎,它可以透明地将流量和虚拟机映射到虚拟机。在VirtualBox中,此路由器位于每个虚拟机和主机之间。这种分离使安全性最大化,因为默认情况下,虚拟机不能相互通信。
NAT模式的缺点在于,很像路由器背后的私有网络,虚拟机是从外部互联网看不见的,无法访问的; 您不能以这种方式运行服务器,除非您设置端口转发(如下所述)。
由客户操作系统发送的网络帧由VirtualBox的NAT引擎接收,该引擎提取TCP / IP数据,并使用主机操作系统重新发送。对于主机上的应用程序或与主机在同一网络上的另一台计算机,它看起来像主机上的VirtualBox应用程序使用属于主机的IP地址发送的数据。VirtualBox侦听对发送的包的回复,并将其重新发送到其专用网络上的客户机。
虚拟机从集成到VirtualBox中的DHCP服务器在私有网络上接收其网络地址和配置。因此分配给虚拟机的IP地址通常与主机完全不同的网络。由于虚拟机的多张卡可以设置为使用NAT,第一张卡连接到专用网络10.0.2.0,第二张卡连接到网络10.0.3.0等。如果由于某些原因需要更改客户分配的IP范围,请参阅第9.11节“微调VirtualBox NAT引擎”。
②端口转发:
由于虚拟机连接到VirtualBox内部的专用网络并且对主机不可见,因此主机或同一网络上的其他计算机无法访问guest虚拟机上的网络服务。然而,像物理路由器一样,VirtualBox可以通过端口转发,使客户端之外的世界可以选择服务。这意味着VirtualBox会监听主机上的某些端口,并将所有到达客户端的数据包重新发送到相同或不同的端口。
对于网络上的主机或其他物理(或虚拟)机器上的应用程序,它看起来像被代理的服务实际上在主机上运行。这也意味着您不能在主机上的相同端口上 运行相同的服务。但是,您仍然可以获得在虚拟机中运行服务的优势 - 例如,主机或其他虚拟机上的服务不能被服务中的漏洞或错误所威胁或崩溃,并且服务可以运行在与主机系统不同的操作系统中。
要配置端口转发,您可以使用图形化的端口转发编辑器,可以在配置为使用NAT的网络适配器的“网络设置”对话框中找到。在这里,您可以将主机端口映射到访客端口,以允许将网络流量路由到访客中的特定端口。
您将需要知道该服务使用的客户机中哪些端口,并决定在主机上使用哪些端口(但通常您将要使用客户机和主机上的端口并不总是相同)。您可以使用主机上尚未由服务使用的任何端口。
③NAT限制
用户应该注意的NAT模式有四种限制:
ICMP协议限制:
一些经常使用的网络调试工具(例如 ping或tracerouting)依赖于ICMP协议来发送/接收消息。虽然使用VirtualBox 2.1(ping现在可以工作)改进了ICMP支持,但是其他一些工具可能无法可靠地工作。
接收UDP广播是不可靠的:
客人不能可靠地接收广播,因为为了节省资源,它只在客户端在特定端口上发送UDP数据之后才侦听一定的时间。因此,基于广播的NetBios名称解析并不总是有效(但WINS始终可以使用)。作为解决方法,您可以使用\\server\share符号中所需服务器的数字IP 。
协议如GRE不受支持:
不支持TCP和UDP以外的协议。这意味着一些VPN产品(例如Microsoft的PPTP)不能使用。还有其他VPN产品使用简单的TCP和UDP。
转发主机端口<1024不可能:
在基于Unix的主机(例如Linux,Solaris,Mac OS X)上,不能从不运行的应用程序绑定到低于1024的端口root。因此,如果您尝试配置这样的端口转发,VM将拒绝启动。这些限制通常不会影响标准网络的使用。但是,NAT的存在还具有可能干扰正常工作协议的微妙效果。一个例子是NFS,其中服务器通常被配置为拒绝来自非特权端口的连接(即端口不低于1024)。
2. NAT网络
NAT网络的模式的工作方式与家庭路由器类似,将使用它的系统分组到网络中,防止该网络外部的系统直接访问其内部的系统,但允许系统内部进行通信,并与系统外部使用TCP和UDP over IPv4和IPv6。
NAT服务附加到内部网络。要使用它的虚拟机应该连接到该内部网络。当创建NAT服务时,选择内部网络的名称,如果内部网络不存在,则会创建内部网络。
3. 桥接网络
通过桥接网络,VirtualBox将使用主机系统上的设备驱动程序 来过滤物理网络适配器的数据。因此,此驱动程序称为“网络过滤器”驱动程序。这允许VirtualBox拦截来自物理网络的数据并将数据注入到其中,有效地在软件中创建了一个新的网络接口。当客人使用这样一个新的软件界面时,它会将主机系统视为客户端使用网络电缆物理连接到该接口:主机可以通过该接口向客户端发送数据,并从中接收数据。这意味着您可以在客户端和网络的其余部分之间设置路由或桥接。
为了使其工作,VirtualBox需要在您的主机系统上的设备驱动程序。桥接网络的工作方式已经通过VirtualBox 2.0和2.1完全重写,具体取决于主机操作系统。从用户的角度来看,主要的区别是在任何受支持的主机操作系统上,不再需要复杂的配置。[ 31 ]
注意:即使在具有桥接网络的Linux上不再需要TAP,您仍然可以使用TAP接口进行某些高级设置,因为您可以将VM连接到任何主机接口(也可以是TAP接口)。
要启用桥接网络,您需要做的是打开虚拟机的“设置”对话框,进入“网络”页面,并在“附加到”字段的下拉列表中选择“桥接网络”。最后,从页面底部的列表中选择所需的主机接口,其中包含系统的物理网络接口。例如,在典型的MacBook上,您可以在“en1:AirPort”(即无线接口)和“en0:Ethernet”之间进行选择,表示与网络电缆的接口。
注意:由于大多数无线适配器不支持混杂模式,因此连接到无线接口的方式与桥接到有线接口不同。所有流量必须使用主机的无线适配器的MAC地址,因此VirtualBox需要替换出站数据包的以太网头中的源MAC地址,以确保回复将发送到主机接口。当VirtualBox看到具有属于其中一个虚拟机适配器的目标IP地址的传入数据包时,它会将以太网头中的目标MAC地址替换为VM适配器的MAC地址,并将其传递。VirtualBox检查ARP和DHCP数据包,以了解虚拟机的IP地址。
根据您的主机操作系统,应注意以下限制:
在Macintosh主机上,当使用AirPort(Mac的无线网络)进行桥接网络时,功能受到限制。目前,VirtualBox仅支持通过AirPort的IPv4和IPv6。对于其他协议(如IPX),您必须选择有线接口。
在Linux主机上,
①当使用无线接口进行桥接网络时,功能受到限制。目前,VirtualBox仅支持IPv4和IPv6无线。对于其他协议(如IPX),您必须选择有线接口。
②另外,在Marvell Yukon II EC Ultra Ethernet NIC上的sky2驱动程序提供的有线接口上,将MTU设置为小于1500字节已知会在某些情况下导致数据包丢失。
③一些适配器在硬件中剥离VLAN标签。这不允许在VM与外部网络之间使用2.6.27 Linux内核之外的VLAN中继,也不允许使用Linux以外的主机操作系统。
4. 内部网络
内部网络类似于桥接网络,VM可以直接与外部通信。然而,“外部世界”仅限于连接到同一内部网络的同一主机上的其他VM。
即使在技术上,使用内部网络也可以完成所有使用桥接网络的功能,内部网络具有安全优势。在桥接网络模式下,所有流量都通过主机系统的物理接口。因此,可以将数据包嗅探器(例如Wireshark)附加到主机接口并记录其上的所有流量。如果由于任何原因,您喜欢同一台机器上的两台或多台虚拟机私密通信,则从主机系统和用户隐藏数据,因此桥接网络不是一种选择。
根据需要自动创建内部网络,即没有中央配置。每个内部网络都由其名称来确定。一旦存在多个具有相同内部网络ID的活动虚拟网卡,VirtualBox支持驱动程序将自动“连接”卡并充当网络交换机。VirtualBox支持驱动程序实现完整的以太网交换机,并支持广播/多播帧和混杂模式。
为了将虚拟机的网卡连接到内部网络,请将其网络模式设置为“内部网络”:
您可以在VirtualBox图形用户界面中使用虚拟机的“设置”对话框。在设置对话框的“网络”类别中,从网络模式的下拉列表中选择“内部网络”。现在从下面的下拉列表中选择现有内部网络的名称,或在输入字段中输入新名称。
ps:
如果不指定网络名称,intnet默认情况下网卡将连接到网络。
除非在参与内部网络的客户机操作系统中配置(虚拟)网卡以使用静态IP地址,否则可能需要使用VirtualBox内置的DHCP服务器来管理内部网络的IP地址。有关详细信息,请参见第8.38节“VBoxManage dhcpserver”。
作为安全措施,默认情况下,内部网络的Linux实现只允许在相同用户ID下运行的虚拟机建立内部网络。然而,可以创建一个共享的内部网络接口,可以由具有不同UUI的用户访问。
5.仅主机网络
仅主机网络是另一个网络模式,它已经添加了VirtualBox的2.2版本。它可以被认为是桥接和内部联网模式之间的混合:与桥接网络一样,虚拟机可以通过物理以太网交换机彼此通信和主机进行通信。类似地,与内部网络一样,物理网络接口不需要存在,并且虚拟机不能与主机之外的世界通话,因为它们没有连接到物理网络接口。
相反,当使用仅主机联网时,VirtualBox会在主机上创建一个新的软件界面,然后显示在现有网络接口旁边。换句话说,而通过桥接网络,现有的物理接口用于将虚拟机连接到主机网络,在主机上创建一个新的“环回”接口。而通过内部联网,虚拟机之间的流量不能被看到,主机上的“回送”接口上的流量就可以被拦截。
仅主机联网对于预配置的虚拟设备特别有用,其中多个虚拟机一起运送并设计为合作。例如,一个虚拟机可能包含一个Web服务器,另一个虚拟机可能包含一个数据库,并且由于它们旨在相互通信,所以该设备可以指示VirtualBox为两者设置一个仅主机网络。然后,第二(桥接)网络将网络服务器连接到外部世界,以向其提供数据,但是外部世界无法连接到数据库。
在将VM附加到仅主机网络之前,必须至少创建一个仅限于主机的接口,从GUI:“文件”→“首选项”→“网络”→“仅主机网络”→“( +)添加主机网络“。
对于只有主机的网络,像内部网络一样,您可能会发现内置于VirtualBox中的DHCP服务器非常有用。这样可以启用主机专用网络中的IP地址管理,否则您将需要静态配置所有IP地址。
在VirtualBox图形用户界面中,您可以通过“文件”→“首选项”→“网络”在全局设置中配置所有这些项目,其中列出了目前正在使用的所有主机网络。单击网络名称,然后在右侧的“编辑”按钮,您可以修改适配器和DHCP设置。
注意:
在Linux和Mac OS X主机上,仅主机接口的数量限制为128. Solaris和Windows主机没有这样的限制。
附:
6. UDP网络隧道
7. VDE网络
8. 限制网络I / O的带宽
9. 提高网络性能
三、未完待续
virtualbox官方文档:https://www.virtualbox.org/manual/
本文来源:https://www.virtualbox.org/manual/ch06.html#nat-limitations