VirtualBox 可以为每一个虚拟机分配8个网卡。每一个网卡的连接方式可以选为下列之一:

  • Not attached
  • Network Address Translation (NAT)
  • Bridged networking
  • Host-only networking
  • Internal networking
  • Generic networking

去掉第一个和最后一个,我们关心的只剩下4个:

(以下假定host在192.168.1.*网段中)

Network Address Translation (NAT)

Host

192.168.1.3

Guest1

10.0.2.15

Guest2

10.0.2.15

...

10.0.2.15

NAT是在虚拟机中访问外部网络的最简单的方式,是VirtualBox默认的网络模式。通常不需要对host和guest进行任何设置。

但由于虚拟机连接到的是VirtualBox内部的私有网络,使得虚拟机对其他虚拟机、对host以及网络上的其他计算机都是不可见的。为了使其某些端口对外部可见,需要使用 port forwarding。

通过VirtualBox界面或命令行,对名为windowsxp的虚拟机的nat网卡设置一个转发规则Rule1

VBoxManage modifyvm "windowsxp" --natpf1 "Rule1,tcp,,2222,,22"

格式:

--natpf<1-N> [<name>],tcp|udp,[<hostip>],<hostport>,[<guestip>], <guestport>

Bridged networking

它可以满足虚拟机中更高级的网络需求,比如运行servers等。它通过host的网卡,直接连入到host网络中。因此,虚拟机能被分配到一个中独立的IP,所有网络功能完全和在网络中的真实机器一样。

Host

192.168.1.3

Guest1

192.168.1.4

Guest2

192.168.1.5

...

192.168.1.*

Internal networking

用来创建虚拟机间的网络,对host以及外部的计算机不可见。

Host

192.168.1.3

Guest1

169.254.75.244

Guest2

169.254.75.245

...

169.254.*.*

Host-only networking

Host

192.168.1.3

192.168.56.1

Guest1

192.168.56.101

Guest2

192.168.56.102

...

192.168.56.*

Host和若干个虚拟机之间的网络。Host中自动增加一个有点类似于local loopback接口,和Guest位于同一网段。

与外界的网络绝缘。不能访问外界网络,也不能被外部计算机访问。

其他

由于每个虚拟机都可以设置8个网卡,每个网卡可以选不同的模式,故而可以有各种组合,从而实现各种效果。





VirtualBox中有4中网络连接方式:

a. NAT                          网络地址转换模式(Network Address Translation)
b. Bridged Adapter        桥接模式
c. Internal                     内部网络模式
d. Host-only Adapter     主机模式

VMWare中有三种,其实他跟VMWare 的网络连接方式都是一样概念,只是比VMWare多了Internal方式。

要让自己(或别人)理解深刻,方法就是做比较和打比方,比较之间的不同和相同,拿熟知的事物打比方。先来一张图,通过这张图就很容易看出这4种方式的区别:

 

一、四种模式介绍

1、NAT

NAT:Network Address Translation,网络地址转换

NAT模式是最简单的实现虚拟机上网的方式,你可以这样理解:

Guest访问网络的所有数据都是由主机提供的,Guest并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Guest的存在。

Guest可以访问主机能访问到的所有网络,但是对于主机以及主机网络上的其他机器,Guest又是不可见的,甚至主机也访问不到Guest。

虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
虚拟机与虚拟机的关系:相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。

IP:10.0.2.15
网关:10.0.2.2
DNS:10.0.2.3
一台虚拟机的多个网卡可以被设定使用 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、Bridged Adapter(网桥模式)

网桥模式,你可以这样理解:

它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。

网桥模式下的虚拟机,你把它认为是真实计算机就行了。

虚拟机与主机的关系:可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机于网络中其他主机的关系:可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机与虚拟机的关系:可以相互访问,原因同上。

IP:一般是DHCP分配的,与主机的“本地连接”的IP 是同一网段的。虚拟机就能与主机互相通信。
笔记本已插网线时:(若网络中有DHCP服务器)主机与虚拟机会通过DHCP分别得到一个IP,这两个IP在同一网段。 主机与虚拟机可以ping通,虚拟机可以上互联网。
笔记本没插网线时:主机与虚拟机不能通信。主机的“本地连接”有红叉,就不能手工指定IP。虚拟机也不能通过DHCP得到IP地址,手工指定IP后,也无法与主机通信,因为主机无IP。
这时主机的VirtualBox Host-Only Network 网卡是有ip的,192.168.56.1。虚拟机就算手工指定了IP 192.168.56.*,也ping不能主机。

 

3、Internal(内网模式)

内网模式,顾名思义就是内部网络模式:

虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。

虚拟机与主机的关系:不能相互访问,彼此不属于同一个网络,无法相互访问。
虚拟机与网络中其他主机的关系:不能相互访问,理由同上。
虚拟机与虚拟机的关系:可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。

