如何從 nat virtualbox guest 檢索主機 IP?

如何從 nat virtualbox guest 檢索主機 IP?

我有一台 Windows 7 主機,使用 nat 處理 VirtualBox debian guest 虛擬機器。該來賓正在運行一些可透過連接埠重新導向從外部存取的 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。

相關內容