VirtualBox 是什么
VirtualBox 是一款 x86 虚拟机软件。原由德国innotek公司开发,2008年Sun收购了Innotek,而Sun于2010年被Oracle收购,2010年1月21日改 名成 Oracle VM VirtualBox。VirtualBox 可在 Linux 和 Windows 主机中运行,并支持在其中安装 Windows (NT 4.0、2000、XP、Server 2003、Vista)、DOS/Windows 3.x、Linux (2.4 和 2.6)、OpenBSD 等系列的客户操作系统。
VirtualBox是开源软件,使用双重许可协议,个人和评估使用可以在virtualbox.org免费下载使用而无需支付费用,商用则需付费。
VirtualBox 网络设置
VirtualBox 有4种网络模式,下面将逐一讲解。
NAT模式〈网络地址转换模式〉
NAT模式是最简单的实现虚拟机上网的方式,可以这样理解:Vhost访问网络的所有数据都是由主机提供的,vhost并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Vhost的存在。
-
虚拟机与主机关系: 只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。
-
虚拟机与网络中其他主机的关系: 只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。
-
虚拟机与虚拟机之间的关系: 相互不能访问,虚拟机与虚拟机各自完全独立,相互间无法通过网络访问彼此。
虚拟主机网络参数默认从 VirtualBox 的虚拟 DHCP Ser 获取:
IP地址 | 子网掩码 | 网关 | DNS |
---|---|---|---|
10.0.2.15 | 255.255.255.0 | 10.0.2.2 | 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,可以手动参考这个进行修改。
VirtualBox 端口转发
前面讲了宿主机和宿主机网络中的任何主机都不能直接访问虚拟主机,但是VirtualBox 提供了端口转发,使得我们可以设置特定的端口供实体网络访问。
设置发送到宿主机的某些端口转发到虚拟主机,宿主机IP地址干脆就127.0.0.1。
NAT方案优缺点
笔记本已插网线时: 虚拟机可以访问主机,虚拟机可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。
笔记本没插网线时: 主机的“本地连接”有红叉时,虚拟机可以访问主机,虚拟机不可以访问互联网,在做了端口映射后,主机可以访问虚拟机上的服务(如数据库)。
Bridged Adapter〈桥接模式〉
需要加载模块vboxnetflt,可以理解为虚拟机通过 VirtualBox 桥接到宿主机的一个网卡中,就像真实存在于宿主机网络中的一台主机一样。它使得虚拟机能被分配到一个网络中独立的IP,因此,虚拟机能与宿主机和宿主机网络中的主机完美互通。被桥接的网卡会开启混杂模式。
- 虚拟机与主机关系: 可以相互访问,因为虚拟机在真实网络段中有独立IP,主机与虚拟机处于同一网络段中,彼此可以通过各自IP相互访问。
- 虚拟机于网络中其他主机关系: 可以相互访问,同样因为虚拟机在真实网络段中有独立IP,虚拟机与所有网络其他主机处于同一网络段中,彼此可以通过各自IP相互访问。
- 虚拟机于虚拟机关系: 可以相互访问,原因同上。
虚拟主机网络参数 : 手动配置成桥接的宿主机网卡的同一网段,或通过宿主机网络中的 DHCP Ser 获取。
桥接方案优缺点
笔记本没插网线时:主机与虚拟机不能通信。主机的“本地连接”有红叉,就不能手工指定IP。虚拟机也不能通过DHCP得到IP地址,手工指定IP后,也无法与主机通信,因为主机无IP。
这时主机的VirtualBox Host-Only Network 网卡是有ip的,192.168.56.1。虚拟机就算手工指定了IP 192.168.56.*,也ping不通主机。
同时如果宿主机在一个受限制的网络,虚拟机是不能访问互联网的,如:宿主机使用ADSL、使用使用代理或VPN、宿主机网关做了MAC地址限制。
Host-only Adapter〈宿主机模式〉
可以理解为VirtualBox 在宿主机中虚拟了一个 host-only 网卡,然后把虚拟主机桥接到 host-only 网卡上,我们可以通过设置 host-only 网卡(共享、桥接)来实现网络连接及其他很多功能。
虚拟主机网络参数 :默认IP段为192.168.56.X/24
-
虚拟机与主机关系 默认不能相互访问,双方不属于同一IP段,host-only网卡默认IP段为192.168.56.X 子网掩码为255.255.255.0,后面的虚拟机被分配到的也都是这个网段。通过网卡共享、网卡桥接等,可以实现虚拟机于主机相互访问。
-
虚拟机与网络主机关系 默认不能相互访问,原因同上,通过设置,可以实现相互访问。
-
虚拟机与虚拟机关系 默认可以相互访问,都是同处于一个网段。
Internal〈内部模式〉
内网模式,顾名思义就是内部网络模式,虚拟机与外网完全断开,只实现虚拟机于虚拟机之间的内部网络模式。
-
虚拟机与主机关系: 不能相互访问,彼此不属于同一个网络,无法相互访问。
-
虚拟机与网络中其他主机关系: 不能相互访问,理由同上。
-
虚拟机与虚拟机关系: 可以相互访问,前提是在设置网络时,两台虚拟机设置同一网络名称。
IP: VirtualBox的DHCP服务器会为它分配IP ,一般得到的是192.168.56.101,因为是从101起分的,也可手工指定192.168.56.X 笔记本已插网线时:虚拟机可以与主机的VirtualBox Host-Only Network 网卡通信,这种方案不受主机本地连接(网卡)是否有红叉的影响。
VirtualBox 其它问题
虽然 VirtualBox 桥接模式非常好用,但是受限制的网络怎么办呢?用NAT模式,不!这样宿主机访问虚拟主机太麻烦了。我的方法就是给虚拟主机添加两个网卡,一个网卡使用 NAT模式,另一个网卡使用Bridged Adapter模式,然后给虚拟主机设置静态路由,设置访问宿主机的数据从Bridged Adapter模式的网卡送出,而访问互联网的数据从NAT模式的网卡送去。