主机操作系统是 Win7,在 Visual Studio 开发服务器中运行 MyApp,绑定到 localhost:51227,VM 是配置了 NAT 的 VirtualBox。客户操作系统是安装了 IE7 的 Win XP。我的目标是从 IE7(在客户机上运行)中调试 MyApp(在主机上运行)。
Visual Studio 开发服务器仅绑定到环回网络设备(即 localhost)。它确实不是绑定到我的主机的外部IP地址。
我已尝试从客户机上的 IE7 访问 10.0.2.2:51227(并使用 ipconfig 确认 10.0.2.2 是网关地址),但看起来 10.0.2.2 绑定到主机的外部 IP,而不是环回 IP(localhost),因此这不起作用。
有什么建议么?
答案1
对我来说,最简单的解决方案是在主机上使用 SPI 端口转发,以允许从外部网络接口访问我的仅限本地主机的服务:
- 下载 SPI 端口转发并在主机上运行(无安装程序,下载的是一个裸 exe)
- 重要的:Windows 防火墙将询问是否允许 SPI 端口转发访问公共网络。勾选允许从公共网络访问。
- 将本地端口设置为 8888(或任何您想要的值),将远程主机设置为 localhost,将远程端口设置为主机上目标服务的端口(在我的情况下为 51227,因为 VSDS 在端口 51227 上运行),然后单击“激活”
- 从客户机访问 10.0.2.2:8888。
注意:如果 10.0.2.2 不起作用,请在客户机上运行 cmd 以调出命令行,然后使用“ipconfig”,并使用默认网关地址,但 VirtualBox 当前默认为 10.2.2.2,所以这是一个安全的选择。
需要注意的是,此配置将允许外部 IP 访问 VSDS,因此请谨慎使用...当然,如果您想要调试手机支持或其他东西,这可能会很有用。
答案2
虽然 VirtualBox 可以访问主机上的环回接口(就像主机上运行的任何其他程序一样),但它不提供从客户操作系统访问它的方法(我所知道的其他虚拟化解决方案也是如此)。
如果 VirtualBox 提供了对主机环回接口的访问,它应该在每个客户机上创建一个附加接口,并绑定到主机上的环回接口。
为什么要添加这个接口?因为在客户机上,发送到 127.0.0.1 的任何流量都会自动转发到它自己的环回接口,而不是主机。
我能想到一个解决方法:将 Visual Studio Development Server 绑定到 10.0.2.2。这样,您的开发环境就无法从外部访问,但可以通过 VirtualBox 客户机访问(尽管我在上面 James 的评论中读到这可能是不可能的,但我读过建议将 VS 绑定到w3p.exe
, 哪个似乎至少在 Windows 2003 上有效)。