VirtualBox网络连接方式有四种 nat 网络地址转换(Network Address Translation),Birdged Network  桥接 ,Internal Network  内部网络(可以是虚拟机与虚拟机之间) ,Host-only。默认新建一个虚拟机,网络连接方式是nat,可以什么也不设置,虚拟机直OS接上网;后来改为Bridged方式,这样虚拟机OS可以设置局域网的IP便于测试;最后改为Host-only方式,这样即使主机网线没有接,虚拟机OS照样可以互通,虚拟机OS和主机也可以互通。
    VirtualBox代理vmware很久了,一直在公司使用。因为虚拟机OS要和局域网中的机器联合测试,所以必须具备独立的局域网IP,所以VirtualBox中网络设置为Bridged方式,这样虚拟机OS完全可以当做一台独立的真实机器来设置,设置一个局域网IP,可以正常上网,可以和局域网任何机器通信,当然两台机器之间也是可以互相通信。这种方式完全满足要求。
    但是,我必须说但是。但是一次培训的时候,却发生了意外。其实不能叫做意外,只是我感觉意外而已。培训环境中,主机没有接网线的情况下,两个虚拟机OS之间、虚拟机OS和主机之间都无法通信。我立马意识到是网线的问题,插上网线之后,又将主机、虚拟机OS的IP地址改成这个培训环境的网络IP,才得以正常使用。虽然没有出太大问题,但是耽误了一些时间。
    所以回来之后,专门上网查了相关资料,最终选择Host-only方式。Host-only方式,默认VirtualBox启动后,主机上多一个网络设备vboxnet0,IP地址为192.168.56.1。虚拟机OS如果dhcp方式,会获得192.168.56.网段的IP地址,这样主机和虚拟机OS、虚拟机OS之间是可以通信的。另外虚拟机OS可以手工设置IP地址为192.168.56.网段的,这样固定IP方便测试。采用这种方式的虚拟机OS不依赖主机的网线是否插上,对于培训环境非常有用。当然虚拟机OS就无法和局域网通信了,不过虚拟机可以加多个网卡啊!另一块网卡采用Birdged Network方式。这样接网线不接网线,主机、虚拟机OS和局域网都可以互通。

    参考http://cuixiaodong214.blog.163.com/blog/static/95163982009628104255225/

1: 用NAT方案
IP:10.0.2.15
网关:10.0.2.2
DNS:10.0.2.3

因为VirtualBox的帮助中,有以下一段说明(英译汉):

一台虚拟机的多个网卡可以被设定使用 NAT,第一个网卡连接了到专用网 10.0.2.0,第二个网卡连接到专用网络 10.0.3.0,等等。默认得到的客户端ip(IP Address)是10.0.2.15,网关(Gateway)是10.0.2.2,域名服务器(DNS)是10.0.2.3,可以手动参考这个进行修改。

NAT方案优缺点:
主机已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。
主机没插网线时: 主机的“本地连接”有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。


2:用Birdged Network 方案
IP:固定IP,与主机的IP 是同一网段的,虚拟机就能与主机互相通信,能与局域网通信,虚拟机OS之间可以通信。

主机已插网线时:虚拟机OS主机可以互通,虚拟机能与局域网通信,虚拟机可以上互联网。
主机没插网线时:主机与虚拟机不能通信。因为网关肯定是不通的,网络是受影响的。


3: 用Host-Only 方案
ip: VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.*

主机已插网线时:虚拟机可以与主机通信,两个虚拟机OS互通。
主机没插网线时:虚拟机可以与主机通信,两个虚拟机OS互通。

这种方案不受主机本地连接(网卡)是否有红叉的影响。


------------- 转 NAT 设置端口映射 -----------
你可以设置一个虚拟机的服务(比如 WEB 服务),通过使用命令行工具 VboxManage 代理。你需要知道虚拟机的服务使用哪个端口,然后决定在主机上使用哪个端口(通常但不总是想要使虚拟机和主机使用同一个端口)。在主机上提供一个服务需要使用一个端口,你能使用在主机上没有准备用来提供服务的任何端口。一个怎样设置新的 NAT 例子,在虚拟机上连接到一个 ssh 服务器,需要下面的三个命令:
VBoxManage setextradata "asianux3" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol" TCP
VBoxManage setextradata "
asianux3" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort" 22
VBoxManage setextradata "
asianux3" "VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort" 2222

说明:VboxManage 是一个命令行程序,请查询你的 VirtualBox 安装目录,"
asianux3" 是虚拟主机名。guestssh 是一个自定义的名称,你可以任意设置,通过上面的三个命令,把虚拟机的 22 端口 转发到主机的 2222 端口。

注意:要使设置生效,请关掉 VirtualBox 再运行虚拟机。