VirtualBox 网络设置

虚拟机(guest OS)和宿主机(host OS)之间,存在多种网络访问关系:

  1. guest 与 host 互访
  2. guest 与 guest 的互访

VirtualBox 也提供多种了多种连接方式:

  1. Not attached, 未指定
  2. NAT, 网络地址转换(NAT)
  3. NAT Network, NAT 网络
  4. Bridged Adapter, 桥接网卡
  5. Internal Network, 内部网络
  6. Host-ony Adapter, 仅主机(Host-Only)适配器
  7. Generic Driver, 通用驱动

这其中网络的图解,参 VirtualBox 网络图解。VirtualBox 对虚拟机的默认网络设置是 NAT,安装好虚拟机后,进入 guest OS, 可以访问互联网,也可以访问到 host OS, 但无法从 host 访问到 guest,而且,guest 之间也不能互访。「NAT 网络」和「Host-Only」的两种情况,可能需要手动添加(「管理」-「全局设定」-「网络」)虚拟网卡才能用。下面通过各种方式实现上面的访问关系:

guest 访问 host

NAT 方式下 guest 访问 host

NAT 是 VirtualBox 对虚拟机默认网络连接方式,也默认支持 guest 访问 host. 留意下图,可以通过 default gateway 的地址(这里是10.0.2.2)去访问 host OS.

guest os visits host os via nat

Host-Only 方式下 guest 访问 host

Host-Only is host only, so 此路不通……

桥接方式下 guest 访问 host

参本页的【桥接访问】部分

host 访问 guest

NAT 方式下 host 访问 guest

注:在默认情况下,使用 NAT 方式时,host 是不能访问 guest OS 的服务的,但可以通过端口转发的方式来完成。

用了很长时间的 VirtualBox 都没考虑过这个问题,因为用不到。但2012.03.18有这个需求了:Host OS is Windows XP,guest OS is Ubuntu server. Apache2, which is installed on the guest OS, is expected to be accessed from the host OS. 查设置,网上搜了一堆,都说要执行三条命令,烦。尝试一下 VirtualBox 中的已有选项,如图填写就行了。

(按箭头顺序设置即可,注意设置时,guest OS 应处于关闭状态。Host IP 和 Guest IP 其实无需手工填写。)

注:在此模式下,虚拟机中无法正常使用 VPN。而对 VMware,NAT 模式下虚拟机中也可以用 VPN 的。

Host-Only 方式下 host 访问 guest

Host-Only is host only! 只能通过 host 访问 guest,而无法通过 guest 访问 host,也不能通过 guest 访问互联网。设置后,在 guest OS 中查 IP 信息:

host os visits guest os via host-only

在 host OS ping guest OS 信息:

host os visits guest os via host-only

如此,就可以在 host OS 中用192.168.56.101访问 guest OS 了。

桥接方式下 host 访问 guest

参本页的【桥接访问】部分

桥接访问

桥接访问,可以完全解决本页提到的所有的访问需求。Host OS 和 guest OS 处于网络中的同等位置,彼此互访完全没问题:host <-> guest, guest <-> guest 都是可以的。以下是设置桥接方式后的实验记录:

查询 host OS 的 IP: 192.168.2.103

host IP

查询 guest OS 的 IP: 192.168.2.101

guest IP

通过 host OS 访问 guest OS:

host OS visits guest OS

通过 guest OS 访问 host OS:

guest OS visits host OS

一点心得

不同的网络连接方式,各有所用,Host-Only 方式可以把虚拟机封闭在 host OS 中,专供 host OS 调用,可以运行一些不便安装在 host OS 的服务。用 NAT 默认方式,可以通过 guest OS 方便尝试使用 host OS 能访问的网络资源,是做实验机的好方式。而用桥接方式,host OS 和 guest OS 在逻辑上完全对等,比较适合做局域网环境的实验。