关于 VirtualBox 端口转发问题有很多问题,但没有一个与我的具体细节有关。设置细节:
我在 VirtualBox 4.1.2 中安装了 Windows 7 Professional 64 位,托管在 Mac OS X 10.6.8 中。我localhost
在 Windows 安装中的不同端口上运行了多个 Web 服务器。我无论如何都无法使端口转发正常工作,以便我可以从 Mac OS X 访问这些 Web 服务器。
我的设置如下所示;是的,我有一个 NAT 适配器:
在我的 VirtualBox 配置文件中相关部分如下所示:
<NAT>
<DNS pass-domain="true" use-proxy="false" use-host-resolver="false"/>
<Alias logging="false" proxy-only="false" use-same-ports="false"/>
<Forwarding name="RLPWeb" proto="1" hostport="7084" guestip="127.0.0.1" guestport="7084"/>
<Forwarding name="UtilWeb" proto="1" hostport="4040" guestip="127.0.0.1" guestport="4040"/>
<Forwarding name="WCARLP" proto="1" hostport="8084" guestip="127.0.0.1" guestport="8084"/>
<Forwarding name="WCAUtil" proto="1" hostport="4848" guestip="127.0.0.1" guestport="4848"/>
</NAT>
我已经关闭了 Windows 防火墙以确保它不会干扰,并且我没有在 Mac OS X 上运行防火墙。
无论如何,当我尝试在任何 Mac OS X 浏览器上访问例如时http://127.0.0.1:4040/
,它最终都会超时。
该虚拟机的日志文件显示它正在正确读取设置,并暗示它在此处执行了正确的事情:
00:00:08.286 NAT: set redirect TCP host port 4848 => guest port 4848 @ 127.0.0.1
00:00:08.286 NAT: set redirect TCP host port 8084 => guest port 8084 @ 127.0.0.1
00:00:08.286 NAT: set redirect TCP host port 4040 => guest port 4040 @ 127.0.0.1
00:00:08.286 NAT: set redirect TCP host port 7084 => guest port 7084 @ 127.0.0.1
00:00:08.290 Changing the VM state from 'LOADING' to 'SUSPENDED'.
00:00:08.290 Changing the VM state from 'SUSPENDED' to 'RESUMING'.
00:00:08.290 Changing the VM state from 'RESUMING' to 'RUNNING'.
00:00:08.337 Display::handleDisplayResize(): uScreenId = 0, pvVRAM=000000012017d000 w=1834 h=929 bpp=32 cbLine=0x1CA8, flags=0x1
00:00:09.139 AIOMgr: Host limits number of active IO requests to 16. Expect a performance impact.
00:00:13.454 NAT: DHCP offered IP address 10.0.2.15
我尝试过将主机 IP 设置为127.0.0.1
,也尝试过将客户 IP 设置为空白10.0.2.15
。这些似乎都不起作用。
我还可以查看什么来解决这个问题?
答案1
我注意到 macOS X VirtualBox 主机上的端口转发存在问题。
使用网络适配器 PCnet-Fast III (Am79C973) 和 Oracle Developer Day 图像作为访客。
每当我暂停访客并恢复时,所有端口转发都会丢失。
我不确定问题是否与网络适配器或客户机有关,但我不知道客户机如何能够意识到端口转发。
这是一个不太可能的猜测,但如果你对此案有任何共同点,尝试关闭(完全关闭客户机的电源)并启动设置端口转发的机器。立即测试任何端口转发是否工作,并且只有在获得积极结果后才尝试暂停和恢复客户机。
答案2
您是否尝试过将连接从 Windows 虚拟机桥接到 Mac?在虚拟机内部,网络地址转换 NAT 对我来说也是一件令人头疼的事情。桥接可为虚拟机提供主机可以看到的 IP。考虑到您的端口转发情况,这应该不是问题,但我会尝试从实际 IP 而不是转换后的 IP 转发端口。
答案3
根据 VirtualBox 官方文档,执行此操作的首选方法是将网络模式设置为“仅主机”或“桥接”。
总结:使用桥接,而不是 NAT。