本地 ollama 跑起来,自己 curl 得通,同事或另一台机器连过去就一直超时——大概率是默认只监听回环地址。这篇从改法讲到验证顺序,再讲改完不生效怎么查、暴露到局域网后该做什么防护。适合运维和在自己机器上搭服务给团队用的人。
本地 ollama 跑起来,自己 curl 得通,同事或另一台机器连过去就一直超时——大概率不是防火墙,也不是端口被占,而是服务默认只监听回环地址,本机以外的请求压根没进到进程里。这篇就讲这么一件事:怎么用 OLLAMA_HOST 把监听地址改出来,改完怎么验证,以及改完不生效、暴露之后不安全这两类坑怎么排。
适合运维和在自己机器或一台内网服务器上搭服务给团队用的人。下面每一步都给了判断标准,照着走基本不会卡住;如果你只是自己本机调着玩,其实不用改,改了反而多一层风险。
先搞清楚默认为什么连不上
默认只绑回环地址,这是设计上的安全选择,不是 bug。回环地址只有本机能访问,同网段另一台机器发过来的请求在操作系统层面就进不去服务,所以表现永远是超时或连接被拒绝。这跟防火墙拦截、端口被占用是三件不同的事,排查时别混在一起。
- 第一步:在跑 ollama 的机器上自测本机上直接请求一次服务地址。通,说明服务本身活着,问题在监听范围或网络;不通,问题在服务进程本身,先别碰网络配置。
- 第二步:换同网段另一台机器测用另一台机器请求「跑 ollama 那台机器的 IP:端口」。这一步不通而第一步通,基本可以锁定是监听地址没放开。
- 第三步:区分「没监听」和「被拦」在服务端机器上直接看监听状态。如果显示只绑在回环地址,那就是服务配置问题,改 OLLAMA_HOST;如果已经绑在对外地址但还是连不上,那才轮到查系统防火墙和云主机安全组。
改绑定地址的两种做法与各自适用场景
改法就两类:临时在 shell 里设,和写进服务配置长期生效。选哪种取决于你是排查问题还是给团队长期用,别一上来就往系统配置里写,排查阶段写进去容易忘了改回来。
| 做法 | 适用场景 | 生效方式 | 注意点 |
|---|---|---|---|
| 启动前在同一 shell 设环境变量再拉起服务 | 一次性排查、试配置 | 当前终端会话 | 关掉终端就失效,不会污染系统配置 |
| 写进服务配置文件或系统级环境变量 | 固定给团队用的机器 | 重启服务后生效 | 改动前先备份,改完确认服务真的重读过配置 |
| 绑定具体网卡 IP | 只允许某个网段访问 | 按配置方式 | 换网络环境就不通了,适合位置固定的内网服务器 |
| 绑定全零地址 | 需要从多个网段访问 | 按配置方式 | 开放的网段最广,风险最高,必须配来源限制 |
关于「具体 IP 还是全零地址」的权衡:写具体网卡 IP 更可控,只有该网段能连进来,但换个网络环境就不通了;写全零地址到处都能连,代价是暴露面最大。改绑定地址往往要连着改端口,两者一起规划,别改一半留个半成品。
改完怎么验证,以及顺手确认端口
改完别急着喊同事再试一次,自己按顺序走完三关再交付。顺序错了,会把网络问题和应用配置问题搅在一起,越查越乱。
- 服务端自测:在跑 ollama 的机器上请求服务地址,通不过就回上一步。
- 同网段另一台机器测:换一台机器请求服务端 IP 加端口,这关才是真正的「有没有放开」。
- 用实际要接的客户端测一次:程序里配的地址、端口、协议要和前面测的一致,别测的是 A 配的是 B。
- 客户端侧排查顺序:先 ping 连通性,再测端口可达性,最后才怀疑应用配置里的地址写错。
- 容器或虚拟机里跑的要额外看一眼端口映射:宿主机改了变量但映射没放通,外面照样进不来。
验证时一个实用习惯:直接在机器上看监听状态,比反复重启服务靠谱得多,能一眼看出改没改上、绑在哪个地址。不少「改了没生效」其实是服务没重读配置,或者环境变量设在了另一个 shell 里。
暴露到局域网之后要补的几件事
服务一旦不再只监听本机,就等于把接口交给了整个可达网段。改监听地址是一次性动作,收窄暴露面才是长期要维护的事,别改通了就放着不管。
| 防护动作 | 怎么做 | 不做的后果 |
|---|---|---|
| 收窄来源 | 按网段或白名单限制可访问的地址范围 | 整个网段任何机器都能直接调接口 |
| 确认没有多放接口 | 逐一核对当前对外提供的能力 | 把不该给外部看的接口一起放出去了 |
| 前面挂反向代理 | 代理层做认证并记录访问日志 | 出问题无法回溯是谁在调、调了什么 |
| 只在内网用 | 对安全要求高的走内网隔离或专线,不开公网端口 | 一旦被扫到就直接暴露 |
什么情况下不适用:如果这个服务是给公网或跨办公地点访问的,本文的局域网做法就不够了,应该走内网隔离、专线或带认证的反向代理方案,单纯改绑定地址只是把门开大,不是把门管好。
另外提醒一句:判断值不值得为这件事折腾,可以先去站内核对相关的价格与资源消耗数字。到 /price-watch 看当时的记录,再决定是本地自建还是直接用托管接口,别凭印象拍脑袋。
下一步监听完改好只是第一步,中转站和官方接口的稳定性、价格会变,建议对照当时的实测数据再决定要不要自建或换方案。→常见问题
改了环境变量、也重启了服务,另一台机器还是连不上,先查哪里?
按服务端自测、同网段互测、客户端实调三步倒着查。多数情况是变量没真正传进服务进程——比如写在交互式 shell 里但服务是由系统托管的,两边环境不同。先确认服务进程实际生效的监听状态,再去查防火墙和安全组,顺序别反。
绑定地址写成全零和写成具体 IP,该选哪个?
只在固定内网环境里给同事用,写具体网卡 IP 更稳,换网段就不通,等于自带一层限制。机器多网卡、网络环境会变、或者跑在会换地址的云主机上,写全零地址更省事,但必须配防火墙和访问控制,否则等于对所有可达网络开放。
监听开放之后,本地服务会不会被外面扫到?
是否可达取决于这台机器有没有公网入口以及安全组怎么放。只在内网、且有防火墙收口的,风险相对可控;一旦机器本身有公网 IP 又没做限制,就等于直接暴露。开放前先确认这层网络边界,必要时加反向代理做认证,别默认内网就等于安全。