`

VirtualBox 网络连接方式研究(一)

阅读更多

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  提高网络性能

 

 

VirtualBox为虚拟机提供8种虚拟PCI Ethernet 网卡。对于每一种网卡,都可以单独选择以下特性:
      1)连同硬件一起虚拟化;
      2)虚拟化模式的虚拟网卡将会运行在你的主机物理网络硬件上。(the virtualization mode that the virtual card will be operating in with respect to your physical networking hardware on the host.)

VirtualBox用户图形界面中可以配置四种模式的网卡,也可以在命令行通过VBoxManage modifyvm进行配置。VBoxManage modifyvm

1.1  虚拟网络硬件

 

对于每一种网卡,你都可以选择不同的硬件应用于虚拟机上。VirtualBox可以对以下六种网络硬件进行虚拟化。

  *  AMD PCNet PCI II (Am79C970A);

  *  AMD PCNet FAST III (Am79C973, the default);

  *  Intel PRO/1000 MT Desktop (82540EM);

  *  Intel PRO/1000 T Server (82543GC);

  *  Intel PRO/1000 MT Server (82545EM);

  *  Paravirtualized network adapter (virtio-net).

PCNet FAST III 是默认的,因为几乎所有的原始操作系统都支持这种网络硬件,GNU GRUB 启动管理器也是默认的。例外的是,被选作一些客户机操作系统的Intel PRO/1000系列适配器不再被PCNet网卡所支持,例如Windows Vista。
  
Intel PRO/1000 MT Desktop运行在Windows Vista及以后版本。没有安装附加驱动的Windows XP 客户机能够识别Intel PRO/1000 T Server网络硬件。而Intel PRO/1000 MT Server则引用自其他平台。

"Paravirtualized network adapter (virtio-net)" 网络硬件是特殊的,如果选择这一项,VirtualBox将不会虚拟一般网络硬件(即被一般客户机原始系统所支持)。然而VirtualBox提供了一个特殊的软件接口以实现客户机的虚拟化环境,从而避免了模仿网络硬件和提高网络性能的复杂性。从v3.1开始,VirtualBox提供了支持行业标准“为Virtio”的网络驱动,这个网络驱动是开源项目KVM的一部分。

“virtio”网络驱动可应用于以下客户机操作系统:
  *  Linux内核版本2.6.25及其以后版本可以配置提供virtio支持,一些分布式也会将virtio移植到旧的内核版本中。
  *  For Windows 2000,XP和Vista的virtio驱动可以在KVM项目的主页下载安装。
http://www.linux-kvm.org/page/WindowsGuestDrivers

假如您使用Intel虚拟化网卡和桥接网络的话,VirtualBox会有限支持所谓的巨型帧,即网络数据包超过1500字节的数据。换言之,AMD网络设备不支持巨型帧,在这样的情况下,巨型数据包将会在传输和接受方向上被丢弃。客户机操作系统试图通过这个特性来观察一个数据包的丢失,这将会导致客户机上的应用程序产生意外的行为。在其默认的配置情况下不会导致客户机操作系统出问题,只是巨型帧需要被明确的使用。

1.2   网络模式简介


八种网络适配器都可以分别配置以下的模式:

Not attached
     在这种模式下,VirtualBox会告诉客户机有一个网卡的存在,但没有连接——就好像没有以    太网线缆插入该网卡。这种方式就像把虚拟以太网线缆拔出并破坏连接,这可以有效地告知客户机操作系统没有网络连接可用并强制重新配置。

NetworkAddress Translation(NAT)
      如果你只是想要通过虚拟机浏览网页、下载文件和查阅邮件的话,那这个默认的模式应该可以满足你。但在使用Windows文件共享时会有一些限制,下文提及。

NAT Network
      这是在VirtualBox4.3时引入的一种新的NAT类型模式。下文1.4将会提及。

Bridged networking
       这是一种为了满足更高级的网络需求的模式,比如在客户机上进行网络模拟和运行服务器。启用之后,VirtualBox将会链接到你安装的网卡之一,并直接交换网络数据包,绕过你的物理机网络堆栈。

Internal networking
       可用于创建不同的虚拟机之间的访问机制,但是不能够访问物理主机和外部网路中的机器。

Host-only networking
       这是一种用于创建物理主机与虚拟机之间的访问机制的模式,不需要物理主机的网络接口。相反,在物理主机上创建了一个虚拟网络接口(类似于回环接口),提供物理主机与虚拟机之间的链接。

Generic networking
        很少使用的模式,共享相同的通用网络接口,通过允许用户选择能被VirtualBox包含或者分布在一个扩展包里的驱动。
        这种模式下有两种可用的子模式:
UDP Tunnel
          这可以用于直接相互连接在不同的物理主机上运行的虚拟机,容易而且透明,覆盖现有的网络基础设施。

VDE(虚拟分布式以太网)networking
           此选项可用于在Linux或FreeBSD的主机上连接虚拟分布式以太网交换机。目前,这需要从源代码编译的VirtualBox,因为Oracle包不包含它。

下面对这些网络模式进行详细的描述。

 

1.3  Network Address Translation(NAT)

NAT模式是虚拟机访问外网的最简单的方式。通常不需要对物理主机和虚拟机做任何配置。正因如此,NAT在VirtualBox中是默认的联网方式。

一台应用NAT模式的虚拟机就像一台通过路由器连入互联网的真机,在这里,VirtualBox的网络引擎充当路由器,在VirtualBox中,这台路由器放置在每一台虚拟机和物理主机之间。出于实现最大安全分离的考虑,默认情况下虚拟机之间不能够相互访问。

NAT模式的一个劣势是,像经过路由分配之后的私有网路一样,虚拟机不能访问外网,也不能被外网所访问。如此一来你便无法在虚拟机上运行一台服务器,除非你给虚拟机设置端口转发(下文1.3.1提及)。

虚拟机操作系统所发出的网络数据包将会被VirtualBox的NAT引擎以TCP/IP协议所接收,并通过主机操作系统再次发送出去。对于主机上的应用程序或是与主机处于同一网段的其他电脑来说,这就好像是主机上的VirtualBox应用程序通过主机的IP地址把数据包发了出去。VirtualBox将会监听对所发数据包的回复,然后重新打包并发送给私有网络上的虚拟机。

VirtualBox集成了DHCP服务器,虚拟机会接收在该服务器上的网络地址和私有网络配置。因此,分配到虚拟机上的IP地址通常和物理主机的网络完全不同。应用NAT模式是,虚拟机会配置多张网卡,第一张网卡用于与10.0.2.0私有网络连接,第二张网卡用于与10.0.3.0网络连接,诸如此类。如果你需要改变虚拟机分配的IP的排序,可以到这里:Section 9.11, “Fine-tuning the VirtualBox NAT engine”.

1.3.1   配置NAT端口转换

NAT模式下,虚拟机连接的是内部的私有网络,无法被物理主机访问,所以虚拟机的网络服务无法与物理主机或其他通过网段的外界主机相连。但VirtualBox可以像路由器一样通过端口转换来实现与外网相连。也就是说,VirtualBox会监听物理主机的端口并转发所有发送到虚拟机上的数据包,不论虚拟机的端口号相同与否。

对于网络上的物理主机或其他主机、虚拟机的应用程序,看似是被代理了服务,实际上是运行在物理主机上的。这也意味着你不能在同一个端口号同一台物理主机上运行相同的服务。但你仍然可以在虚拟机上运行该服务——例如,在物理主机或者其他虚拟机上不能得到许可的服务,能够在与物理主机不同的操作系统上运行。

你可以在VirtualBox用户界面的网络设置中进行端口转换的相关配置,也可以用命令行VBoxManage,详见:Section 8.8, “VBoxManage modifyvm”.

你需要知道虚拟机用的服务用的是哪些端口,以确定物理主机用哪些端口(通常情况下建议设置为同样的端口号)。你可以用任意在物理主机上没有被占用的端口。

例如,用以下命令设置传入NAT连接到虚拟机上的SSH服务:

VBoxManage modifyvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,,22"

 
以上例子中,所有发送到物理主机2222端口的TCP流量将被转发到虚拟机的22端口上。tcp是定义的用于转发的协议(也可以用udp)。guestssh纯粹是用于描述的,如果省略的话会自动赋值。-natpf后的数字用于指定网卡。
要移除转发规则,用以下命令:

VBoxManage modifyvm "虚拟机名称" --natpf1 delete "guestssh"

 
如果虚拟机需要使用静态分配的IP地址而不使用内置的DHCP服务,那就需要在注册转发规则时指定虚拟机的IP:

VBoxManage modifyvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"

 
这个例子中的字段跟上个例子基本相同,差别在于,告知NAT引擎可以访问10.0.2.19的虚拟机。

需要把所有的传入流量从一个特定的主机接口转发到虚拟机,用以下命令指定主机接口IP:

VBoxManage modifyvm "虚拟机名称" --natpf1 "guestssh,tcp,,2222,10.0.2.19,22"

 
通过端口2222将所有到达本地接口(127.0.0.1)的TCP流量转发到虚拟机的22端口

VBoxManage还可以在虚拟机运行时配置传入NAT连接:Section 8.13, “VBoxManage controlvm”

1.3.2   NAT模式的局限性

NAT模式下有四点局限性
  * ICMP协议局限:
一些常用的网络调试工具(例如 ping 或tracerouting)应用的是ICMP协议收发消息,从VirtualBox2.1之后提供了ICMP协议的支持(可以ping),其他调试工具还不能支持。
  * 不能完全支持UDP广播的接收
虚拟机无法完全支持UDP广播的接收,出于节省资源的考虑,它只会监听从特定端口发出UDP数据包之后的一小段时间。因此,基于广播的NetBIOS名称解析并不总是起作用(但WINS始终起作用),一种解决方法是,你可以在\\server\share标记中使用所需服务器的数字IP。
  * 不支持类似于GRE的协议
NAT模式下不支持TCP和UDP以外的协议,意味着不能使用一些VPN工具(例如微软的PPTP)。只能使用应用TCP UDP协议的VPN。
  * 不能应用<1024物理主机转发端口
在基于Unix的物理主机上(例如Linux,Solaris,Mac OS X)无法绑定<1024的端口号,应用程序无法被root.运行。如果你配置了这样的端口转发虚拟机将拒绝启动。

这些限制通常不会影响标准网络的使用,但是NAT模式下有可能会影响协议的正常使用。NFS就是其中的例子,服务器通常配置为拒绝非特权端口的连接(<1024)。


1.4  Network Address Translation Service

NAT service的工作原理和家用的路由器相似,系统群组在网络中应用这种模式来防止外部网络的直接访问,但能让系统内部通过TCP和UDP协议实现互访或访问系统外部网络。

NAT service模式附带了一个内部网络,虚拟机利用它可以连接到内部网络,创建NAT网络时即可设置内部网络的名字。创建NAT网络命令:

VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable

 
其中的“natnet1”是被使用的内网名字,“192.168.15.0/24”是NAT service接口的网络地址和掩码。默认情况下这个静态网关将被分配地址192.168.15.1(跟随接口地址),但这可以被改变。添加DHCP服务到内部网络,我们可以作如下修改:

VBoxManage natnetwork add --netname natnet1 --network "192.168.15.0/24" --enable --dhcp on

 
或者是在创建之后加入DHCP服务

VBoxManage natnetwork modify --netname natnet1 --dhcp on

 
关闭该服务

VBoxManage natnetwork modify --netname natnet1 --dhcp off

 
DHCP服务器提供注册域名服务器列表,,但它不会从128/7网络进行服务器匹配(映射)。

启动NAT Service:

VBoxManage natnetwork start --netname natnet1

 
如果网络中附带了DCHP服务器,将会一并启动。

VBoxManage natnetwork stop --netname natnet1

 
关闭NAT service时也会一并关闭。

移除NAT service:

VBoxManage natnetwork remove --netname natnet1

 
如果DCHP服务器正在内部网络中使用的话,使用这个命令DCHP服务将不会被移除。

设置支持端口转换:(--port-forward-4 for IPv4 ;—port-forward-6 for IPv6)

VBoxManage natnetwork modify --netname natnet1 --port-forward-4 "ssh:tcp:[]:1022:[192.168.15.5]:22"

 
这条命令制定了端口转换规则,从物理主机的TCP1022端口到IP地址为192.168.15.5的虚拟机22端口。物理主机端口、虚拟机端口、虚拟机IP是必填参数。
删除该规则:

VBoxManage natnetwork modify --netname natnet1 --port-forward-4 delete ssh

 
可以绑定NAT Service到特定的接口:

VBoxManage setextradata global "NAT/win-nat-test-0/SourceIp4" 192.168.1.185

 
浏览注册的NAT 网络列表:

VBoxManage list natnetworks

 

 1.5及以后章节将另开一篇博客。

转下篇:VirtualBox 网络连接方式研究(二)

1
2
分享到:
评论

相关推荐

    VirtualBox相关

    以下是对VirtualBox虚拟机网络连接设置的几种常见方式的详细解释: 1. **NAT模式**:这是VirtualBox默认的网络连接方式。在这种模式下,虚拟机通过主机的NAT服务访问互联网,对外部网络而言,虚拟机看起来就像主机...

    virtualBox 4.2.4

    6. **扩展功能**:VirtualBox支持USB设备的直接连接,对于需要在虚拟环境中测试特定硬件的场景,这是一个重要特性。同时,通过添加Guest Additions,可以提升图形界面的性能和交互体验。 7. **备份与克隆**:为了...

    VirtualBox中的网络配置方法

    **定义**:在Bridged networking模式下,虚拟机的网络接口被映射到主机的一个物理网络接口上,使得虚拟机仿佛直接连接到了主机所在的物理网络。 **配置参数**:参数由主机所在的网络环境分配,通常包括动态分配的IP...

    VirtualBox v6.0.4 MAC版

    5. **网络设置**:VirtualBox提供了多种网络模式,包括桥接网络、网络地址转换(NAT)、内部网络和主机-only网络,让用户可以根据需求配置虚拟机的网络连接方式。 6. **扩展功能**:通过VirtualBox的扩展包,用户...

    Getting Started with Oracle VM VirtualBox

    5. **免费且开源**:作为一款开源软件,VirtualBox 不仅完全免费,而且源代码开放,可供用户自由地研究和修改。 #### 三、构建个人虚拟环境步骤 1. **安装 VirtualBox**: - 首先,访问 VirtualBox 官方网站下载...

    虚拟机virtualbox

    用户可以创建新的虚拟机,配置其硬件设置,如处理器数量、内存大小、硬盘容量以及网络连接方式。虚拟机内部就像一个独立的电脑,可以安装操作系统并进行日常使用。此外,VirtualBox还提供了共享文件夹功能,使得宿...

    virtualbox虚拟机网络设置原理解析

    这几天耐心下通过度娘,查找了一些资料,通过观察,渐渐弄明白了VIRTUALBOX的网络设置问题,恩,废话不多说,首先介绍一下虚拟机的几种网络连接方式。 第一种:NOT ATTACHED 顾名思义就是不设置网络连接,即虚拟...

    VirtualBox-6.1.4-136177-Windows64&32

    VirtualBox是一款广受欢迎的开源虚拟化软件,由Oracle公司开发并维护...在使用过程中,用户还可以利用VirtualBox的各种高级功能,如共享文件夹、USB设备支持、远程桌面连接以及虚拟网络配置,以满足不同场景下的需求。

    官网 Oracle VM VirtualBox 和 genymotion

    3. **安全实验**:安全研究人员可以使用 VirtualBox 隔离潜在危险的软件或网络活动,避免对实际系统造成损害。 4. **备份与恢复**:通过 VirtualBox 的快照功能,可以轻松备份和恢复虚拟机状态,这对于数据恢复非常...

    在VirtualBox中向Debian Linux移植通达OA2008.docx

    通过上述步骤,不仅能够在VirtualBox中成功搭建一个模拟的内部网络环境,还能将原本运行在Windows环境下的通达OA2008迁移到Debian Linux上,从而达到学习和理解Linux、MySQL、Apache、PHP等技术的目的。此外,还可以...

    virtio-net-drivers-VittualBox-virtio-net超级网卡Win驱动(带源码)

    3. 进入设置,选择“网络”选项卡,然后在“连接到”下拉菜单中选择“桥接网卡”,以使虚拟机直接与物理网络相连。 4. 关闭虚拟机,然后在“设置”中选择“硬件”&gt;“网络适配器”,选择“其他设备”并进一步指定为...

    VirtualBox复制的虚拟机无法获取IP的完美解决办法

    昨天晚上想玩玩zookeeper集群,在vb里复制了一台主机,可怎么也无法获取IP,经研究,终于还是解决了. 1.复制主机时勾选 重新初始化所有网上的mac地址,并选择完全复制. 2.启动复制的主机 3. 编辑/etc/udev/rules.d/70-...

    虚拟Linux系统教程_虚拟机上网Linux

    除了基础的虚拟机上网配置,学习者还可以深入研究以下主题: - 虚拟机的性能优化,包括内存分配、CPU分配和磁盘I/O策略。 - 使用NAT模式和Host-Only模式进行网络配置的区别。 - 虚拟机之间的网络通信,如使用VMware...

    linux安装过程及问题解决

    - 为了优化性能,你可能需要配置网络连接方式(NAT或桥接网卡),以便虚拟机能接入网络进行更新和软件安装。 - 还可以调整虚拟机的资源分配,如内存大小、处理器核心数等,以满足Ubuntu的运行需求。 4. **安装...

    安装虚拟机 一台电脑分多台

    4. **配置虚拟机**:设置网络连接方式(桥接网卡、NAT或仅主机模式),分配足够的硬件资源,如CPU核心数和显存。 四、虚拟机应用实践 1. **软件开发**:对于前端开发,可以在一个虚拟机上搭建完整的开发环境,如...

    虚拟机安装并与xshell连接,linux命令

    在这种背景下,很多计算机爱好者都非常渴望有一个便宜的或者免费的操作系统供大家学习研究。1983年,计算机的巨人Richard Stallman发起了一个计划――GNU计划,目标是构建一个完全自由的操作系统。所谓完全自由,...

    如何在XP中添加虚拟网卡

    通过这种方式,可以在同一台物理机器上构建出一个完整的局域网环境,方便进行各种网络实验和技术研究。 #### 总结 通过上述步骤,我们可以在Windows XP系统中成功添加并配置虚拟网卡。这项技术不仅有助于提高网络...

    网络安全课程设计之B包嗅探和包伪造.docx

    接着,包伪造是网络攻击的一种手段,但也可用于合法的网络测试和安全研究。通过Scapy,我们可以构造并发送带有任意源和目标地址的数据包。在实验的第二部分,学生需要编写Python程序来生成伪造数据包,然后在另一台...

    泡泡鱼虚拟网卡

    【泡泡鱼虚拟网卡】是一款专为个人学习和研究用途设计的软件,它允许用户在计算机上创建一个虚拟网络接口,即虚拟网卡。虚拟网卡在IT领域中扮演着重要角色,它模拟了真实物理网卡的功能,但不直接连接到物理网络,...

    使用colinux在windows上虚拟linux

    CoLinux是一种独特的解决方案,它允许用户在不借助像VMware或VirtualBox这样的传统虚拟化软件的情况下,在Windows系统上运行完整的Linux操作系统。 CoLinux的工作原理是通过在Windows主机和Linux内核之间建立网络...

Global site tag (gtag.js) - Google Analytics