![对于带有 Web 服务器的单个演示虚拟机应选择哪种 VirtualBox 网络方案](https://linux22.com/image/1537940/%E5%AF%B9%E4%BA%8E%E5%B8%A6%E6%9C%89%20Web%20%E6%9C%8D%E5%8A%A1%E5%99%A8%E7%9A%84%E5%8D%95%E4%B8%AA%E6%BC%94%E7%A4%BA%E8%99%9A%E6%8B%9F%E6%9C%BA%E5%BA%94%E9%80%89%E6%8B%A9%E5%93%AA%E7%A7%8D%20VirtualBox%20%E7%BD%91%E7%BB%9C%E6%96%B9%E6%A1%88.png)
我必须为 Web 应用程序设置一个演示系统,其要求如下:在 Windows 设备(笔记本电脑)上,使用 VirtualBox 5.0.40 设置虚拟 Ubuntu(16.04)系统。此客户系统包含一个 Web 服务器,该服务器应可从主机 Windows 笔记本电脑以及同一网络中数量非常有限(一两个)的其他设备/客户端访问。主机系统上没有运行其他虚拟机。
据我所知,有两种不同的方法:
- 使用带端口转发的 NAT。来自其他设备的传入 HTTP 请求将使用主机的 IP 地址,并由客户系统内的 Web 服务器提供服务。
- 使用桥接网络方法,其中客户系统将在工作中获得自己的 IP(然后其他设备将使用该 IP)。
我发现了一篇非常有趣的博客文章,它似乎支持第一个解决方案:Oracle VM VirtualBox:网络选项及其管理方法但是,他们似乎没有考虑尝试连接到访客的其他设备/客户端。
我主要关心的是可靠性和稳定性,性能是第二要务,安装简便性可能是第三要务。那么,您更喜欢哪种方法?
答案1
您提供的链接提供了一些关于何时使用其中一个的提示:“NAT 网络特性:当访客作为客户端时很好,对于作为服务器的访客来说并不好”和“桥接网络特性:适合客户端或服务器访客”。它没有解释原因,但有几个原因:
- 据我所知,桥接的唯一两个缺点是 1)它需要额外的配置,2)它将整个客户端暴露给网络,因此您应该在“内部”对客户端进行防火墙保护(而 NAT 只会暴露您明确转发的端口)。
- 另一方面,桥接允许您公开与主机冲突的端口(例如,如果您已经在主机上有一个 Web 服务器,则无法将端口 80/443 转发给客户机),并且至少在理论上应该稍微快一些,因为不涉及 NAT 步骤;或者至少,如果 VirtualBox 的 NAT 模块存在问题,它可以避免这些问题。
我对一次性或纯客户端使用 NAT,对长期存在的客户机使用桥接模式,以便公开服务。但我认为,对于小流量场景,两种模式都可以。是否要配置桥接(以及处理为客户机获取 IP 地址的问题)由您决定。
答案2
假设有空闲地址可以分配给桥接虚拟机,我更喜欢桥接,一方面正如文章所说
但是,另一台计算机如何启动与 Guest 的连接?例如,连接到 Guest 中运行的 Web 服务器。使用 NAT 模式通常无法实现这一点,因为没有进入 Guest OS 的路由。也就是说,VBox 设置了从 VM 到真实网络的 NAT - 但您必须设置从外部网络到 VM 的转换。这不值得,但对于您的回答,我认为无论哪种方式都不会影响可靠性、稳定性或性能。