本篇文章以网络模式最多的 VirtualBox 作为示范。

NAT

Virtual 的默认网络模式。该模式中会有一台虚拟的 DHCP 服务器,DHCP 服务器和网关在这里默认是 10.0.2.2。由于使用了 NAT,虚拟机被分配私有地址,比如 10.0.2.15。

每创建一台使用 NAT 模式的虚拟机,它们都会有同样的私有地址,每台虚拟机也都有自己独立的 DHCP 服务器和网关。这是因为它们都在独立的网络中,这也说明这些独立的虚拟机之间是无法相互访问的。

该模式下虚拟机是可以正常上网的。这是因为虚拟机的数据发出经过网关,软件会对数据包进行改写,使得这个数据包看起来像是在宿主机环境中生成的。

NAT 网络

在某些软件中,NAT 模式指的就是这里的 NAT 网络。

与 NAT 模式不同之处在于虚拟机之间可以互通。这里相当于虚拟机所在的网络中有一个虚拟交换机与其连接,并且虚拟交换机又连接了网关和 DHCP 服务器。网关地址变为 10.0.2.1,DHCP 服务器地址变为 10.0.2.3。

桥接

桥接网络是指本地物理网卡和虚拟网卡通过 VMnet0 虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段。虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段。所以当我们要在局域网使用虚拟机,对局域网其他 pc 提供服务时,例如提供 ftp, ssh, http 等服务,那么就要选择桥接模式。

例如大学宿舍里有一个路由器,宿舍里四个人连接这个路由器,路由器的 lanip 默认是 192.168.1.1,子网掩码是 255.255.255.0。而其他四个人是自动获取 ip,假设四个人的 ip 是:

1
A:192.168.1.100/255.255.255.0,  B:192.168.1.101/255.255.255.0,  C:192.168.1.102/255.255.255.0,  D:192.168.1.103/255.255.255.0

那么虚拟机的ip可以设置的ip地址是 192.168.1.2~192.168.1.99, 192.168.1.104~192.168.1.254(网络地址全 0 和全 1 的除外,再除去 ABCD 四个人的 ip 地址)

内部网络

虚拟机之间可以互通,但是虚拟机不能访问宿主机,更不能访问网络。而且 VirtualBox 在该模式下不提供 DHCP 服务,即需要手动设置静态 IP 地址。

仅主机

和内部网络模式有点类似,虚拟机之间可以互通,但是虚拟机依然无法访问网络。不内部网络不同之处在于有 DHCP 分配地址,并且可以访问虚拟网卡的地址。

虚拟机没有设置网关,无法访问宿主机所在的局域网的私有地址。但是宿主机是可以访问虚拟机的。宿主以外的地址都不能访问与被访问。

总结:

虚拟机↔虚拟机 虚拟机→宿主 宿主→虚拟机 虚拟机→互联网 互联网→虚拟机
网络地址转换 NAT ✔️ ✔️
NAT网络 ✔️ ✔️ ✔️
桥接网卡 Bridged Adapter ✔️ ✔️ ✔️ ✔️ ✔️
内部网络 Internal Network ✔️
仅主机(Host-Only) 网络 ✔️ ✔️ (官方说可以) ✔️