現在是 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 這樣做的主要原因有二:
這個名字
localhost
是“眾所周知的”,也就是說,它解析為環回地址被廣泛接受——它不僅僅是恰巧解析為 127.0.0.1 或 ::1,它是為了解析為 127.0.0.1 或 ::1,這樣做已經有幾十年的歷史了。因此,作業系統內建這樣的規則是完全自然的。事實上,即使你找到繞過 Windows 的方法,你也會發現很多網路瀏覽器也有這樣的內建規則,無論作業系統做什麼。 (例如,這裡是Chromium 的原始碼顯示它有一個「localhost」的硬編碼映射,甚至不會費心詢問作業系統。標準草案這將在解析器層級強制執行。
Web 瀏覽器通常被視為
localhost
安全來源——它們可能提供http://localhost
比其他http://
URL 更多的 API。這當然意味著允許 localhost 解析為 127.0.0.1/::1 以外的任何位址都會有安全風險。