GeoIP 访问控制
面向可以配置登录策略并查看最近决策的管理员。公共 IP 没有命中显式例外时,需要服务器具备远程查询能力。
目的
在玩家登录时应用粗粒度的国家和 IP 策略,用安全测试数据验证决策顺序,并明确 GeoIP 不是身份或反作弊证据。
开始前
- 依据隐私和地区合规要求选择服务商:
IpWhoIs使用 HTTPS 且不需要 Token,IpApi是受限的 HTTP 选项,IpInfo使用 HTTPS 和账户 Token。 - 在启用严格拦截前,先决定未知国家以及私有、本地地址的处理方式。
- 准备测试公共 IP、私有测试地址、临时 CIDR 例外和专用测试玩家。文档示例中的
203.0.113.10、198.51.100.0/24仅是保留示例地址,不代表真实客户端。 - 在策略验证完成并准备好恢复运维人员前,保持 绕过管理员 启用。
WARNING
每个未命中缓存的公共玩家 IP 可能会发送给所选第三方服务商。请记录数据流,并据此选择服务商、缓存时长和日志策略。
操作步骤
设置
- 打开 GeoIP 访问控制,选择服务商时先保持策略禁用。
IpInfoToken 只填写在受保护字段中,禁止复制到截图或工单。 - 设置请求超时、成功缓存 TTL 和失败缓存 TTL。测试服务商稳定性时可先使用 5 分钟左右的短失败缓存。
- 选择 禁用、仅允许列出的国家 或 阻止列出的国家。在对应列表中填写 ISO 国家代码,并明确选择 未知国家策略 和 私有/本地 IP 策略。
- 为测试客户端和恢复管理员添加精确 IP 或 CIDR 到允许列表或阻止列表。显式例外会在国家策略之前评估。
- 设置踢出消息,并决定是否记录允许决策。验证新策略时临时打开允许日志,确认后按需要降低噪声。
- 保存后用 测试查询 检查公共测试 IP 和私有地址,查看服务商、国家、缓存标记和错误状态。更换服务商或缓存设置后使用 清除缓存;策略测试需要全新服务商结果时也可以清除缓存。
缓存行为
- 查询结果保存在进程内存缓存中。成功查询使用
CacheTtlMinutes,失败查询使用FailureCacheTtlMinutes。 - 重启后端或游戏进程会清空缓存;点击 清除缓存 可以在不重启的情况下移除当前条目。
- 更换服务商或缓存 TTL 设置会使受影响缓存条目失效。国家/IP 策略变更会改变决策评估,但可能保留查询元数据;需要全新服务商结果时应点击 清除缓存。
评估顺序
登录决策按以下顺序执行:
- 模块或模式禁用时允许登录。
- 启用绕过管理员时允许登录。
- 无效 IP 记录为
Skipped。 - 私有或回环 IP 按
PrivateIpPolicy执行。 - IP 允许列表在查询前允许。
- IP 阻止列表在查询前阻止。
- 其余公共 IP 执行远程 GeoIP 查询。
- 查询失败或缺少国家时按
UnknownCountryPolicy执行。 - 国家允许或阻止模式给出最终结果。
线上验证
- 保持模式禁用,用 测试查询 检查公共测试 IP 和私有地址。它只验证服务商查询,不会执行
PrivateIpPolicy,也不会产生最近登录决策。 - 配置不与测试运维人员冲突的无害策略:
AllowCountries列表包含测试运维人员预期国家,或BlockCountries列表不包含该国家;临时启用 记录允许决策。使用专用测试玩家登录,确认最近决策出现允许记录。 - 将测试 IP 加入阻止列表,确认玩家被踢出且看到配置消息;移除条目、清除缓存,再确认玩家可以重新加入。
- 仅在受控窗口模拟服务商故障,确认真实登录使用配置的未知国家策略;验证后恢复服务商和策略。

空表展示最近决策视图,未包含测试 IP、玩家或策略结果。
验证结果
- 状态区域显示所选服务商、缓存数量、最近查询和最近阻止,没有过期错误。
- 最近决策出现预期的
Allowed、Blocked、LookupFailed或Skipped结果和原因。 - 显式允许列表在国家策略前生效,显式阻止列表在远程请求前阻止。
- 更换服务商或缓存 TTL 后清除缓存会改变下一次查询行为,移除临时阻止规则后登录恢复;国家/IP 策略变更会重新评估现有查询结果。
- 使用真实私有/回环地址登录尝试及其最近决策验证
PrivateIpPolicy;单独的测试查询结果不能证明该策略。
限制与安全说明
DANGER
服务商不可用、运营商国家识别异常或地址共享都可能误拒绝正常玩家。先使用未知国家 Allow,验证真实登录事件,并保留恢复例外。
- GeoIP 是近似的访问控制,不是身份认证、VPN 检测或反作弊系统。调查应使用审计、玩家追踪和服务器证据。
IpApi使用 HTTP 且有服务商限制,不要在不可信网络中把它当作高信任路径。