为什么不能只写 claude.ai
Claude Code 官方企业网络配置文档明确列出运行时需要访问的 URL。核心的四条是:
api.anthropic.com— API 请求、WebFetch 域名安全检查、功能开关、遥测事件claude.ai— claude.ai 账号认证claude.com— 登录页跳转 (最终重定向到 claude.ai)、WebFetch 文档查询platform.claude.com— OAuth token 交换 / 刷新 / 吊销 —— 两种账号都需要
最容易漏的一条: platform.claude.com
官方文档写明这个域名承担 OAuth 的 token 交换、刷新与吊销 —— 不只是 Console 账号, 用 claude.ai 账号登录同样要经过它。但几乎所有流传的中文分流清单都没有它。
漏配的后果不是「少一个功能」: token 刷新会走本地直连出去, 于是续期请求的出口 IP 与你的 API 请求 IP 不一致 —— 这正好踩在风控最敏感的判据上, 而且症状隐蔽, 表现为「用着用着突然要重新登录」。
完整分流清单 (按官方文档分组)
核心必需
缺任意一条都会导致登录或对话失败
api.anthropic.com- API 请求、WebFetch 域名安全检查、功能开关、遥测事件
claude.ai- claude.ai 账号认证
claude.com- 登录页跳转 (最终重定向到 claude.ai)、WebFetch 文档查询
platform.claude.com- OAuth token 交换 / 刷新 / 吊销 —— 两种账号都需要
按功能所需
用到对应功能才需要; 不用则可不放行
mcp-proxy.anthropic.com- claude.ai 的 MCP 连接器流量
downloads.claude.ai- 插件可执行文件下载、原生安装器与自动更新
bridge.claudeusercontent.com- Claude in Chrome 扩展的 WebSocket 桥接
*.frame.claudeusercontent.com- Artifact 内容读取
registry.npmjs.org- 插件安装、npx 启动的 MCP server、npm/bun 安装 Claude Code 本身
storage.googleapis.com- 插件元数据与安装量、Artifact 上传
code.claude.com- 内置文档查询 (claude-code-guide agent 与预授权 WebFetch)
raw.githubusercontent.com- /release-notes 的更新日志
formulae.brew.sh- Homebrew 安装方式的更新检查; 其它安装方式不会请求
遥测端点 (可关闭)
仅在直连 Anthropic API 时发送; 第三方供应商通道不会发
http-intake.logs.us5.datadoghq.com- 运营遥测事件
browser-intake-us5-datadoghq.com- 运营错误上报 (受服务端灰度开关控制)
关闭非必要流量的环境变量
不想放行遥测域名时, 用环境变量从源头关掉更省事
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1- 一次关掉两个 Datadog 端点
DISABLE_TELEMETRY=1- 关闭遥测
DO_NOT_TRACK=1- 通用不追踪标准, 效果同上
DISABLE_ERROR_REPORTING=1- 关闭错误上报
IP / ASN 兜底规则
CIDR / ASN 只能作为高级兜底策略, 需要定期核对 BGP/ASN 变化。不要把下面的示例当作永久完整列表:
补充: AS399358 当前实际宣告的路由是 160.79.104.0/23 与两个 IPv6 /48 (2607:6bc0::/48、2607:6bc0:11::/48), 比登记的段更窄。按登记段配置覆盖更宽、更保险。另需注意遥测与安装类域名 (Datadog、npm、GitHub、Google Cloud) 都不在 Anthropic 自有段内, IP 兜底救不了它们, 必须靠域名规则。
系统时间同步
Claude Code 本身的官方网络要求不包含 NTP。但系统时间严重偏差会导致 TLS、OAuth 登录和请求签名类流程出错。建议保持系统时间准确; 是否代理 NTP 取决于你的网络环境和客户端能力。
另外澄清一个流传较广的说法: 有教程称「Claude Code 通过 NTP 判断你的时区」, 因此必须代理 NTP。这在协议层面就不成立 —— NTP 报文只传 UTC 时间戳, 根本没有时区字段; 时区来自操作系统本地设置。官方网络要求里也通篇没有 NTP。真正会暴露时区的是浏览器与系统的 Intl / getTimezoneOffset 接口, 代理 NTP 对此毫无作用。
配置格式示例 (域名清单)
# 核心 (DOMAIN-SUFFIX 已覆盖各自全部子域名) DOMAIN-SUFFIX,anthropic.com,Claude DOMAIN-SUFFIX,claude.ai,Claude DOMAIN-SUFFIX,claude.com,Claude DOMAIN-SUFFIX,clau.de,Claude DOMAIN-SUFFIX,claudeusercontent.com,Claude # 安装 / 插件 / 文档 DOMAIN-SUFFIX,registry.npmjs.org,Claude DOMAIN,storage.googleapis.com,Claude DOMAIN,raw.githubusercontent.com,Claude DOMAIN,formulae.brew.sh,Claude # 遥测 (可用环境变量关闭; 注意是独立域名, 后缀匹配抓不到) DOMAIN,http-intake.logs.us5.datadoghq.com,Claude DOMAIN,browser-intake-us5-datadoghq.com,Claude # IP / ASN 兜底 IP-CIDR,160.79.104.0/21,Claude,no-resolve IP-CIDR6,2607:6bc0::/32,Claude,no-resolve IP-ASN,399358,Claude,no-resolve
注: DOMAIN-SUFFIX 已覆盖各自全部子域名, 无需重复罗列; 两个 Datadog intake 是独立可注册域名, 必须精确匹配。CIDR/ASN 建议加 no-resolve 跳过反查, 降低匹配开销。
验证
配置完后通过这几个工具验证流量没漏掉: