【ollama】同一WiFi下Mac访问Windows Ollama失败?完整调试指南(从Connection refused到成功连通)

最近在搭建跨设备Ollama服务时,遇到了一个典型问题:Windows电脑运行Ollama,同一WiFi下的Mac电脑通过Spring项目调用时,频繁抛出 org.springframework.web.client.ResourceAccessException: I/O error on POST request for "http://localhost:11434/api/chat": Connection refused 错误。经过多轮排查,终于找到核心原因并解决。这篇文章就完整还原调试过程,总结跨设备访问Ollama的关键踩坑点与解决方案,希望能帮到有类似需求的朋友。

一、问题背景与初始报错

核心需求:在Windows 10电脑上部署Ollama服务,同一WiFi环境下的Mac电脑通过Spring Boot项目调用Ollama的/api/chat接口实现对话功能。

初始配置:直接在Spring代码中填写Ollama地址为 http://192.168.199.183:11434/api/chat,启动项目后立即报错 Connection refused(连接被拒绝)。

初步排查:两台设备确认连接同一WiFi,Windows端通过 curl http://192.168.199.183:11434/api/tags 能正常返回模型列表,说明Ollama服务本身正常。

二、核心问题拆解与逐步排查

踩坑点1:Ollama默认仅监听本机,拒绝局域网访问

Ollama默认配置下,仅监听 127.0.0.1:11434(本机回环地址),局域网内其他设备的访问会被直接拒绝。这是跨设备访问失败的核心原因之一。

解决方案:配置Ollama监听所有网络接口(0.0.0.0),允许局域网访问。

操作步骤(Windows端):

  1. 打开「此电脑→右键属性→高级系统设置→高级→环境变量」。

  2. 在「系统变量」中新建:变量名 OLLAMA_HOST,变量值 0.0.0.0(注意:必须配置在系统变量,用户变量可能不生效)。

  3. 关闭所有Ollama相关进程:打开任务管理器,结束 ollama.exe 进程。

此时遇到新问题:在cmd中输入 ollama serve 启动服务时,提示「不是内部或外部命令」,无法手动启动。

配置完了记得重启电脑,不然可能不会生效

netstat -ano | findstr "11434"

  1. 执行后,cmd 窗口会输出日志,若看到「Listening on 0.0.0.0:11434」(或类似 "serving on 0.0.0.0:11434"),说明已成功监听所有网络接口。
  2. 如果还是127.0.0.1:11434 0.0.0.0 说明没有生效,需要检查环境变量配置好了没有,再重启一下

踩坑点2:手动启动Ollama,验证监听配置

配置完PATH后,手动启动Ollama服务,确保监听所有网络接口:

  1. 在新cmd中输入 ollama serve --host 0.0.0.0(直接带参数启动,无需依赖环境变量,兜底方案)。

  2. 启动成功后,会显示日志「Listening on 0.0.0.0:11434」。

  3. 验证监听状态:打开另一个cmd,输入 netstat -ano | findstr "11434",若输出 TCP 0.0.0.0:11434 0.0.0.0:0 LISTENING,说明监听成功。

补充说明:此时在Windows端测试 curl http://192.168.199.183:11434/api/tags 能正常返回模型列表,但 curl http://0.0.0.0:11434/api/tags 失败------这是正常现象!0.0.0.0 是「监听标识」,不是可直接访问的地址,本机和跨设备访问都需用实际局域网IP。

踩坑点3:Windows防火墙/路由器隔离拦截访问

此时Windows端本地访问正常,但Mac端执行 curl http://192.168.199.183:11434/api/tags 仍失败,核心原因是「访问被拦截」。

解决方案:分两步排查拦截因素

1. 排查Windows防火墙(最常见原因)
  1. 临时测试:打开「控制面板→系统和安全→Windows Defender防火墙→打开或关闭Windows Defender防火墙」,关闭专用/公网网络的防火墙,重新在Mac端测试。若能访问,说明是防火墙拦截。

  2. 永久配置:重新开启防火墙,打开「高级设置→入站规则→新建规则」:

    1. 选择「端口」→TCP→特定本地端口:11434

    2. 选择「允许连接」→勾选「专用」「公网」「域」三个选项

    3. 命名规则(如「Ollama 11434端口局域网访问」),完成配置。

  3. 第三方安全软件:若安装360、腾讯电脑管家等,需在软件中放行11434端口(或临时退出测试)。

这个点比较重要,我通过mac ping windows的ip能通,但是curl / telnet端口都不通

windows上curl http://192.168.199.183:11434/api/tags

但是mac上curl则不通,原因就是防火墙

2. 排查路由器隔离配置

若防火墙关闭后仍无法访问,需检查路由器配置:

  1. 确认两台设备在同一网段:Windows和Mac的IPv4前三位需一致(如均为192.168.199.x),否则说明网段隔离。

  2. 关闭路由器「频段隔离」:让两台设备连接同一WiFi频段(同为2.4G或5G),进入路由器管理后台(地址通常为192.168.1.1),关闭「2.4G/5G频段隔离」。

  3. 关闭「访客模式/AP隔离」:确保Mac连接的是路由器「主WiFi」(非访客WiFi),关闭后台的「访客网络隔离」功能。

三、最终验证与成功连通

完成以上配置后,在Mac端执行:

curl http://192.168.199.183:11434/api/tags

若返回JSON格式的模型列表,说明跨设备访问成功!此时修改Spring项目中的Ollama地址为该IP,启动项目即可正常调用 /api/chat 接口。

ollma下载之后,默认会启动,ollama run qwen3:4b 可以执行模型,但是电脑重启之后,ollama 需要ollama serve启动,当然也可以直接ollama run xxxx

问了下ai 这两个命令的区别,只给到比较浅显的答案 run是面向客户端问答模式,serve是服务器模式,具体还得深入体会区别

相关推荐
悟能不能悟2 小时前
list<string> 和String[],转化为jsonstr是不是一样的
数据结构·windows·list
请为小H留灯3 小时前
Windows 系统启用 Telnet 客户端:图文详细教程
网络·windows·测试·telnet
ssschema3 小时前
M4芯片MAC安装java环境
java·macos
信鸽爱好者6 小时前
Windows +VM虚拟机安装github服务器
服务器·windows·ubuntu·机器人·github
分号8 小时前
你在运行该虚拟机时启用了侧通道缓解
windows
TYC98 小时前
mac重装系统+软件更新到指定版本
macos
鹿角片ljp9 小时前
深入理解Java集合框架:核心接口与实现解析
java·开发语言·windows
爱喝矿泉水的猛男9 小时前
鼠标堪比mac触控板(普通鼠标即可)
macos·计算机外设
葱段10 小时前
Windows 安装 Chocolatey 包管理器
windows