AI工具:Claude / ChatGPT / Codex 静态IP配置教程

用 Claude、ChatGPT,或者在终端里跑 Claude Code、Codex,最怕的是出口 IP 一会儿一个地区。这篇教程教你把 TTSOP 静态住宅IP接到 Clash 上:只有 AI 的流量走你独享的静态IP,其他网站照旧走原来的线路。

AI 工具走静态住宅IP的链路示意图

配置准备

  • 已在 TTSOP 购买 Claude / OpenAI 支持地区 的静态住宅IP,例如美国、日本、新加坡、中国台北、英国、德国。香港、澳门、中国大陆的IP不能用,这三个地区不在两家的支持名单内。不知道选哪个,看 AI工具网络解决方案
  • 电脑上装好 Clash Verge Rev(内核是 mihomo),并且已经导入你现有的机场或专线订阅,能正常访问油管等海外网站
  • 在控制台 静态IP 页面找到这条IP的 IP地址、端口、用户名、密码

静态住宅IP是 SOCKS5 账号密码连接,国内网络直接连不上,必须用你现有的海外线路做前置。下面的脚本做的就是这件事(链式代理)。

第一步:在 Clash 里加扩展脚本

在 Clash Verge Rev 的「订阅」页,右键你正在使用的订阅,选择「扩展脚本」(不同版本菜单名可能略有差别),把里面的内容整段替换成下面这段:

// TTSOP:让 Claude / ChatGPT / Codex 走静态住宅IP(链式代理)
function main(config) {
  // ① 改成 TTSOP 控制台「静态IP」里你这条IP的信息
  const STATIC_IP = {
    name: 'TTSOP静态IP',
    type: 'socks5',
    server: '203.0.113.10',
    port: 12345,
    username: 'your-username',
    password: 'your-password',
    // ② 改成你订阅里用来选海外节点的那个策略组的名字(一字不差)
    'dialer-proxy': '节点选择'
  };

  // ③ 这些域名走静态IP,其他网站照旧走原来的线路
  const AI_DOMAINS = [
    'anthropic.com',
    'claude.ai',
    'claude.com',
    'openai.com',
    'chatgpt.com',
    'oaistatic.com',
    'oaiusercontent.com',
    'ipinfo.io' // 用来检查出口IP,配置好后可以删掉
  ];

  config.proxies = config.proxies || [];
  config.proxies.push(STATIC_IP);
  config.rules = config.rules || [];
  config.rules.unshift(
    ...AI_DOMAINS.map((d) => `DOMAIN-SUFFIX,${d},${STATIC_IP.name}`)
  );
  return config;
}

需要改的只有三处:

  1. server / port / username / password:换成控制台里你这条IP的信息(上面的 203.0.113.10 只是示例地址)
  2. dialer-proxy:换成你订阅里选海外节点的策略组名字。打开 Clash 的「代理」页,最上面那个用来选节点的组,名字常见的有「节点选择」「🚀 节点选择」「Proxy」等,连表情符号在内要一字不差
  3. 保存后回到「订阅」页,点一下当前订阅让配置重新生效

这样设置以后,访问 Claude、OpenAI 时流量先经过你的机场节点,再从静态住宅IP出去;Claude 和 OpenAI 看到的始终是静态IP。

第二步:让浏览器走 Clash

在 Clash Verge Rev 首页打开 系统代理(或 TUN 模式),浏览器不用做任何设置。打开 ipinfo.io,显示的 IP 应该是你买的静态IP,而不是机场节点的IP。确认后就可以正常打开 claude.ai 和 chatgpt.com。

第三步:让 Claude Code / Codex 走 Clash

命令行工具不一定读系统代理,需要用环境变量告诉它们走 Clash。先在 Clash Verge Rev 的「设置」里找到 混合端口(Mixed Port)的数字,下面以 7897 为例,换成你自己的。

终端里设置代理并检查出口IP

macOS / Linux

在终端里执行(每次新开终端都要执行一次;想一直生效,就把这两行加进 ~/.zshrc 或 ~/.bashrc):

