本地部署大模型,如何限制访问防止滥用?
本地部署大模型防滥用指南:三步限制访问权限
本地部署大模型(比如通过 Ollama、vLLM 或 LLaMA.cpp 跑起来的服务)默认可能监听 0.0.0.0:11434,意味着只要知道你的 IP 和端口,任何人都能发送请求。
如果暴露在公网,很容易被脚本扫到并掏空资源。
本文从零开始,讲清楚三种最实用的限制方法,你选一种就能保住自己的算力。
准备工作:确认你的大模型服务运行方式
操作前请确认你已经在本地跑起了模型服务。
以最流行的 Ollama 为例,默认服务端口是 11434,配置文件通常在 /etc/systemd/system/ollama.service(Linux)或 /etc/default/ollama。
如果你用 Docker 部署,则关注容器启动参数。
打开终端执行以下命令,查看服务是否在运行:
sudo systemctl status ollama
如果显示 active (running),说明服务已运行。
接着用 netstat -tulpn | grep 11434 检查当前监听地址,若看到 0.0.0.0:11434 就说明有外部访问风险。
方法一:修改监听地址,只允许本地访问(最简单)
这是最安全的做法——让模型服务只绑定本机回环地址 127.0.0.1,完全拒掉外部网络。
操作步骤:
- 编辑 Ollama 服务配置文件(具体路径因发行版而异):
sudo vim /etc/systemd/system/ollama.service
或者在 /etc/default/ollama 中增加环境变量。
- 找到
[Service]部分,在ExecStart=行之前添加:
Environment="OLLAMA_HOST=127.0.0.1"
如果你用 Docker 启动,参数改为 -e OLLAMA_HOST=127.0.0.1。
- 重载 systemd 并重启服务:
sudo systemctl daemon-reload
sudo systemctl restart ollama
- 验证:再次运行
netstat -tulpn | grep 11434,监听地址应变为127.0.0.1:11434。此时用其他机器curl http://你的IP:11434会超时或连接拒绝。
方法二:Nginx 反向代理 + IP 白名单(需要局域网或固定公网 IP)
如果你希望部分外部用户(比如同一局域网下的其他设备)也能访问,但其他人不能,可以用 Nginx 做反向代理,只放行特定 IP。
安装 Nginx(如果没装):
sudo apt install nginx -y
编写配置文件 /etc/nginx/conf.d/ollama.conf:
server {
listen 11434;
server_name _;
# 只允许下面两个 IP 访问,其余全部拒绝
allow 192.168.1.0/24; # 整个局域网
allow 203.0.113.5; # 你的固定公网 IP
deny all;
location / {
proxy_pass http://127.0.0.1:11434;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
注意:本示例中 Nginx 自己监听 0.0.0.0:11434,但通过 allow/deny 限制来源。
同时 Ollama 仍然只监听 127.0.0.1:11434(确保方法一已配置),否则外部请求可以绕过 Nginx 直接访问服务。
测试并重载 Nginx:
sudo nginx -t
sudo systemctl reload nginx
验证方法: 从被允许的 IP 机器执行 curl http://你的IP:11434/api/tags 应返回正常;
从不允许的 IP 执行则会收到 403 Forbidden。
方法三:云服务器防火墙放行 + API 密钥校验(可选增强)
如果你的模型框架支持 API 密钥(例如 vLLM 启动时加 --api-key 参数),这是第二道防线。
即使 IP 被放行,没有密钥仍然不可用。
以 vLLM 为例:
python -m vllm.entrypoints.openai.api_server \
--model /path/to/model \
--api-key 你的随机密钥字符串 \
--host 127.0.0.1 --port 8000
ginx 反向代理时,可以在 proxy_set_header 中透传 Authorization 头,或者在 Nginx 层用 auth_request 模块校验密钥。
但对零基础用户,最简单的是直接绑定 127.0.0.1 后,通过服务端防火墙只对受信任 IP 开放端口。
避坑指南 & 高频问题
Q:修改 OLLAMA_HOST 后重启失败?
检查 /etc/systemd/system/ollama.service 中 EnvironmentFile 是否覆盖了变量。建议直接在 [Service] 中增加 Environment="OLLAMA_HOST=127.0.0.1"。
Q:我已经有公网 IP,但不想让搜索引擎扫到端口?
只监听 127.0.0.1 是最彻底的,除非你确实需要从外部访问。如果确实需要外部访问,务必配合 Nginx 白名单和强密码/密钥。
Q:我用的是 Docker 部署 Ollama,怎么改?
运行容器时加 -e OLLAMA_HOST=127.0.0.1,同时端口映射只映射到 127.0.0.1:11434:11434(即在 -p 参数前加 IP,如 -p 127.0.0.1:11434:11434)。
效果验证:三步确认安全
- 在本地执行
curl http://127.0.0.1:11434/api/tags,应该返回模型列表。 - 在同一局域网的另一台机器上执行
curl http://你的局域网IP:11434/api/tags,如果用了方法一则超时,用了方法二且允许局域网则正常。 - 用手机流量(公网)访问你服务器的公网IP:11434,应该连接失败(除非你配置了公网白名单但未拦截)。
确认以上三步后,你的本地大模型服务就基本切断被滥用的路了。
建议定期检查监听状态和日志 sudo journalctl -u ollama 有无异常请求。
如果你正在处理本地部署大模型如何限制访问防止滥用的问题,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。