概述
IP 白名单功能允许为每个 API Key 设置允许访问的来源 IP 或网段。设置白名单后,只有白名单内的 IP 才能使用该 API Key 调用 API;未设置白名单(空)时,不限制来源 IP。功能组成
IP 格式说明
每行一个 IP 地址或网段,支持两种写法:1. 标准 CIDR 格式
2. 纯 IP 格式(自动推断网段)
当未包含/ 时,系统根据末尾连续为 0 的段数自动推断网段:
⚠️ 0.0.0.0 会被视为非法条目。
Web 管理界面
单个 Key 操作
在apikey.html 页面的每个 API Key 卡片上,点击 IP白名单 图标按钮:
- 弹出 IP 白名单弹窗,显示当前白名单规则
- 在文本框中编辑(每行一个 IP/网段)
- 点击”保存IP白名单”提交
- 清空文本框并保存 = 清除白名单,恢复不限制来源 IP
批量操作
点击页面顶部的 “批量设置IP白名单” 按钮:- 勾选目标分组(分组下所有 Key 都会被应用)
- 或勾选独立 API Key(支持多选)
- 也可同时勾选分组和独立 Key(系统自动去重)
- 填入白名单规则后保存
API 接口
1. 设置单个 API Key 的 IP 白名单
ℹ️ 此接口为 Web UI 内部接口,需 Cookie 鉴权(用户登录态)。
请求体
成功响应
错误响应
2. 批量设置 API Key 的 IP 白名单
ℹ️ 此接口为 Web UI 内部接口,需 Cookie 鉴权(用户登录态)。
请求体
⚠️group_ids和apikeys至少需要提供一项。
成功响应
运行时拦截
当通过 API Key 调用 LLM API 时,系统会自动校验请求来源 IP 是否在该 Key 的白名单内。涉及的路由(均以 Authorization: Bearer <API Key> 鉴权)
白名单为空时
不做任何限制,所有来源 IP 均可正常调用。这与budget、daily_limit 等字段的”0/空 = 不限制”约定一致。
白名单有规则时
存储结构
IP 白名单存储在user.costofapikey 集合的 ip_whitelist 字段:
ip_whitelist不存在或为[]时,表示该 Key 不限制来源 IP。
最佳实践
1. 安全隔离
- 为生产环境的 Key 设置 IP 白名单,限制为公司办公网络 IP 或服务器出口 IP
- 测试环境的 Key 可以不设置白名单
2. 网段规划
- 使用网段而非单个 IP,避免因 IP 更换频繁修改白名单
- 例如公司办公网络
192.168.0.0/16或云服务器出口10.0.0.0/8
3. 备用通道
- 建议至少保留一个不限制 IP 的 Key(或使用宽泛网段),防止因白名单配置错误导致完全无法访问
4. 来源 IP 说明
- 目前系统通过
X-Forwarded-For→X-Forwarded-For-Pound→request.remote_addr的优先级获取来源 IP - 如果你的请求经过了反向代理,请确保代理正确设置了
X-Forwarded-For头