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

VirtualBox NAT端口转发配置问题:无法从macOS主机访问Ubuntu Server的HTTP服务

VirtualBox NAT端口转发配置问题:无法从macOS主机访问Ubuntu Server的HTTP服务

我明白你现在的困扰——SSH能正常连接,但Python跑的HTTP服务就是访问不了,这种情况大概率是端口转发的细节没配对,或者Ubuntu那边的防火墙、服务绑定有问题,咱们一步步来排查解决:

一、先核对VirtualBox端口转发规则的正确性

这是最容易踩坑的地方,很多人会把子系统IP填错:

  • 打开VirtualBox,选中你的Ubuntu Server虚拟机,点击「设置」→「网络」→ 选中NAT模式的网卡(一般是「网卡1」)→ 点击「端口转发」按钮
  • 确保你的规则参数完全正确:
    • 名称:自定义即可,比如「HTTP_Forward」
    • 协议:TCP(HTTP基于TCP协议,别选UDP)
    • 主机IP:留空或者填127.0.0.1都可以
    • 主机端口:你在macOS浏览器要访问的端口,比如8080
    • 子系统IP:必须填Ubuntu Server内部的私有IP!不是0.0.0.0!你可以在Ubuntu终端用ip a或hostname -I命令查询,NAT模式下通常是10.0.2.15
    • 子系统端口:8000(对应你的Python HTTP服务端口)
  • 配置完后记得点击「确定」保存,最好重启一下虚拟机生效

二、检查Ubuntu Server的防火墙是否拦截了8000端口

Ubuntu Server默认启用了ufw防火墙,很可能会挡住外部对8000端口的访问:

  • 通过SSH登录Ubuntu,输入sudo ufw status查看防火墙状态
  • 如果显示「active」,那就执行sudo ufw allow 8000/tcp命令,允许8000端口的TCP流量
  • 要是只是临时测试,也可以用sudo ufw disable暂时关闭防火墙,测试能访问后再重新配置规则

三、确认Python HTTP服务的绑定地址是否正确

你用的python3 -m http.server命令默认是绑定0.0.0.0:8000(允许所有网卡访问),这部分是对的,但咱们可以再确认下:

  • 在Ubuntu终端输入ss -tulpn | grep 8000,查看服务的绑定情况
  • 正常输出应该类似:tcp LISTEN 0 5 0.0.0.0:8000 0.0.0.0:* users:(("python3",pid=xxx,fd=3)),如果显示的是127.0.0.1:8000,那就改服务启动命令为python3 -m http.server 8000 --bind 0.0.0.0

四、用macOS终端测试连通性(比浏览器更准确)

有时候浏览器的缓存或代理会干扰测试,先用命令行验证:

  • 打开macOS终端,输入telnet 127.0.0.1 8080,如果显示「Connected to localhost」说明连通正常
  • 或者用curl http://127.0.0.1:8080,如果能返回Python服务的目录列表,就说明端口转发已经生效
  • 如果命令行都连不通,那回到前两步排查;如果命令行通但浏览器不通,试试清空浏览器缓存或用隐私模式打开

五、检查macOS本地端口是否被占用

如果你的8080端口被macOS上的其他程序占用了,也会导致访问失败:

  • 在macOS终端输入lsof -i :8080,查看是否有进程占用了8080端口
  • 如果有,换一个主机端口比如8081,重新配置VirtualBox的端口转发规则再试

备注:内容来源于stack exchange,提问作者AppNameExMin

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.20 08:23:19