export HTTPS_PROXY=http://127.0.0.1:7897
export HTTP_PROXY=http://127.0.0.1:7897

Windows(PowerShell)

$env:HTTPS_PROXY="http://127.0.0.1:7897"
$env:HTTP_PROXY="http://127.0.0.1:7897"

Claude Code:写进配置,一劳永逸

Claude Code 支持在 ~/.claude/settings.json(Windows 是 C:\Users\你的用户名\.claude\settings.json)里写环境变量,这样不用每次 export:

{
  "env": {
    "HTTPS_PROXY": "http://127.0.0.1:7897",
    "HTTP_PROXY": "http://127.0.0.1:7897"
  }
}

如果文件里已经有别的设置,只把 "env" 这一段合并进去。启动 claude 后输入 /status,能看到 Proxy 一行显示你填的地址。

注意:Claude Code 不支持 SOCKS 代理,不要把静态IP的 socks5 地址直接填给它,一定要像上面这样指向 Clash 的 HTTP 端口,由 Clash 转给静态IP。

Codex

命令行版 Codex 同样用上面的 HTTPS_PROXY / HTTP_PROXY,写 http:// 地址。不要用 ALL_PROXY=socks5://...,部分版本走 SOCKS 会连接失败。

Codex 桌面版等图形界面程序不一定会读取终端里设置的环境变量,这种情况直接打开 Clash 的 TUN 模式 最省事。

第四步:检查出口

设置好代理变量后,在同一个终端里执行:

curl -s https://ipinfo.io/json

返回的 ip 应该是你买的静态IP,country 是你买的国家。是住宅属性的判断方法见 如何验证IP是住宅属性。确认无误后,就可以把脚本里的 'ipinfo.io' 那一行删掉。

常见问题排查

订阅更新失败,提示 dialer-proxy not found

报错类似:

proxy [TTSOP静态IP] dialer-proxy [节点选择] not found

说明脚本里 dialer-proxy 填的策略组名字和你订阅里的对不上。回到 Clash「代理」页,把组名原样复制过来(包括表情符号和空格)。

ipinfo 显示的还是机场节点的IP

  • 终端:确认在同一个终端窗口里执行过 export,端口和 Clash 的混合端口一致
  • 浏览器:确认 Clash 的系统代理或 TUN 已打开,并且订阅已重新加载过
  • 脚本保存后没有生效:在「订阅」页重新点一次当前订阅

连不上、超时

先按 如何判断静态IP是否故障 排查静态IP本身;再确认前置的机场节点能正常访问海外网站。

iPhone 上用 ChatGPT / Claude App

手机上的思路一样:静态IP接在你现有的海外线路后面,只是工具从 Clash 换成小火箭(Shadowrocket)。

  1. 准备一个外区苹果ID:国区 App Store 下载不到 ChatGPT、Claude 的官方 App,也下载不到小火箭。苹果ID的地区建议和静态IP一致,香港ID不适合(香港不在两家的支持地区内)。没有的话可以在 外区苹果ID 购买,注意小火箭是付费 App,本店苹果ID不含已购的小火箭
  2. 只在 App Store 里登录这个苹果ID,下载 ChatGPT / Claude 和小火箭;不要在系统「设置」里登录,也不要开 iCloud
  3. 在小火箭里填静态IP:按 苹果手机:住宅IP的配置教程 操作
  4. 检查出口:用 Safari 打开 ipinfo.io,显示的应该是你买的静态IP,然后再打开 ChatGPT / Claude App

使用建议

  • 地区保持一致:账号注册地、付款卡地区、IP 地区尽量一致
  • 不要频繁换IP:一个账号固定用一个静态IP,不要和别人共用
  • 遵守服务条款:静态IP只解决网络出口问题,请遵守 Claude、OpenAI 的使用条款和支持地区规定;我们不承诺任何账号不会被限制

还没有静态IP?到 AI工具网络解决方案 选一个支持地区。

遇到问题?

如果您在使用过程中遇到任何问题,请随时联系我们的客服团队获取帮助