IP:VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.*。
笔记本已插网线时:虚拟机可以与主机的VirtualBox Host-Only Network 网卡通信
这种方案不受主机本地连接(网卡)是否有红叉的影响。
 

4、Host-only Adapter(主机模式)

主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。

我们可以理解为Guest在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。

虚拟机与主机的关系:默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
虚拟机与网络主机的关系:默认不能相互访问,原因同上,通过设置,可以实现相互访问。
虚拟机与虚拟机的关系:默认可以相互访问,都是同处于一个网段。

虚拟机访问主机,用的是主机的VirtualBox Host-Only Network网卡的IP:192.168.56.1  ,不管主机“本地连接”有无红叉,永远通。
主机访问虚拟机,用是的虚拟机的网卡3的IP: 192.168.56.101  ,不管主机“本地连接”有无红叉,永远通。
虚拟机访问互联网,用的是自己的网卡2, 这时主机要能通过“本地连接”有线上网,(无线网卡不行)


补充:

我刚装上VirtualBox的时候所有的网络连接方式都试过了,但虚拟机和虚拟机之间就是不能相互访问,Ping都Ping不通,我在想难道VirtualBox的网络设置有这么复杂吗,后来想到是不是Windows XP的防火墙的问题,关闭之,一切就正常了!

 

二、灵活应用(模拟出来一个一台主机,监控一个局域网上网情况的网络环境)

通过对以上几种网络模式的了解,我们就可以灵活运用,模拟组建出我们所想要的任何一种网络环境了。

首先我开启了两台虚拟机vhost1与vhost2,当然如果硬件允许,我同样可以再增加vhost3、vhost4......
所有的vhost我都设置成internat内网模式,网络名称为intnal, 网关为192.168.56.100,意思就是通过 192.168.56.100网卡上网
其中有一台vhost1我设置为双网卡,一张为内网模式(192.168.56.100),一张为网桥模式 (192.168.1.101)。
两张网卡设置双网卡共享上网,虚拟机之间为局域网,其中有一台虚拟机vhost1通过与外网相连,所有局域网中的虚拟机又通过vhost1来实现上外网。
这样vhost1就可以监控整个虚拟机局域网上网情况了。

 

三、NAT 设置端口映射

你可以设置一个虚拟机的服务(比如 WEB 服务),通过使用命令行工具 VboxManage 代理。你需要知道虚拟机的服务使用哪个端口,然后决定在主机上使用哪个端口(通常但不总是想要使虚拟机和主机使用同一个端口)。在主机上提供一个服务需要 使用一个端口,你能使用在主机上没有准备用来提供服务的任何端口。一个怎样设置新的 NAT 例子,在虚拟机上连接到一个 ssh 服务器,需要下面的三个命令:
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/Protocol' TCP
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/GuestPort' 22
VBoxManage setextradata 'Linux Guest' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/guestssh/HostPort' 2222
说明:VboxManage 是一个命令行程序,请查询你的 VirtualBox 安装目录,'Linux Guest' 是虚拟主机名。guestssh 是一个自定义的名称,你可以任意设置,通过上面的三个命令,把虚拟机的 22 端口 转发到主机的 2222 端口。
又比如,我在虚拟机 debian 上安装了 apache2 服务器,使用 80 端口,映射到主机的 80 端口。使用下面的命令。
'C:/Program Files/innotek VirtualBox/VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/Protocol' TCP
'C:/Program Files/innotek VirtualBox/VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/GuestPort' 80
'C:/Program Files/innotek VirtualBox/VBoxManage.exe' setextradata 'debian' 'VBoxInternal/Devices/pcnet/0/LUN#0/Config/huzhangsheng/HostPort' 80
注意:要使设置生效,请关掉 VirtualBox 再运行虚拟机,我把 VirtualBox 安装在 winxp 上,在虚拟机中安装 debian 4.02r ,虚拟机名是 debian ,并安装了 apache2 php5 mysql-server ,在主机上用IE浏览 http://localhost,成功转发到虚拟机 debian 的 apache2 web 服务器上。
 
四、图解

NAT
这种方式下,虚拟机的网卡 连接到宿主的 VMnet8 上。此时系统的 VMWare NAT Service 服务就充当了路由器的作用,负责将虚拟机发到 VMnet8 的包进行地址转换之后发到实际的网络上,再将实际网络上返回的包进行地址转换后通过 VMnet8 发送给虚拟机。VMWare DHCP Service 负责为虚拟机提供 DHCP 服务。


Bridged
这种方式下,虚拟机就像一台真正的计算机一样,直接连接到实际的网络上,与宿主机没有任何联系。


Host-only
这种方式下,虚拟机的网卡连接到宿主的 VMnet1 上,但系统并不为虚拟机提供任何路由服务,因此虚拟机只能和宿主机进行通信,而不能连接到实际网络上。

 

