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

Mac无法连接VirtualBox虚拟机运行的localhost服务问题排查求助

解决Mac无法通过localhost访问VirtualBox/Vagrant服务的排查方案

前置检查

  • 首先确认虚拟机内的目标服务已正常启动:进入虚拟机内部,执行curl localhost:对应端口,如果能返回内容说明服务本身正常,问题出在宿主机到虚拟机的网络链路上。

分步排查

  1. 端口监听状态检查
    执行以下命令查看宿主机对应端口是否有进程监听:
lsof -i :你要访问的服务端口
# 或者
netstat -an | grep LISTEN | grep 你要访问的服务端口

如果无任何输出,说明VirtualBox端口转发未生效,跳转到第三步排查。
2. IPv6解析优先级排查
你的hosts配置中同时存在localhost的IPv4、IPv6解析规则,部分服务默认仅监听IPv4地址,浏览器优先走IPv6的::1就会访问失败:

  • 直接在浏览器访问http://127.0.0.1:服务端口测试,如果可正常访问,确认是解析优先级问题
  • 解决方案:编辑/etc/hosts文件,将127.0.0.1 localhost行移动到::1 localhost行之前,保存后执行sudo dscacheutil -flushcache刷新DNS缓存即可。
  1. VirtualBox端口转发规则校验
    你当前的端口转发配置如下:
    VirtualBox端口转发配置截图
    需要确认两个配置项:
  • 「主机IP」要么留空,要么填写127.0.0.1,不能填写虚拟机IP
  • 「客端IP」必须填写虚拟机内部网卡的实际IP,可进入虚拟机执行ip a(Linux系统)查询对应网卡地址后回填
    确认配置后重启虚拟机再测试访问。
  1. 系统防火墙拦截排查
    打开Mac「系统设置」>「网络」>「防火墙」,临时关闭防火墙后测试访问,如果可访问说明防火墙拦截了VirtualBox的转发请求,将VirtualBox加入防火墙允许列表即可。
  2. Vagrant配置校验
    如果使用Vagrant启动虚拟机,打开项目根目录下的Vagrantfile,确认端口转发配置格式正确,宿主机端口未被其他进程占用:
config.vm.network "forwarded_port", guest: 虚拟机端口, host: 宿主机端口

修改后执行vagrant reload重启虚拟机生效。

附加说明

如果上述步骤都排查完仍无法访问,执行sudo tcpdump -i lo0 port 你要访问的端口,然后发起访问请求,查看是否有请求包进出,进一步定位链路问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 11:18:04