本地部署大模型,如何设置访问白名单?
本地部署大模型之后,通常需要把 API 端口暴露到局域网甚至公网,让其他人也能调用。
但直接开放端口等于把控制权交给所有人——任何人都能乱发请求,轻则消耗硬件资源,重则可能被恶意利用。
设置一个访问白名单(IP白名单),只允许可信的 IP 地址连接,是成本最低也最有效的安全手段。
前置准备:确认你的模型服务端口和当前服务器环境
不管你是用 Ollama(默认端口 11434)、vLLM(默认端口 8000)还是其他框架,第一步都是确认你正在监听的端口号。
登录服务器,执行以下命令查看:
ss -tuln | grep LISTEN
找到模型服务的端口号(比如 0.0.0.0:11434),记下它。
接着确认服务器的网络类型——如果用的是 Ubuntu(带 ufw)或 CentOS(带 firewalld),操作会有些差异。
如果连最简单的防火墙都没有,推荐先安装 ufw(Ubuntu)或 firewalld(CentOS)。
核心操作:两种途径实现访问白名单
途径一:通过系统防火墙只放行特定 IP
这是最通用、最直接的方法,不管应用本身是否支持白名单,都可以用。
推荐使用 ufw(Ubuntu)或 iptables(通用)。
如果使用 ufw(Ubuntu/Debian):
sudo ufw allow from 192.168.1.100 to any port 11434
这台服务器就只允许 192.168.1.100 这个 IP 访问端口 11434。
如果需要允许多个 IP,重复执行这条命令,把 IP 换成你需要的。
最后别忘了开启防火墙:
sudo ufw enable
如果使用 iptables(通用,包括 CentOS 原生模式):
# 先清空默认规则(小心操作,不要断开自己的SSH)
sudo iptables -P INPUT ACCEPT
sudo iptables -F
# 允许本机回环
sudo iptables -A INPUT -i lo -j ACCEPT
# 允许已建立的连接(避免断连)
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 只允许指定IP访问11434
sudo iptables -A INPUT -p tcp --dport 11434 -s 192.168.1.100 -j ACCEPT
# 阻止其他所有IP访问11434
sudo iptables -A INPUT -p tcp --dport 11434 -j DROP
注意顺序:先放行白名单,最后再拒绝其余。
如果规则反了,所有人都会被挡在外面。
途径二:通过应用配置限制监听 IP
部分大模型框架支持只监听特定 IP,这样就无需依赖防火墙。
以 Ollama 为例,启动时可以加上 --host 参数:
ollama serve --host 192.168.1.100
这样 Ollama 只监听本机上的 192.168.1.100 地址,其他 IP 无法直接连接。
但这个方法有局限:如果你的服务器有多个网卡(比如内网和外网),你需要确定用哪个 IP。
更安全的做法是结合防火墙双重限制。
避坑指南:新手最容易掉进去的四个坑
第一个坑:忘记放行自己的管理 IP。
如果你通过 SSH 远程操作,千万要在防火墙规则里加上 ESTABLISHED,RELATED 的放行(上面 iptables 示例已包含),否则新规则生效瞬间 SSH 会断开。
如果不小心被踢出去,只能通过面板的 VNC 或带外管理进服务器刷新规则。
第二个坑:重启后防火墙规则失效。
使用 iptables 直接添加的规则是临时的,重启后消失。
要把规则保存下来:Ubuntu 执行 sudo iptables-save > /etc/iptables/rules.v4,CentOS 执行 sudo iptables-save > /etc/sysconfig/iptables。
如果用 ufw,规则默认持久化,无需额外操作。
第三个坑:只设置了防火墙,忘记关掉应用默认的 0.0.0.0 监听。
检查应用启动命令,确认它没有同时绑定 0.0.0.0 和 127.0.0.1 以外的地址。
如果应用本身输出了多网卡监听,防火墙规则仍然有效,但最好把应用也限制在单一 IP 上。
第四个坑:多规则冲突导致预期外的允许或拒绝。
建议从头清理已有规则再重新设置,或者每加一条规则就测试一次连通性。
效果验证:确认白名单生效
从白名单允许的机器上测试:
curl http://你的服务器IP:11434/api/tags
应该能正常返回模型列表。
然后再从一台未在白名单中的机器上测试,预期会超时或收到拒绝连接的错误(Connection refused 或 Read timed out)。
如果后一个测试成功返回了数据,说明白名单没有生效,请检查防火墙规则顺序或应用绑定地址。
最后建议打开模型服务的日志功能,查看每次连接的来源 IP。
比如 Ollama 会在终端输出访问日志,确认只有白名单 IP 出现。
如果你发现日志里不断有陌生 IP 在尝试连接,那就是白名单生效正在帮你挡掉攻击。
如果你正在处理本地部署大模型的访问白名单,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
安全无小事,多一层白名单等于多一份安心。