概述

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白名单 图标按钮:
  1. 弹出 IP 白名单弹窗,显示当前白名单规则
  2. 在文本框中编辑(每行一个 IP/网段)
  3. 点击”保存IP白名单”提交
  4. 清空文本框并保存 = 清除白名单,恢复不限制来源 IP

批量操作

点击页面顶部的 “批量设置IP白名单” 按钮:
  1. 勾选目标分组(分组下所有 Key 都会被应用)
  2. 或勾选独立 API Key(支持多选)
  3. 也可同时勾选分组和独立 Key(系统自动去重)
  4. 填入白名单规则后保存

API 接口

1. 设置单个 API Key 的 IP 白名单

ℹ️ 此接口为 Web UI 内部接口,需 Cookie 鉴权(用户登录态)。

请求体

成功响应

错误响应


2. 批量设置 API Key 的 IP 白名单

ℹ️ 此接口为 Web UI 内部接口,需 Cookie 鉴权(用户登录态)。

请求体

⚠️ group_idsapikeys 至少需要提供一项。

成功响应


运行时拦截

当通过 API Key 调用 LLM API 时,系统会自动校验请求来源 IP 是否在该 Key 的白名单内。

涉及的路由(均以 Authorization: Bearer <API Key> 鉴权)

白名单为空时

不做任何限制,所有来源 IP 均可正常调用。这与 budgetdaily_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-ForX-Forwarded-For-Poundrequest.remote_addr 的优先级获取来源 IP
  • 如果你的请求经过了反向代理,请确保代理正确设置了 X-Forwarded-For