我有一台 ColdFusion 服务器,在 VirtualBox 上的虚拟机中启动于 127.0.0.1:WXYZ。我需要能够从我的主机操作系统访问该服务器。我尝试过使用桥接适配器以及带端口转发的 NAT,但是没有成功。
我也尝试过使用带有端口转发的普通 NAT,同时也尝试netsh interface portproxy
中继请求以尝试公开客户的内部 127.0.0.1。
客户机和主机都是 Windows 10。更改服务器绑定的地址是不是在这种情况下,这是一个选项。我不确定我是否以理想的方式尝试了我提到的所有步骤,因此,如果您对我尝试过的任何内容或我所做的事情有任何建议,可以尝试一下,请告诉我。
答案1
我自己用 3 个步骤解决了这个问题。我将发布答案以防其他人遇到这种情况。在这个例子中,我已将主机操作系统连接到在我的客户操作系统上localhost:3000
运行的服务器。localhost:62094
步骤 0——最重要的一步
确保您的客户操作系统已启用文件共享或网络发现。这就是为什么当@Peregrino69在另一个答案的评论中提到它时,我无法访问客户操作系统。启用此设置允许我 ping 客户操作系统的 IP(但是不是本地主机,这需要我在这个答案中采取的其余步骤)。
1. 查找客户操作系统 IP
这是通过运行ipconfig
并读取IPv4 Address
字段来完成的。在我的例子中,它是默认值10.0.2.15
。
2. 从 VirtualBox 设置转发端口。
第二步是通过连接到虚拟机的网络设置将主机的调用端口转发localhost
到客户机。这会将主机操作系统中的调用中继到客户操作系统。设置屏幕截图:127.0.0.1:3000
10.0.2.15:3000
localhost:3000
10.0.2.15:3000
3. 将对 10.0.2.15 的调用中继到访客的本地主机
这是通过使用命令完成的netsh
。使用了以下确切命令:
netsh interface portproxy add v4tov4 listenaddress=10.0.2.15 listenport=3000 connectaddress=127.0.0.1 connectport=62094
这会将对客户操作系统发出的调用10.0.2.15:3000
进行中继。localhost:62094
结果
这会导致localhost:3000
从主机操作系统访问时,引起托管我服务器的客户操作系统的响应10.0.2.15:60294
。我附上了最终网络设置的图表,以防步骤不够清晰:
答案2
问题表明您正尝试使用 IP 地址 127.0.0.1 从主机访问客户机。这行不通,127 个地址仅指本地主机。即从主机和客户机这两个计算机系统的角度来看,127.0.0.1 =“我自己”。
您需要使用实际的接口 IP。例如,我有一个使用桥接适配器运行的 VB VM。我的 Wi-Fi 为其提供 IP 地址 192.168.43.177。我的主机连接到同一个 Wi-Fi,IP 地址为 192.168.43.28。如果我想从 VM 内部访问 Webmin 的界面,我可以打开浏览器https://127.0.0.1:10000,但如果我想从主机访问它我必须将其打开到 192.168.43.177:10000。
无论接口是桥接的还是 NAT 的,其工作方式都相同。