![使用 Virtualbox 客户操作系统访问在主机上运行的服务器](https://linux22.com/image/605479/%E4%BD%BF%E7%94%A8%20Virtualbox%20%E5%AE%A2%E6%88%B7%E6%93%8D%E4%BD%9C%E7%B3%BB%E7%BB%9F%E8%AE%BF%E9%97%AE%E5%9C%A8%E4%B8%BB%E6%9C%BA%E4%B8%8A%E8%BF%90%E8%A1%8C%E7%9A%84%E6%9C%8D%E5%8A%A1%E5%99%A8.png)
我在 Mac 上本地运行 Web 服务器。我使用 Virtualbox 运行各种 Windows 客户操作系统,这要归功于http://www.modern.ie/virtualization-tools我的主机上的服务器在多站点设置中运行 WordPress,并且需要请求中的主机名才能提供正确的站点。IP 地址 URL 不起作用。
Virtualbox 网络适配器处于 NAT 模式,我找到了主机的 IP 地址。我可以通过编辑 Windows 客户机操作系统中的 hosts 文件来使一切正常工作。条目如下所示:
10.1.2.3 服务器.dev
然后,在 Windows 中,如果我浏览到 server.dev,一切都会正常运行。
所以我的问题是......我可以设置它,这样每次主机的 IP 地址更改时,我就不需要编辑客户操作系统的 hosts 文件吗?类似于反向端口转发,这样我就可以像这样设置 hosts 文件条目...
10.1.99.99 服务器.dev
并且 Virtualbox 会监听对 10.1.99.99 的请求并将其更改为 127.0.0.1?
答案1
事实证明这非常简单。我只需要编辑 Windows hosts 文件指向
10.0.2.2 服务器.dev
关于 10.0.2.2 是 NAT 连接的默认网关有什么问题吗?我从这个答案中找到了解决方案 ->https://superuser.com/questions/144453/virtualbox-guest-os-accessing-local-server-on-host-os
答案2
您的解决方案有效,但我对此感到相当惊讶,如果您碰巧在网络中的某个地方使用 10.0.2/24,这似乎会引起问题。另一种方法是将 VirtualBox 客户端的网络模式更改为桥接,随机化它们的 MAC 地址(如果它们还不是唯一的),并让它们在网络上拥有自己的 IP。此时,它们可能存在于您的机器上,但它们的行为就像隔壁办公室其他人的 PC 一样,因此它们提供了更真实的测试设置。
答案3
最有效的方法是建立一个 DNS 服务器,监听并提供 VirtualBox 网络上的 DNS 信息(我建议通过 Homebrew 使用 dnsmasq)。这最终取决于您对 DNS 的熟练程度,或者您愿意花多少时间来弄清楚它。如果您有兴趣,我很乐意详细说明。