概述
VirtualBox使用主机系统上的一个设备驱动器(用于过滤物理网络适配器的数据,因此也被称为网络过滤驱动器“net filter” driver),来截取(Intercept Data)或注入数据(Inject Data)到物理网络,从而有效地创建一个软件网络接口(Network Interface In Software)。在主机系统看来使用此网络接口的虚拟机就如同使用网络电缆物理连接到此接口:主机可以通过此接口发送或接收来自虚拟机的数据。因此你可以在虚拟机和其余网络之间设置路由或桥接。
配置(仅界面设置)
- 打开VirtualBox,选择一个要进行桥接网络设置的虚拟机,点击”设置(S)” -> 点击”网络” -> 选择一个网卡 -> 启用网络连接(E) -> 在连接方式(A)中选择”桥接网卡”
- 在界面名称(N)中选择要桥接的物理网络接口,这些接口可以在设备管理器中进行查看。
桥接到无线网络接口与桥接到有线网络接口的网络相比
- 前者一般不支持混杂模式(Promiscuous Mode)。
-
所有的网络数据必须使用主机无线适配器的MAC地址,因此:
- VirtualBox会将虚拟机发送的网络数据包中的源MAC地址替换为主机的MAC地址,从而保证其响应数据包能够发回到相应主机接口。
- 对于VirtualBox接收到且目的IP地址为其下虚拟机IP地址的网络数据包,会将此网络数据包中的目的MAC地址替换为相应虚拟机的MAC地址,最后将此数据包发送到此虚拟机。
VirtualBox会检查ARP和DHCP报文从而获得虚拟机的IP地址。
不同操作系统下桥接网络的缺点
- Macintosh主机中空口(也即Mac的无线网络)的桥接网络仅支持IPv4和IPv6,而像IPX等的网络协议只能在有线接口的桥接网络中得到支持。
-
Linux主机中无线接口上的桥接网络仅支持IPv4和IPv6协议,而像IPX等的网络协议只能在有线接口的桥接网络中得到支持。
- 对于安装在Marvell Yukon II EC Ultra Ethernet NIC之上的sky2驱动器提供的有线接口而言,如果MTU的设置值小于1500 bytes则会在一定条件下造成报文丢失。
- 由于一些适配器会在硬件中剥离VLAN标记,因此内核版本小于2.6.27的Linux系统并不允许在虚拟机和外部网络之间使用VLAN中继(VLAN Tranking)。
Solaris主机并不支持无线接口上的桥接网络。由于Solaris网络子系统的技术限制(这些问题会在Solaris 11版本得到解决),也不能完全支持基于IPFilter的虚拟机网络数据过滤功能。