You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过NAT从VirtualBox虚拟机连接主机Flask服务?

解决虚拟机无法访问Mac主机Flask服务的问题

我帮你梳理下问题所在和解决步骤,你现在的核心问题是访问地址搞错了,加上可能的端口转发方向弄反了,咱们一步步来:

1. 纠正访问地址(最关键)

你在虚拟机里访问0.0.0.0:5000或127.0.0.1:5000,其实是访问虚拟机自己的本地服务,不是Mac主机的Flask应用。要访问主机的服务,你有两个可选地址:

  • 方法一:用VirtualBox NAT默认网关地址
    VirtualBox的NAT模式下,虚拟机可以通过10.0.2.2访问主机,直接在虚拟机Firefox里输入10.0.2.2:5000试试,这个是最省心的方式,不需要额外配置端口转发。
  • 方法二:用Mac主机的局域网IP
    在Mac终端里执行ipconfig getifaddr en0(如果是Wi-Fi连接)或者ifconfig查看你的主机本地IP(一般是192.168.x.x格式),然后在虚拟机里访问这个IP加5000端口,比如192.168.1.100:5000。

2. 调整端口转发配置(你之前可能搞反了)

你提到设置了“主机到虚拟机的5000端口转发”,但你的Flask服务是在主机上,虚拟机是客户端,所以这个转发完全不需要——端口转发是用来让外部访问虚拟机里的服务时才需要设置的。现在你需要的是虚拟机主动访问主机,所以直接用上面的地址就行,不用保留这个反向转发规则。

3. 排查Mac主机的防火墙限制

如果上面的地址还是访问不了,检查Mac的防火墙是否阻止了Flask的5000端口:

  • 打开Mac的「系统偏好设置」→「安全性与隐私」→「防火墙」
  • 点击「防火墙选项」,看看是否允许Python(或你启动Flask的应用)接受 incoming 连接,如果没有,添加并允许。

4. 验证Flask服务的监听状态

在Mac终端执行lsof -i :5000,输出里应该能看到LISTEN状态,且地址是*:5000(对应0.0.0.0),如果显示的是127.0.0.1:5000,那说明你的Flask启动命令没生效,重新确认app.run(debug=True,host='0.0.0.0')是否正确执行。

按照这几步来,应该就能解决连接问题了!

内容的提问来源于stack exchange,提问作者John Karimov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:41:16