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。
虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
虚拟机与虚拟机的关系:相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
笔记本没插网线时:主机的“本地连接”有红叉的,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)
2、Bridged Adapter(网桥模式)
网桥模式,你可以这样理解:
它是通过主机网卡,架设了一条桥,直接连入到网络中了。因此,它使得虚拟机能被分配到一个网络中独立的IP,所有网络功能完全和在网络中的真实机器一样。
网桥模式下的虚拟机,你把它认为是真实计算机就行了。
虚拟机与主机的关系:可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机于网络中其他主机的关系:可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
虚拟机与虚拟机的关系:可以相互访问,原因同上。
3、Internal(内网模式)
内网模式,顾名思义就是内部网络模式:
虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
虚拟机与主机的关系:不能相互访问,彼此不属于同一个网络,无法相互访问。
虚拟机与网络中其他主机的关系:不能相互访问,理由同上。
虚拟机与虚拟机的关系:可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。如上配置图中,名称为intnet。
4、Host-only Adapter(主机模式)
主机模式,这是一种比较复杂的模式,需要有比较扎实的网络基础知识才能玩转。可以说前面几种模式所实现的功能,在这种模式下,通过虚拟机及网卡的设置都可以被实现。
我们可以理解为Guest在主机中模拟出一张专供虚拟机使用的网卡,所有虚拟机都是连接到该网卡上的,我们可以通过设置这张网卡来实现上网及其他很多功能,比如(网卡共享、网卡桥接等)。
虚拟机与主机的关系:默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
虚拟机与网络主机的关系:默认不能相互访问,原因同上,通过设置,可以实现相互访问。
虚拟机与虚拟机的关系:默认可以相互访问,都是同处于一个网段。
补充:
我刚装上VirtualBox的时候所有的网络连接方式都试过了,但虚拟机和虚拟机之间就是不能相互访问,Ping都Ping不通,我在想难道VirtualBox的网络设置有这么复杂吗,后来想到是不是Windows XP的防火墙的问题,关闭之,一切就正常了!
二、灵活应用(模拟出来一个一台主机,监控一个局域网上网情况的网络环境)
通过对以上几种网络模式的了解,我们就可以灵活运用,模拟组建出我们所想要的任何一种网络环境了。
其中有一台vhost1我设置为双网卡,一张为内网模式(192.168.56.100),一张为网桥模式 (192.168.1.101)。
两张网卡设置双网卡共享上网,虚拟机之间为局域网,其中有一台虚拟机vhost1通过与外网相连,所有局域网中的虚拟机又通过vhost1来实现上外网。
这样vhost1就可以监控整个虚拟机局域网上网情况了。
三、NAT 设置端口映射
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
'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
这种方式下,虚拟机的网卡 连接到宿主的 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地址会自动更新,不需要重新设置。