现在是 2019 年,我在 VirtualBox 中运行 Win 10。我想将 localhost 重定向到 10.0.2.2(这是主机的 IP)
10.0.2.2 localhost
这似乎不起作用,有人报告说 Windows 10 故意禁用查找本地主机。不确定他们为什么要这样做。
但我正在尝试找到一种可以解决此问题的方法,以便我可以访问我的主机 localhost URL。
答案1
现在机器上的服务和机器外的服务都要求应用程序在本地主机上运行。所以我无法在 10.0.2.2 上运行它
配置一个 TCP 或 HTTP 代理/转发器,用于监听虚拟机localhost
并将实际连接转发到正确的目的地。
对于 HTTP,Nginx 或 Apache 等反向代理是最简单的方法。您实际上只需要一个带有 的 VirtualHost 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]
有人报告说,Windows 10 故意禁用查找本地主机。不知道他们为什么要这样做
Windows 这样做通常有两个主要原因:
这个名字
localhost
是“众所周知的”,也就是说,它被广泛接受为环回地址——它不仅仅是恰巧解析为 127.0.0.1 或 ::1,它是为了解析为 127.0.0.1 或 ::1,并且已经有几十年的历史这样做了。因此,操作系统内置这样的规则是完全自然的。事实上,即使你找到了绕过 Windows 的方法,你也会发现很多网络浏览器也内置了这样的规则,无论操作系统做什么。(例如,这是Chromium 的源代码表明它具有“localhost”的硬编码映射,甚至不会询问操作系统。)甚至还有一个 IETF标准草案这将在解析器层面强制执行。
Web 浏览器通常将其视为
localhost
安全来源 – 它们可能http://localhost
比其他http://
URL 提供更多的 API。这当然意味着允许 localhost 解析为 127.0.0.1/::1 以外的任何内容都会带来安全风险。