replicate physical network connection state 选项解释:

Select if the virtual machine uses a bridged network connection and if you use the virtual machine on a laptop or other mobile device. As you move from one wired or wireless network to another, the IP address is automatically renewed.

单机多网卡或者笔记本和移动设备使用虚拟机时,当在有线网络和无线网络切换时,勾选了Replicate physical network connection state,虚拟机网卡的ip地址会自动更新,不需要重新设置。

 
 
五、VirtualBox配置双网卡,实现内外网络互访问
 
环境:
宿主机操作系统            Windows XP sp3
虚拟机软件                  VirtualBox
虚拟机操作系统            Fedora(Linux)

1、使虚拟电脑Fedora能够上网
原理:
NAT(网络地址转换模式)
  使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。NAT模式下的虚拟系统的TCP/IP配置信息是由VMnet8(NAT)虚拟网络的DHCP服务器提供的,无法进行手工修改,因此虚拟系统也就无法和本局域网中的其他真实主机进行通讯。采用NAT模式最大的优势是虚拟系统接入互联网非常简单,你不需要进行任何其他的配置,只需要宿主机器能访问互联网即可。
  如果你想利用VMWare安装一个新的虚拟系统,在虚拟系统中不用进行任何手工配置就能直接访问互联网,建议你采用NAT模式。
 
步骤:
在VirtualBox中设置网络连接,启用NAT连接模式。
 

 
启动Fedora,发现网络成功连接上了,运行FireFox,可以成功登陆Fedora网页。 


 
这里我们查看一下Fedora的IP和Windows的网络配置,并且互相ping。
 

 
Fedora可以ping到Windows

 
但是Windows不能ping到Fedora
这个也好理解,因为NAT的网络连接模式就是虚拟机通过宿主机的网络来访问互联网,那么虚拟机当然知道宿主机的网络地址。但是反过来,Windows就不清楚到达10.0.2.15地址要如何经过路由了。
在这里要注意一下,Fedora的IP地址10.0.2.5是通过DHCP自动分配的。
 
 
2、使虚拟电脑Fedora能够与宿主机互联
这一部分的目标就是实现Windows能够ping通Fedora。
 
原理:
bridged(桥接模式)
  在这种模式下,VirtualBox虚拟出来的操作系统就像是局域网中的一台独立的主机,它可以访问网内任何一台机器。在桥接模式下,你需要手工为虚拟系统配置IP地址、子网掩码,而且还要和宿主机器处于同一网段,这样虚拟系统才能和宿主机器进行通信。同时,由于这个虚拟系统是局域网中的一个独立的主机系统,那么就可以手工配置它的TCP/IP配置信息,以实现通过局域网的网关或路由器访问互联网。
 
使用桥接模式的虚拟系统和宿主机器的关系,就像连接在同一个Hub上的两台电脑。想让它们相互通讯,你就需要为虚拟系统配置IP地址和子网掩码,否则就无法通信。
如果你想利用VirtualBox在局域网内新建一个虚拟服务器,为局域网用户提供网络服务,就应该选择桥接模式。
 
步骤:
在VirtualBox中设置网络连接,开启Bridge Adapter连接模式

 
启动Fedora,发现多了一个未配置的网卡eht1
 

 
为该网卡添加一个网络配置,手动输入IP地址、子网掩码和网关(与宿主机要在同一网段)


 
设置好后查看网络信息,并ping宿主机(这个在上一部分就实现了)
 

 
宿主机ping虚拟机

 
成功ping通
 
3、补充:第三种连接方式
在这里必须提一点,就是如果172.16.35.237这个IP地址已经被其他计算机使用怎么办,为了解决这种IP地址冲突的情况,我们来进一步了解host-only连接模式。
 
原理:
host-only(主机模式)
      在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。  
 
提示:
在host-only模式下,虚拟系统和宿主机器系统是可以相互通信的,相当于这两台机器通过双绞线互连。
在host-only模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。
如果你想利用VirtualBox创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。
 
步骤:
在VirtualBox中设置网络连接,启用host-only连接模式。
 

 
启动Fedora,发现多了一个已配置的网卡eht2

 
因为eth1和eth2的IP地址都是172.16.35.237,在Windows端ping的时候是不会成功的。它搞不清楚是哪个了。

 
现在为该网卡添加一个网络配置,设置在和VirtualBox的网关192.168.56.1保持一致的网段。


 
弄好后的网络配置信息为:
 
设置好后,可以在Windows端ping地址172.16.35.237又成功了。再ping新的IP地址也成功了。
 
 
小提示:
在Fedora窗口界面进行网络配置的添加或删除时,可能系统并没有及时更新网络配置信息,可以在终端使用命令/etc/rc.d/init.d/network restart来重启网络连接
Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