如何从 nat virtualbox guest 检索主机 IP?

如何从 nat virtualbox guest 检索主机 IP?

我有一台 Windows 7 主机,它使用 nat 处理 VirtualBox Debian 客户机。此客户机正在运行一些可通过端口重定向从外部访问的 Web 服务。

我需要通过 url 提供对这些服务的外部访问,但我不能依赖正确的 dns 解析,因此我必须将主机 IP 传播到来宾环境。我怎样才能在对主机影响最小的情况下做到这一点?

一些澄清: “外部”、“外部访问”是指与主机处于同一级别的网络浏览器,即。他们不能只依赖主机地址。

一图胜千言:

+--------------+  External                         
| Windows Host |  network   +---------------------+
| +----+       |            |      Web client     |
| |    |      NAT           |  +----------------+ |
| |    ------------------------> Page generated | |
| |    |       |            |  |by VM with URLs | |
| | VM |       |            |  |to host         | |
| |    |       |            |  +--------|-------+ |
| |    |      FWD           |           |         |
| |    <--------------------------------+         |
| |    |       |            +---------------------+
| +----+       |                                   
+--------------+

答案1

实现这一目标的一种方法是像这样的网站背后的技巧Whatsmyip.com。您所需要的只是网络中的一个 Web 服务器,它将接收请求的 IP 地址发送回客户端。

请记住,由于您使用的是 NAT,因此服务器会将 NAT 路由器的地址(在本例中为虚拟机主机)视为原始地址。

whatsmyip.php要实现此目的,您可以在 Web 服务器的 Web 根目录中创建一个 php 脚本(即),例如

//whatsmyip.php
<?php 
//Gets the IP address
$ip = getenv("REMOTE_ADDR") ; 
Echo "$ip; 
?> 

并从您的客人处访问它,例如http://webserver/whatsmyip.php

(来源:Thoughtco.com

现在您只需要在您的服务中评估该答案

答案2

考虑到guntbert的回答,这涉及到:

  • 使用“外部”网络中的第三方 Web 服务器来托管远程地址响应程序,如给定答案中所述。
  • 在VM初始化阶段(和/或根据网络上下文定期),浏览它以获取Windows主机的外部地址
  • 在构建页面时使用检索到的地址伪造 URL。

相关内容