VirtualBox 网络连接方式研究(二)
本文由本人(六六Coding的地方)翻译自VirtualBox官方文档,尊重知识产权转载请注明出处。谢谢!
官方:https://www.virtualbox.org/manual/ch06.html
目录:
1.1 虚拟化网络硬件
1.2 网络模式介绍
1.3 Network Address Translation(NAT)
1.3.1 配置NAT端口转换
1.3.2 NAT模式的局限性
1.4 Network Address Translation Service
1.5 桥接网络(Bridged Networking)
1.6 内部网络(Internal networking)
1.7 仅主机模式(Host-only networking)
1.8 UDP通道网络(UDP Tunnel networking)
1.9 VDE networking
1.10 限制I/O网络的带宽
1.11 提高网络性能
1.5 桥接网络(Bridged Networking)
在桥接网络模式下,VirtualBox在你的物理主机上启用了一个设备驱动,用以过滤从物理网络适配器中过来的数据。因此这个驱动被称为“网络过滤”设备。它允许VirtualBox拦截物理网络数据和注入数据有效地在软件中创建一个新的网络接口。当虚拟机在应用这个新的软件接口时,看起来就好像是虚拟机物理地连接到了网线上:物理主机可以通过这个接口与虚拟机进行数据的收发。这意味着你可以在虚拟机和网络之间设置路由和“桥梁”。
Note
桥接无线接口和桥接有线接口是完全不同的,因为大多数无线适配器不支持混合模式。所有通信必须使用主机的无线适配器的MAC地址,因此VirtualBox需要将传出包的以太网报头取代源MAC地址,以确保回复将发送到主机接口。当VirtualBox收到一个带有目标IP的传入包时,比对IP从属于虚拟机适配器,VirtualBox将会把以太网报头的目标MAC地址替换到虚拟机适配器的MAC地址中,并接收数据包。为了获取虚拟机的IP地址,VirtualBox会检查ARP和DHCP数据包。
桥接网络的局限性取决于你的物理主机操作系统:
* Macintosh 主机。使用AirPort(Mac的无线网络)时功能受限。目前的VirtualBox只支持IPv4和IPv6的AirPort。如果要使用其他协议(比如IPX),你必须选择有线接口。
* Linux主机。应用无线接口是功能受限,目前的VirtualBox只支持IPv4和IPv6的无线。如果要使用其他协议(比如IPX),你必须选择有线接口。
此外,Marvell Yukon II EC Ultra Ethernet NIC上的sky2提供的有线接口中把MTU设置为小于1500字节,将会导致丢包现象。
Linux 内核2.6.27版本不允许通过VLAN适配器实现虚拟机与外部网络之间的中继,Linux以外的操作系统亦然。
* Solaris主机。不支持使用无线接口。因为Solaris子系统的技术限制,不能完全支持用IPFilter进行虚拟机通信过滤。这些问题将在未来的Solaris 11版本中得到解决。
从VirtualBox4.1开始,在Solaris11的物理主机上(build159及以上版本),无需任何配置就可以通过Solaris的Crossbow Virtual Network Interfaces (VNICs) 直接与VirtualBox相连,但VNIC需单独地与虚拟机网络接口对应。
从VirtualBox2.0.4开始到VirtualBox 4.0,VNIC可被使用,但具有以下注意事项:
1)将VNIC无法在多个虚拟机网络接口间共享,即每个虚拟机网络接口都必须有自己独有的VNIC
2) 使用VNIC虚拟网卡和虚拟机VNIC网络接口必须有相同的MAC地址。
使用VLAN接口与VirtualBox时,他们必须根据PPA-hack命名方案(如“e1000g513001”)来命名,否则虚拟机可能会以错误的格式接收数据包。
1.6 内部网络(Internal networking)
内部网络模式类似于桥接网络模式那样可以直接与“外部网络”通信。这里的“外部网络”是指连接在内网中的同一台物理主机上的其他虚拟机。
从技术层面上说,内部网络实现网络连接需求,桥接网络模式也可以实现。但是应用内部网络模式能够提高安全性。在桥接网络模式中,所有的数据通信都需要通过主机系统的物理接口。因此可以添加一个数据嗅探器(类似Wireshark)到主机接口和所有通过的数据的日志中。如果你想实现一台机器上的多台虚拟机之间的私下通信,并向物理主机和用户隐藏虚拟机的数据的话,桥接网络就不适合了。
在有需要的情况下,内部网络模式将会自动创建而不需要其他配置。每一个内部网路简单地一名称来区分。一旦多于一个有相同内网ID的网卡活动,VirtualBox的支持驱动会自动连接这些网卡并从当网络交换机的角色。VirtualBox支持驱动实现了一个完整的以太网交换机,并支持支持广播/多播帧和混杂模式。
为了把多台虚拟机的网卡连接成内网,将网络设置成内网模式,有以下两种方式:
1)通过图形界面进行设置,在网络设置对话框里选择一个存在的内网并输入新的名字。
2)命令行:
VBoxManage modifyvm "VM name" --nic<x> intnet
可以指定网络名字:
VBoxManage modifyvm "虚拟机名称" --intnet<x> "network name”
如果不指定网络名字,默认情况下网卡将会连接到intnet网络。
出于安全考虑,在默认情况下,Linux实现内部联网只允许在相同的用户ID运行的虚拟机建立一个内部网络。但是,可以建立一个共享的内部网络接口,通过用不同的UUID用户访问。
1.7 仅主机模式(Host-only networking)
仅主机模式是2.2版本之后加入的新的连网模式。可以将它视为桥接模式和内网模式的混合体:像桥接网络模式那样够通过物理以太网交换机与物理主机、其他主机相连。类似地,像内网模式一样,不需要存在物理网络接口,又因为它们没有连接到物理网络接口,所以虚拟机不能够与物理主机之外的外网连接。
在应用仅主机网络模式时,VirtualBox会在物理主机上创建一个新的软件接口。换言之,桥接模式下
一个现存的物理接口会被用于连接虚拟机,而仅主机网络模式下在主机上会创建一个新的“回环”接口,在内部网络模式下,虚拟机之间的通信数据是不可见的,但主机”回环“接口上的数据能够被截获。
在多台虚拟机装配到一起进行合作的情景下,对于预先配置的虚拟设备来说,仅主机网络模式十分的有用。例如,一台虚拟机可以包含一个web服务器和一个第二数据库,并且,由于他们主要用于相互访问,设备可以指示VirtualBox可以为这两台虚拟机创建一个仅主机网络模式,然后第二个虚拟机(桥接)网络将在Web服务器连接到外界提供数据,但外界无法连接到数据库。
将虚拟机的网络接口更改成仅主机网络模式:
* VirtualBox图形用户界面进行网络设置修改
* 命令行输入:
VBoxManage modifyvm "VM name" --nic<x> hostonly
详见:Section 8.8, “VBoxManage modifyvm”
在能够添加仅主机网络模式到虚拟机之前,需要创建至少一个仅主机接口,用户界面:”File" → "Preferences" → "Network" → "Host-only network" → "(+)Add host-only network”。
命令行:
VBoxManage hostonlyif create
详见:Section 8.34, “VBoxManage hostonlyif”
仅主机网络模式像内部网络模式一样,你会发现VirtualBox内置的DCHP服务器非常的有用。它可以在仅主机网络模式下管理IP地址,否则你需要配置所有的静态IP。
* 在用户图形界面可以在网络设置中的仅主机选项中设置DCHP服务;
* 或者你也可以用命令行操作,详见:Section 8.35, “VBoxManage dhcpserver”
Note:在Linux和Mac OS X主机上,仅主机网络接口限制在128个。在Windows和Solaris主机上没有这样的限制。
1.8 UDP通道网络(UDP Tunnel networking)
这种组网方式允许在不同主机运行的虚拟机之间实现互联。
从技术实现上讲,这是把虚拟机网卡收发的以太网帧封装成UDP/IP的数据包,再通过可用网络将它发送给主机。
UDP 通道网络模式有以下三个字段属性:
* Source UDP port
主机监听的端口。主机从该端口收到源地址来的数据包后,将会转发给接收端的虚拟机网卡
* Destination address
传送数据的目标主机的IP地址
* Destination UDP port
传输数据所用的端口号
当不同主机上的两台虚拟机互联时,必须交换他们的IP地址。在单一主机上,源UDP端口必须与目标UDP端口交换。
下例:主机1用10.0.0.1端口,主机2用10.0.0.2端口,配置UDP通道网络模式命令如下:
VBoxManage modifyvm "VM 01 on host 1" --nic<x> generic VBoxManage modifyvm "VM 01 on host 1" --nicgenericdrv<x> UDPTunnel VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> dest=10.0.0.2 VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> sport=10001 VBoxManage modifyvm "VM 01 on host 1" --nicproperty<x> dport=10002
and
VBoxManage modifyvm "VM 02 on host 2" --nic<y> generic VBoxManage modifyvm "VM 02 on host 2" --nicgenericdrv<y> UDPTunnel VBoxManage modifyvm "VM 02 on host 2" --nicproperty<y> dest=10.0.0.1 VBoxManage modifyvm "VM 02 on host 2" --nicproperty<y> sport=10002 VBoxManage modifyvm "VM 02 on host 2" --nicproperty<y> dport=10001
当然,你也可以设置成一台主机上的虚拟机互联,只要把目标地址(Destination port)都设置成127.0.0.1就好了。设置成一台主机时,这就类似于”内部网络“了,区别在于对于主机来说,虚拟机之间的数据通信是可见的,而一般的内部网络模式是不可见的。
NOTE:基于Unix的主机(例如Linux,Solaris,Mac OS X),不能绑定端口号<1024的应用程序,因为它无法被root.所运行。如果配置了这样的源UDP端口,虚拟机将不会启动。
1.9 VDE networking
分布式虚拟以太网(VDE)是灵活的,虚拟网络的基础设施系统以一种安全的方式跨越多台主机。
它允许L2 / L3交换,包括生成树协议,VLANs和WAN仿真。这是VirtualBox的可选部分,只包含在源代码中。
VirtualBox VDE只有一个参数.
* VDE network
虚拟机将要连接的VDE交换机名称。
以下简单的例子演示如何把虚拟机连接到VDE交换机:
1、创建一个VDE交换机
de_switch -s /tmp/switch1
2、 用命令行做一下配置:
VBoxManage modifyvm "VM name" --nic<x> generic VBoxManage modifyvm "VM name" --nicgenericdrv<x> VDE
连接到自动分配的交换机端口:
VBoxManage modifyvm "VM name" --nicproperty<x> network=/tmp/switch1
连接到指定的switch<n>端口:
VBoxManage modifyvm "VM name" --nicproperty<x> network=/tmp/switch1[<n>]
3、VDE交换机端口和VLAN之间的映射(可选):(从交换机CLI)
vde$ vlan/create <VLAN> vde$ port/setvlan <port> <VLAN>
VDE只能在Linux和FreeBSD主机上应用。只能在从VirtualSquare项目上安装了VDE软件和VDE插件类库的主机系统上运行。了解更多关于VDE网络模式,官方文档传送门:
http://wiki.virtualsquare.org/wiki/index.php/VDE_Basic_Networking
1.10 限制I/O网络的带宽
从4.2开始,VirtualBox允许对网络传输的最大带宽进行限制。一台虚拟机的多个网络适配器可以共享带宽群组限制,这样的限制可能会超过一个以上。
NOTE:VirtualBox只会对发送端的虚拟机数据进行延迟发送,不会对虚拟机接受的数据进行限制。
通过VBoxManage可以进行限制器的配置,以下示例创建了一个名为”Limit“的带宽群组,设置限制为20 Mbit/s 并将群组分配到虚拟机的第一第二个网络适配器中:
VBoxManage bandwidthctl "VM name" add Limit --type network --limit 20m VBoxManage modifyvm "VM name" --nicbandwidthgroup1 Limit VBoxManage modifyvm "VM name" --nicbandwidthgroup2 Limit
所有的群组中的适配器都会共享带宽限制,意味着以上例子中的两个适配器的带宽都不会超过 20 Mbit/s 。但是,如果其中一个适配器不需要带宽,那另一个将会占用它所在群组的剩余带宽。
在虚拟机运行时,都可以动态改变带宽群组的限制,即时生效。下例是将上例创建的带宽群组限制更改为 100 Kbit/s :
VBoxManage bandwidthctl "VM name" set Limit --limit 100k
要完全禁用虚拟机的第一个适配器,用以下命令:
VBoxManage modifyvm "VM name" --nicbandwidthgroup1 none
也可以在虚拟机运行时禁用所有分配到带宽群组中的适配器,通过将群组限制设为0,下例对名为”Limit“的带宽群组进行适配器禁用:
VBoxManage bandwidthctl "VM name" set Limit --limit 0
1.11 提高网络性能
VirtualBox中提供多种可以”附着“在主机网络上的虚拟网络适配器,可以通过多种方法进行配置。对于不同类型的适配器和所用的不同”附件“,网络性能也会不同。性能方面,Virtio网络适配器要优于Intel PRO / 1000仿真适配器,也优于PCNet系列适配器。Virtio和 Intel PRO/1000 适配器都得益于分段(segmentation)和卸载(offloading)校验。分段卸载是高性能的基础,因为它允许较少的内容交换,显著增加了虚拟机与主机之间传输的数据包大小限制。
NOTE:Virtio和Intel PRO/1000 for Windows XP驱动都不支持分段卸载,因此Windows XP系统上的虚拟永远无法达到与其他类型的虚拟同样的传输速率。请参考Microsoft知识库中其他信息,相应文章842264。
三种网络模式:内部网络、桥接网路和仅主机网络几乎具备相同的网络性能。因为内网模式下的数据包不经过主机网络堆栈,所以运行要更快更节省CPU的占用。NAT模式下,因为NAT提供网络地址解析,所以是最慢(也最安全)的模式。通用驱动附件是特殊的,不能替代其他类型的附件。
分配到虚拟机上的CPU数不能提高虚拟机的网络性能,在某些情况下还会有害于虚拟机,因为这增加了虚拟机的并发。
对于提高虚拟机的网络性能,有以下几点需要注意:
1、尽可能使用Virtio网络适配器,至少使用Intel/1000 适配器;
2、尽量使用桥接网络模式而不是NAT模式;
3、确定分段卸载在虚拟机操作系统上是否可用。一般默认情况下是可用的,你可以在Linux虚拟机上用ethtool命令行检查确认offloading设置;
4、要像第三方工具Wireshark那样在虚拟机网络适配器上对网络流量进行全面而细致的分析,需要在虚拟机的网络适配器上使用一个混合模式的规则(policy),并且只能在NAT网络、桥接网络适配器、内部网络和仅主机模式的适配器下使用。
设置混合模式规则( promiscuous mode policy)可以在用户界面的网络设置中配置,也可以用命令行工具VBoxManage配置,详见:Section 8.8, “VBoxManage modifyvm”
混杂模式规则是:
a)deny(默认设置),它可以隐藏不适合该虚拟机的网络适配器的流量。
b)allow-vms,它可以隐藏在这个虚拟机的网络适配器中的所有主机的流量,但允许它对来自其它虚拟机或发送到其他虚拟机的流量可见。
c)allow-all 删除所有限制——虚拟机的网络适配器能看到的所有通信流量。
相关推荐
以下是对VirtualBox虚拟机网络连接设置的几种常见方式的详细解释: 1. **NAT模式**:这是VirtualBox默认的网络连接方式。在这种模式下,虚拟机通过主机的NAT服务访问互联网,对外部网络而言,虚拟机看起来就像主机...
**定义**:在Bridged networking模式下,虚拟机的网络接口被映射到主机的一个物理网络接口上,使得虚拟机仿佛直接连接到了主机所在的物理网络。 **配置参数**:参数由主机所在的网络环境分配,通常包括动态分配的IP...
6. **扩展功能**:VirtualBox支持USB设备的直接连接,对于需要在虚拟环境中测试特定硬件的场景,这是一个重要特性。同时,通过添加Guest Additions,可以提升图形界面的性能和交互体验。 7. **备份与克隆**:为了...
5. **网络设置**:VirtualBox提供了多种网络模式,包括桥接网络、网络地址转换(NAT)、内部网络和主机-only网络,让用户可以根据需求配置虚拟机的网络连接方式。 6. **扩展功能**:通过VirtualBox的扩展包,用户...
- 在 VirtualBox 中,可以为虚拟机配置不同类型的网络连接,如桥接模式、NAT 模式或内部网络模式等。 - 选择合适的网络模式以便虚拟机能够访问外部网络或与其他虚拟机通信。 5. **安装应用程序与测试**: - 在...
这几天耐心下通过度娘,查找了一些资料,通过观察,渐渐弄明白了VIRTUALBOX的网络设置问题,恩,废话不多说,首先介绍一下虚拟机的几种网络连接方式。 第一种:NOT ATTACHED 顾名思义就是不设置网络连接,即虚拟...
用户可以创建新的虚拟机,配置其硬件设置,如处理器数量、内存大小、硬盘容量以及网络连接方式。虚拟机内部就像一个独立的电脑,可以安装操作系统并进行日常使用。此外,VirtualBox还提供了共享文件夹功能,使得宿...
4. **配置网络与位置**:根据需要调整虚拟设备的网络连接和地理位置设置,以满足特定的测试需求。 ### 结论 Oracle VM VirtualBox 和 Genymotion 都是业界领先的虚拟化解决方案,它们分别在桌面虚拟化和 Android ...
VirtualBox是一款广受欢迎的开源虚拟化软件,由Oracle公司开发并维护...在使用过程中,用户还可以利用VirtualBox的各种高级功能,如共享文件夹、USB设备支持、远程桌面连接以及虚拟网络配置,以满足不同场景下的需求。
通过上述步骤,不仅能够在VirtualBox中成功搭建一个模拟的内部网络环境,还能将原本运行在Windows环境下的通达OA2008迁移到Debian Linux上,从而达到学习和理解Linux、MySQL、Apache、PHP等技术的目的。此外,还可以...
3. 进入设置,选择“网络”选项卡,然后在“连接到”下拉菜单中选择“桥接网卡”,以使虚拟机直接与物理网络相连。 4. 关闭虚拟机,然后在“设置”中选择“硬件”>“网络适配器”,选择“其他设备”并进一步指定为...
实验中使用了虚拟机环境,如Vmware或VirtualBox,配置了多个网络接口,以研究数据包经过NAT引擎前后的变化。实验者在Linux或Windows XP客户机上使用Wireshark抓包工具来捕获和分析数据包。通过比较客户端(C)与...
实验环境是通过VMware或VirtualBox建立的两台虚拟机,分别运行Kali Linux和Ubuntu 14.04,它们通过NAT模式连接成局域网,可以互相访问。确保Python和Scapy已安装后,即可开始实验。 在实验过程中,学生不仅需要掌握...
首先,基于Web的计算机网络课程虚拟实验室的核心在于其在线性,通过互联网,学生可以在任何有网络连接的地方进行实验操作,大大提高了学习的便捷性和灵活性。这尤其适合远程教育和混合式教学模式,使得无法亲临实地...
本教程主要聚焦于在虚拟环境中配置Linux系统,特别是Red Hat Linux 9版本,以便于用户可以在虚拟机上实现网络连接。虚拟机允许我们在一台主机上运行多个独立的操作系统实例,而无需物理硬件的额外开销,这在开发、...
虚拟化实验的现状与不足主要体现在两个方面:一是使用仿真软件进行实验教学,例如PacketTracer和Virtualbox,虽然能够模拟真实的网络环境,但这类软件无法完全模拟真实设备,搭建复杂的网络拓扑结构,且实验操作与...
通过三层路由解决多子网间的通信,如示例中R1路由器的路由表所示,显示了不同网络的直接连接和动态路由。 4. **设备登录与管理**:管理虚拟机和网络设备,如设置访问控制、配置虚拟机网络接口,确保必要的设备能...
- 为了优化性能,你可能需要配置网络连接方式(NAT或桥接网卡),以便虚拟机能接入网络进行更新和软件安装。 - 还可以调整虚拟机的资源分配,如内存大小、处理器核心数等,以满足Ubuntu的运行需求。 4. **安装...
虚拟网卡在IT领域中扮演着重要角色,它模拟了真实物理网卡的功能,但不直接连接到物理网络,而是为系统提供了一个额外的网络连接选项。这在很多场景下非常有用,例如测试网络配置、隔离网络环境、进行网络故障排查等...
- `lsof -i`:列出所有打开的网络连接及其对应的端口。 - `sudo dhclient eth1`:重新获取eth1接口的IP地址。 - `sudo mn`:运行Mininet命令。 - `sudo mn -c`:清除Mininet环境。 - `sudo mn --controller remote,...