如何從訪客瀏覽器存取 virtualbox 的主機本機主機

如何從訪客瀏覽器存取 virtualbox 的主機本機主機

現在是 2019 年,我在 VirtualBox 中執行 Win 10。我想基本上將 localhost 重定向到 10.0.2.2 (這是主機的 IP)

10.0.2.2 localhost 

這似乎不起作用,有些人報告說 Window 10 故意禁用了本地主機的查找。不知道他們為什麼要這麼做。

但我正在嘗試找到一種解決方法來解決此問題,以便我可以存取我的主機本地主機 URL。

答案1

現在,機器上和機器外的服務要求應用程式在本機上運行。所以我無法在10.0.2.2上運行它

設定 TCP 或 HTTP 代理/轉送器來偵聽虛擬機器localhost並將實際連線轉送至正確的目標。

對於 HTTP,反向代理(例如 Nginx 或 Apache)是最簡單的方法。您實際上只需要一個帶有ProxyPass / http://10.0.2.2/.對於其他協議,Nginx 和 HAproxy 也支援流轉送。

您也可以使用任何其他 TCP 轉發器,例如 SSH-L-R轉發(取決於主機或來賓是否有 SSH 伺服器),甚至是 Windows 的內建netsh int portproxy.

例如,要在 Windows 用戶端上轉送連接埠 443:

netsh interface portproxy add listenaddress=127.0.0.1 listenport=443 connectaddress=10.0.2.2 connectport=443

或者,如果來賓安裝了 PuTTY 且主機具有 SSH 伺服器:

plink -v -N -L 443:localhost:443 [email protected]

有些人報告說 Window 10 故意禁用了本地主機的查找。不知道他們為什麼要這麼做

Windows 這樣做的主要原因有二:

  1. 這個名字localhost是“眾所周知的”,也就是說,它解析為環回地址被廣泛接受——它不僅僅是恰巧解析為 127.0.0.1 或 ::1,它是為了解析為 127.0.0.1 或 ::1,這樣做已經有幾十年的歷史了。因此,作業系統內建這樣的規則是完全自然的。

    事實上,即使你找到繞過 Windows 的方法,你也會發現很多網路瀏覽器也有這樣的內建規則,無論作業系統做什麼。 (例如,這裡是Chromium 的原始碼顯示它有一個「localhost」的硬編碼映射,甚至不會費心詢問作業系統。標準草案這將在解析器層級強制執行。

  2. Web 瀏覽器通常被視為localhost安全來源——它們可能提供http://localhost比其他http://URL 更多的 API。這當然意味著允許 localhost 解析為 127.0.0.1/::1 以外的任何位址都會有安全風險。

相關內容