使 VirtualBox Debian 客户网站对外部机器和互联网可见

使 VirtualBox Debian 客户网站对外部机器和互联网可见

我运行一个 Ubuntu 主机和一个运行 Apache 的 VirtualBox Debian 客户虚拟机。我希望客户虚拟机尽可能地精简,因为我不需要与它进行太多交互(我希望如此)。

最终,我想在 VM 上运行几个网站,并设置一个单独的 VM 来使用 iRedMail 运行电子邮件服务器。

我已将客户机中的网络适配器设置为桥接模式。

我停用了客户虚拟机和主机上的防火墙(尽管在桥接模式下这应该不是必需的)。完成此操作后,我计划提高防火墙的级别,只打开端口 80 和 443。

我将 VM 设置为具有固定 IP,因此每次启动 VM 时都是相同的 IP。

虽然我认为这并不相关,但我已将我的华硕 RT-AC1900P 路由器配置为将端口 80 请求转发到虚拟机上的端口 80(路由器和网络上的其他机器可以看到它)。

当我尝试从 LAN 上的外部机器访问 VM 网站时,我使用 VM 的 IP 作为我的 URL,但稍后我打算使用域名访问它。

该网站对主机可见,但对 LAN(或互联网)上的其他机器不可见。

当我尝试从 LAN 上的计算机(不是主机)访问 VM 上的网站时,出现“连接已超时”的错误信息。奇怪的是,我可以 ping VM,而且它响应正常,但 Web 请求失败。

我已经为此工作了几个星期,但到现在我都陷入了困境。我找不到任何关于在虚拟机上运行面向公众的网站的信息。好像我是第一个这样做的人。

<************* 已编辑以增加清晰度 *******************>

我的旧服务器是我大约 15 年前拼凑起来的系统,运行 Debian 9,内存大约为 4GB。我不知道它运行的是什么处理器,它也没有参与这个实验。它有一个固定的 IP,直到最近不幸遇到 iRedMail 之前,它一直是我的网络服务器。现在它只是一个文件服务器。它在线路上。

我有一台 Windows 7 系统,它是我组装的低功率固态计算机,可用作家庭电视,并且也连接了网络。它有 8GB RAM 和赛扬处理器。同样,它所做的就是运行 Netflix 和播放来自网络文件服务器的多媒体(见上文)。

我们有几台政府发放的工作笔记本电脑,它们不与其他网络交互。一台通过有线方式,另一台通过 wifi 方式。

我们在卧室里有一个 Roku,在房子前面有一个连接路由器作为接入点。

有一个 4GB 的盒子运行着 Ubuntu。我不知道它是什么版本,但由于处理器是 32 位版本,Ubuntu 无法更新到非常旧的版本。它通过 wifi 连接,我只用它来研究我店里的项目。

我进行大部分 Web 服务器测试的机器是一台 Windows 10 笔记本电脑,配备 8GB RAM 和 Intel Core i5 处理器。我使用 Firefox 和 Chrome 进行测试。

主机盒是一台 Ubuntu 18.04.4 LTS 桌面,配备 12 GB RAM 和 Intel Core i5 处理器。它通过有线连接,并且与客户机一样具有固定 IP。

这些信息够用吗?我认为这些信息不会对通过端口 80 的通信产生影响,但无论如何还是要提供这些信息。提前致谢

答案1

我已将 ASUS RT-AC1900P 路由器配置为将端口 80 请求转发到 VM 上的端口 80(路由器和网络上的其他机器可以看到该端口)。

由于您正在以模式运行 VirtualBox 适配器Bridged,假设虚拟机的本地 IP 对您的物理路由器可见(您似乎表明它是可见的),将所需的流量通过适当的端口传递到该本地 IP 是(技术上)使虚拟机可供其他计算机(本地网络内部或外部)使用所需的全部操作。如果这不起作用,则可能存在其他问题。

我将 VM 设置为具有固定 IP,因此每次启动 VM 时都是相同的 IP。

作为一个简单的故障排除步骤,您可能需要尝试(至少暂时)禁用此功能。

我找不到任何关于在虚拟机上运行面向公众的网站的信息。

对于BridgedVirtualBox 中的适配器,可能没有标准网络文档未涵盖的步骤(即,它与在本地网络上使用任何其他物理机器基本上没有什么不同)。

如果你在 VirtualBox 中使用NAT适配器,那么唯一的“陷阱”就是你需要将流量转发到主机虚拟机,然后使用VirtualBox 中Port Forwarding适配器Advanced菜单下的设置将流量从主机正确转发到虚拟机(这在VirtualBox 虚拟网络官方文档)。

当我尝试从 LAN 上的机器(不是主机)访问 VM 上的网站时,出现“连接已超时”的错误。

造成这种情况的原因可能有很多,但为了测试,你可能希望为你的虚拟机尝试另一个(简单的)发行版,而不是像 Debian 这样的发行版。我的建议可能是尝试该死的小型Linux(可以从镜像列表中下载这里)。它比较旧,但它配备了一个 Web 服务器,不需要额外的配置即可进行测试(除了启动它)。

如果你决定采用这种方式,在 VirtualBox 中启动 Damn Small Linux 的实时版本后,可以通过右键单击 Damn Small Linux VM 的桌面并选择系统 → 守护进程 → Monkey Web 服务器 -> monkey start

例如 Monkey Web Server (Damn Small Linux)

Monkey Web Server - 该死的小型 Linux - 屏幕截图

相关内容