2.5 VirtualBox虚拟机网络设置
VirtualBox提供了7种网络接入模式,最常用的网络模式有以下4种。
1.网络地址转换(Network Address Translation,NAT)模式
如果你想使用虚拟机浏览网站、下载文件和查看邮件,这个模式最适合。NAT模式是实现虚拟机上网的最简单的方式。
2.桥接模式
VirtualBox连接你的真实网卡并和真实网卡直接交换数据,这是高级网络需求,例如在虚拟机中直接对外提供服务。相当于一个网卡有两个MAC地址。
3.内部网络模式
这个模式通常用于创建不同的软件虚拟网络,这些网络可以为不同的虚拟机所使用。但这些网络不能被宿主机或外部网络所应用。
4.仅主机网络模式(Host-Only)
这个模式应用于创建包含主机和一组虚拟机之间的网络,不需要主机的物理网卡,而是创建一个虚拟网卡以提供虚拟机和宿主机之间的网络互联。
2.5.1 网络地址转换模式
如果你想使用虚拟机浏览网站、下载文件和查看邮件,这个模式最适合。NAT模式是实现虚拟机上网的最简单的方式,不需要经过特别配置。虚拟机不占用局域网的IP地址,仅分配到连接宿主机的内部地址,如果需要上网就要经过地址转换到宿主机再去访问网络。你可以这样理解:虚拟机就相当于是家庭网络内部的一台计算机,主机就是家庭网络外部的计算机,VirtualBox就是运行中的路由器,虚拟机访问网络的所有数据都通过路由器,家庭网络内的计算机不真实存在于网络中,宿主机与网络中的任何机器都不能查看和访问到虚拟机。这种分割也最大程度地保证了虚拟机的安全。
虚拟机默认可以通过网卡访问到宿主机和网络。网络地址转换模式的最大劣势在于,虚拟机在外部网络不可访问,除非你设置端口转发规则。宿主机无法通过网络访问到虚拟机,是因为虚拟机的IP地址是私有地址,宿主机不会路由到虚拟机中。通过设置端口转发规则,宿主机就可以访问到虚拟机中的服务,例如,宿主机需要访问虚拟机中的HTTP服务,设置为80端口转发,如图2-7所示,就可以将访问宿主机127.0.0.1的请求转发到虚拟机中的80端口上。
实际上虚拟机分配到的IP地址通常为10.0.2.15,网关地址为10.0.2.2。虚拟机将设置一个默认路由指向下一跳地址为网关地址。NAT方案的特点是,默认情况下,虚拟机即获取到IP地址,可以通过这个IP地址访问宿主机和网络。宿主机经过设置之后也可以访问虚拟机上的服务。
NAT使用受到一些限制,主要有以下3个限制。
(1)ICMP协议限制。一些经常使用的网络调试工具(如ping和traceroute等)使用ICMP发送和接收消息。ICMP支持在VirtualBox已经增加,但其他工具可能不支持。
(2)接收UDP广播不可用。虚拟机为了节省资源不接收广播。
(3)协议例如GRE不支持。TCP及UDP以外的协议不支持。这意味着一些VPN产品(例如微软的PPTP)不能使用。仅使用TCP及UDP的VPN产品可以使用。这个限制不影响标准网络的使用。
2.5.2 桥接网络模式
桥接网络就相当于两个网卡组织为两个交换机接口,虚拟机和宿主机同时接在一个交换机的两个网口上。它就是通过主机网卡,架设了一条桥,直接连入到网络中。因此,它使得虚拟机能被分配到一个网络中独立的IP地址,所有网络功能完全和在网络中的真实机器一样。宿主机通过网卡发送数据给虚拟机,接收数据也通过这个网卡。这意味着你可以设置虚拟机和网络之间的路由或桥接。
通过图形用户接口“设置→网络”,设置“启动网络连接”,从“连接方式”下拉框中选择“桥接网卡”,然后选择自己系统的网卡即可。注意不要选择无线网卡,因为大多数无线网卡无法设置为混杂模式。
该模式存在以下缺点:需要接入网络并分到网络中的IP地址才能相互访问;如果网络中对IP及MAC地址接入有限制,则无法分配到IP地址,不能工作。
2.5.3 内部网络模式
内部网络模式在和外部通信方面和桥接网络模式相似,不过这个外部仅限于同一个主机上连接同一个内部网络的其他虚拟机。虚拟机与宿主机和外网完全断开,只实现虚拟机与虚拟机之间的网络连接模式。
在技术上内部网络模式所能完成的工作,桥接网络也可以完成,但内部网络有安全优势。在桥接网络模式中,所有流量均通过宿主机的物理接口,通过包探测器可以记录所有的网络流量。因此如果你想让自己的数据保密,就不能使用桥接模式。
内部网络在设置时会自动创建,没有也不需要中心配置。每一个内部网络根据名称来区分。一旦有一个以上的活动虚拟网卡具有相同的内部网络ID,VirtualBox支持驱动程序会自动将它们接到同一个网络交换机上。VirtualBox支持驱动程序实现了一个完整的以太网交换机,包含支持广播/组播帧和混杂模式等。通过以下方式进行设置:通过图形用户接口“设置→网络”设置“启动网络连接”,从“连接方式”下拉框中选择“内部网络”。
2.5.4 仅主机网络模式
仅主机(Host-Only)网络模式被认为是桥接网络和内部网络模式的混合体:与桥接网络相似,虚拟机和宿主机可以互相通信,宿主机和它们通过一个物理以太网交换机连接。同样,作为内部网络,不需要存在一个物理网卡;虚拟机无法跟外面世界通信,因为它们没有连接到一个物理网络接口上。
使用这个模式,VirtualBox将在宿主机上创建一个新的软件接口。就像一个本地回环接口一样,VirtualBox在主机中模拟出一张专供虚拟机使用的网桥,所有虚拟机都是连接到该网桥上的。当实体机运行多个虚拟应用程序时,例如一个虚拟机运行Web服务,另外一个运行数据库,两个虚拟机就可以通过仅主机适配器网络相互进行通信,Web服务器再通过网桥对外提供服务,数据库服务器不能被外部访问,数据不会泄露到外部。通过以下方式进行设置:通过图形用户接口“设置→网络”设置“启动网络连接”,从“连接方式”下拉框中选择“仅主机Host-only适配器”。
虚拟机默认分到的IP为192.168.56.101,主机的IP地址为192.168.56.1,两者可以通过IP相互访问。其他虚拟机默认都分到192.168.56.X的IP地址,虚拟机之间通过IP可以相互访问。和主机本身的网卡是否启用没有关系。
2.5.5 网络模式比较
每一种网络模式均有自己的使用场景,对VirtualBox的4种网络设置的比较如表2-6所示。
2.5.6 组建路由器实验环境
如图2-8所示,将虚拟机1当作智能路由器,安装OpenWrt软件,并创建两个网卡,NAT网卡用于连接互联网,内部网络用于连接家庭网个人计算机。虚拟机2当作家庭PC使用,自动从OpenWrt网关处分配IP地址。这样我们就可以模拟常见的路由器场景,例如上网、防火墙和DNS代理等功能,任何家庭网的数据流量均通过路由器来转发到外部网络。