Ollama禁止外网访问的几种正确配置方式

Ollama 默认只监听 127.0.0.1 的 11434 端口,也就是只有本机能访问。
如果你把监听地址改成 0.0.0.0,或者用 Docker 映射了外网端口,Ollama 就会暴露到公网。
关掉这个风险,重点不是加防火墙规则,而是让 Ollama 进程本身只绑定回环地址或内网地址。
下面给出几种正确的配置方式,并附上验证方法。

先搞清楚你的 Ollama 目前监听了什么地址

在改配置之前,先确认当前状态。
执行下面命令:

ss -lntp | grep 11434

如果看到类似 0.0.0.0:11434:::11434,说明 Ollama 确实在监听所有网卡,外网可达。
如果输出是 127.0.0.1:11434,则只在本地监听,那不用额外改防火墙。

方式一:用环境变量 OLLAMA_HOST 绑定回环地址

Ollama 通过 OLLAMA_HOST 环境变量控制监听地址。
最稳妥的做法是设为 127.0.0.1

如果是直接用命令行启动,可以这样写:

OLLAMA_HOST=127.0.0.1 ollama serve

如果你用 systemd 管理服务,通常需要修改服务配置。
先查看当前服务文件:

systemctl cat ollama

然后创建覆盖文件:

sudo mkdir -p /etc/systemd/system/ollama.service.d
sudo tee /etc/systemd/system/ollama.service.d/override.conf <<'EOF'
[Service]
Environment="OLLAMA_HOST=127.0.0.1"
EOF

接着重新加载并重启服务:

sudo systemctl daemon-reload
sudo systemctl restart ollama

如果你用的是 Docker 部署 Ollama,注意端口映射。
正确方式是只映射到本机,例如:

docker run -d --name ollama -p 127.0.0.1:11434:11434 ollama/ollama

这里 -p 127.0.0.1:11434:11434 表示只在宿主机回环地址上暴露端口,外网无法直接访问。
禁止使用 -p 11434:11434 这种省略宿主 IP 的写法。

方式二:修改 systemd 服务里的启动参数

有些 Ollama 安装包会在 Unit 文件里写入 Environment=OLLAMA_HOST=0.0.0.0,只覆盖环境变量不一定生效,需要直接修改 Unit 文件。

编辑 /etc/systemd/system/ollama.service,找到 [Service] 段落,检查是否包含:

Environment="OLLAMA_HOST=0.0.0.0"

如果有,把它改成 127.0.0.1 或者直接删除这一行(未设置时默认就是 127.0.0.1)。
保存后执行:

sudo systemctl daemon-reload
sudo systemctl restart ollama

修改后立即验证监听地址。

方式三:防火墙应该用来兜底,而不是唯一防线

如果你确实需要让 Ollama 监听 0.0.0.0,只能访问内网或特定 IP,那必须配置防火墙。
但要知道,防火墙规则一旦被误删、误改,服务照样会暴露。
所以正确的姿势是:应用层绑定内网地址,防火墙只放行固定来源

以 UFW 为例,只允许内网网段访问 11434:

sudo ufw allow from 192.168.1.0/24 to any port 11434 proto tcp

同时拒绝其他来源:

sudo ufw deny 11434/tcp

如果是 iptables:

iptables -A INPUT -p tcp --dport 11434 -s 192.168.1.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 11434 -j DROP

另外,云服务器厂商的安全组也要检查。
很多情况是防火墙配好了,但安全组放通了 0.0.0.0/0 的 11434 端口,依然能从外部访问。

验证是否真正禁止了外网访问

配置完成后,先看监听状态:

ss -lntp | grep 11434

正常输出应该只包含 127.0.0.1:11434 或内网 IP。
随后在另外一台外网机器上测试:

curl http://你的公网IP:11434

如果提示超时或连接被拒,说明外网访问已拦截。
本机测试仍然正常:

curl http://127.0.0.1:11434

能返回响应即可。

常见坑:改完不生效或仍能外网访问

很多人改了 systemd 配置但忘了 daemon-reload,导致重启时仍用旧配置。
改完务必执行完整命令:先 reload,再 restart。

Docker 场景容易忽略旧容器的端口映射。
删除旧容器重新创建,而不是直接 restart,映射参数不会改变。

如果改了环境变量后监听地址没变,可能是启动脚本里强制写死了 OLLAMA_HOST
可以用 systemctl cat ollama 查看最终生效的配置,确认是否有多个地方设置。

只改防火墙不够,正确思路是把 Ollama 的监听地址限制在可信网络范围,再用防火墙做二级防护。
这样即使防火墙规则被误清,服务也不会直接暴露到公网。
遇到问题时,按本文顺序逐步检查,基本都能定位到原因。

分享到:
上一篇
LiteLLM数据库持久化,用量、密钥
下一篇
中转服务使用systemd托管,自动重启、崩溃重启
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意