>

VirtualBox 中的 Guest OS 想要上网,可以通过 VirtualBox 提供的 NAT,NAT network 和 Bridge 三种方式来实现。


### (1) NAT 模式 ---

NAT 是通过 VirtualBox 内置的 NAT Engine 把 Guest OS 中的网络请求转发给 Host OS 的 DNS 服务器来实现上网, 外网返回回来的网络数据会通过 NAT Engine 发送给 Guest OS。
NAT engine 会为 Guest OS 分配一个 ip 地址, VirtualBox 中默认的 NAT engine 会使用 10.0.2.0 作为第一个 NAT 网卡的网关,在这个网段内分配 ip 地址。
NAT 模式的缺点是: 主机不可访问虚拟机,因为不在同一个网段内(只能通过端口转发的方式来访问)。虚拟机可以访问主机,因为请求被 NAT 转发了。


### (2) NAT network 模式 ---

NAT network 原理跟 NAT 相同, 区别在于 NAT 模式下, 各个 Guest OS 之间互相不可见, 不可访问,因为在不同网段。而 NAT network 模式下, 各个 Guest OS 之间可见,在同一个网段内。


### (3) Bridge 模式 ---

Bridge 会虚拟一块 Physical 网卡(Interface), 然后所有流过 Host OS 的网络数据也会同时流向 Guest OS。
Bridge 模式下, 主机与虚拟机相互可见, 因为在同一网段内。
Bridge 的缺点是: 由于需要为 Guest OS 设置一个静态 IP, 如果网段内的这个 IP 已经被其他主机使用了, 那么会造成 ip 地址冲突从而不能上网。
另外, 如果是在公司的网络中,由于安全的缘故,通常网络管理员会绑定 ip 和 MAC,所以除了公司设备之外,其他机器由于 MAC 不在公司的列表中,无法绑定 Ip,从而也不能上网。这时候只能采用 NAT 模式。

假设在 NAT 模式下,Guest 主机想要上网,只需要在 VirtualBox 中设置相应的模式即可,如下图:



###### Reference https://www.virtualbox.org/manual/ch06.html