我有一台 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。