Skip to content

Claude的安装与配置 ​

  1. 在cstone上购买一个主机并配置vps,这一步主要是为了搭建一个比较纯净的vpn环境,如果你已经有比较干净的vpn了,可以略过这一步:

    1. 检测自己的网络环境是否足够干净:https://ip.net.coffee/claude/:

      1. 如果DNS泄露,下载并安装workbuddy帮你处理
      2. 如果WebRTC UDP检测泄露,可以在Chrome中安装WebRTC network limiter插件;
      3. 最好将时区调整到和代理IP同样的时区;
      4. 最好将语言调整成和代理IP地区官方使用的语言。
  2. 访问cstone并购买一个vps(虚拟服务器):https://www.cstonecloud.com/login,选择基础1核1G版本即可,大概55元/月。

  3. 下载并安装workbuddy,使用下面的提示词参考让workbuddy帮你在服务器上配置vpn的服务,提示词中的部分参数注意按照你自己的服务器参数调整输入:

markdown
你是运维执行者。请在一台全新的 CstoneCloud Debian 12 VPS 上,按下面的规格一次性部署「Trojan-TLS VPN + 带密码 SOCKS5 + 订阅服务」,全部完成并验证通过后,按「最终输出」格式交付。中途不要停下来征询,只有 SSH 无法登录、端口被云厂商封禁、证书签发失败三种情况才停下并报告原因。

### 一、输入参数

- 服务器 IP:【38.x.x.x】
- SSH:`root@【IP】:22`,本地私钥 `~/.ssh/id_ed25519`
- 使用者标识:【你的名字的英文,比如xuxiaole】(用于 Trojan 用户 email、节点名、订阅路径)
- 节点名:【Cstone-你的名字】
- Trojan 端口:【9443】
- SOCKS5 端口:【10808】(若与已有服务冲突,改用 20000–60000 的随机高位端口)
- SOCKS5 来源限制:【不限制】
- 订阅端口:【443】
- 出口:全部直连,不配置 WARP

### 二、部署规格

1. **系统基线**
   - `apt update && apt upgrade -y`,安装 `curl socat cron openssl python3 ca-certificates`。
   - 开启 BBR:写入 `/etc/sysctl.d/99-bbr.conf`(`net.core.default_qdisc=fq`、`net.ipv4.tcp_congestion_control=bbr`),`sysctl --system` 后确认生效。
   - 若启用了防火墙(ufw / nftables),放行 `80/tcp`、订阅端口、Trojan 端口、SOCKS5 端口(TCP+UDP)。

2. **IP 证书**
   - 用 acme.sh 以 standalone 模式(占用 `80` 端口)为服务器 IP 签发 Let's Encrypt 短期 IP 证书;签发前先查当前 acme.sh 版本的官方文档确认 IP 证书 / shortlived profile 的准确参数,不凭记忆写参数。
   - 证书安装到 `/root/cert/ip/`(`fullchain.pem`、`privkey.pem`),`--reloadcmd` 设为 `systemctl restart xray clash-yaml`。
   - 确认 acme.sh 的 cron 自动续期已存在;`80` 端口保持空闲,不要被其他服务占用。

3. **Xray(`xray.service`)**
   - 用 XTLS 官方安装脚本安装最新版 Xray,配置文件 `/usr/local/etc/xray/config.json`。
   - inbound 1:Trojan,端口【Trojan 端口】,`security: tls`,证书指向 `/root/cert/ip/`,单个 client,`email` 为 `【使用者标识】@cstone-trojan`,密码用 `openssl rand -hex 16` 生成。
   - inbound 2:SOCKS5,端口【SOCKS5 端口】,`auth: password`,`udp: true`;账号为 `socks_` + 6 位随机十六进制,密码 `openssl rand -hex 16`;若填写了来源限制,用路由规则或防火墙只放行指定 IP。
   - outbound:`freedom` 直连为默认出口,另加 `blackhole`;路由屏蔽私网 IP 段(`geoip:private` → blackhole)。
   - 改完配置先跑 `xray run -test -config /usr/local/etc/xray/config.json`,通过后再 `systemctl enable --now xray`。

4. **订阅服务(`clash-yaml.service`)**
   - 用 Python 标准库写 `/usr/local/clash-yaml-server/server.py`(不引第三方依赖),HTTPS 监听【订阅端口】,复用 `/root/cert/ip/` 证书。
   - 只响应路径 `/【使用者标识】`,其他路径返回 404。
   - 按 User-Agent 返回:
     - 默认(含 Clash / Clash Verge / Mihomo):Clash YAML,内容如下结构:
       ```yaml
       mixed-port: 7890
       allow-lan: false
       mode: rule
       log-level: info
       ipv6: false
       proxies:
         - name: "【节点名】"
           type: trojan
           server: 【IP】
           port: 【Trojan 端口】
           password: <Trojan 密码>
           network: tcp
           udp: false
           sni: 【IP】
           skip-cert-verify: false
       proxy-groups:
         - name: PROXY
           type: select
           proxies: ["【节点名】"]
       rules:
         - IP-CIDR,【IP】/32,DIRECT,no-resolve
         - MATCH,PROXY
       ```
     - UA 含 Shadowrocket / V2Ray / Quantumult / Surge / Loon:返回 base64 编码的 `trojan://<密码>@【IP】:【Trojan 端口】?security=tls&sni=【IP】&type=tcp#【节点名】`。
   - Trojan 密码直接从 `config.json` 读取,不在 `server.py` 里再写一份,保证单一真源。
   - 写 systemd unit,`Restart=always`,`systemctl enable --now clash-yaml`。

### 三、验收(全部通过才算完成)

在服务器上:
- `systemctl is-active xray clash-yaml` 均为 `active`;`ss -lntup` 能看到 Trojan、SOCKS5(TCP+UDP)、订阅端口在监听。
- `sysctl net.ipv4.tcp_congestion_control` 输出 `bbr`。
- `openssl x509 -in /root/cert/ip/fullchain.pem -noout -subject -enddate` 证书主体为该 IP、未过期。

在本机:
- SOCKS5:`curl -s --socks5-hostname <账号>:<密码>@【IP】:【SOCKS5 端口】 https://api.ipify.org` 返回【IP】;同样方式访问 `https://www.google.com` 返回 HTTP 200。
- SOCKS5 鉴权:不带账号密码访问应失败。
- 订阅:`curl -s https://【IP】:【订阅端口】/【使用者标识】` 返回合法 Clash YAML(证书校验通过,不加 `-k`);`curl -s -A Shadowrocket ...` 返回可解码的 `trojan://` 链接;错误路径返回 404。
- Trojan:把订阅导入本机 Clash Verge(或用 mihomo 临时实例)连通后,访问 `https://www.google.com` 返回 200、`https://api.ipify.org` 返回【IP】。验证完恢复本机原有代理配置。

### 四、凭据处理

- 所有密码在服务器上生成,不写进任何 Git 仓库、不放进 URL 参数。
- 本机为 macOS 时,存入钥匙串:
  - `security add-generic-password -U -s baixucode-cstone-<标识>-trojan -a <标识>@【IP】:【Trojan 端口】 -w <密码>`
  - `security add-generic-password -U -s baixucode-cstone-<标识>-socks5 -a <账号>@【IP】:【SOCKS5 端口】 -w <密码>`
- 非 macOS 时存入系统凭据管理器,并在最终输出里说明存放位置。
- 若本机存在 `~/baixucode/_infra.md`,按其中现有 Cstone 小节的格式追加本台服务器信息(只写钥匙串 service / account 名,不写明文密码)。

### 五、最终输出(严格按此格式)

```
【Cstone VPN 已就绪】
服务器:【IP】(Debian 12,出口直连)

VPN(Trojan-TLS)
- 订阅地址:https://【IP】:【订阅端口】/【使用者标识】
  · Clash / Clash Verge / Mihomo:直接导入订阅
  · Shadowrocket / Quantumult / Surge / Loon / V2Ray:直接导入同一订阅地址
- 单节点链接:trojan://<密码>@【IP】:【Trojan 端口】?security=tls&sni=【IP】&type=tcp#【节点名】

SOCKS5
- 地址:【IP】
- 端口:【SOCKS5 端口】
- 账号:<账号>
- 密码:<密码>
- 协议:TCP + UDP;来源限制:<不限 / 指定 IP>
- 一行格式:socks5://<账号>:<密码>@【IP】:【SOCKS5 端口】

凭据存放:<钥匙串 service 名 / 凭据管理器位置>
验收结果:<逐项列出上面验收的 pass/fail 与关键输出>
运维提示:修改配置先 `xray run -test -config /usr/local/etc/xray/config.json` 再重启;证书由 acme.sh 自动续期,需保持 80 端口空闲。
```
  1. 下载并安装clash verge,使用虚拟网卡模式,

  2. 在通过clash verge 的规则模式,模拟一个美国的环境:

    1. 将默认语言设置为英文;
    2. 将时区调整到和VPN一致;
    3. 按照一下提示词调整clash verge的规则配置,以保障Claude按照预期走vpn流量
bash
你的任务:在这台电脑上把 Clash Verge Rev 配置成和我另一台电脑完全一致。全程直接修改配置文件,不要只给我操作说明。只有需要我在图形界面里点击或授权时才停下来告诉我。

## 0. 准备

1. 判断操作系统,找到 Clash Verge Rev 的配置目录(下文记作 $DIR):
   - macOS:~/Library/Application Support/io.github.clash-verge-rev.clash-verge-rev
   - Windows:%APPDATA%\io.github.clash-verge-rev.clash-verge-rev
   - Linux:~/.local/share/io.github.clash-verge-rev.clash-verge-rev
2. 没有安装 Clash Verge Rev 时,先让我去 GitHub clash-verge-rev/clash-verge-rev 的 Releases 页面下载安装,内核选 verge-mihomo。
3. 改任何文件前,把 $DIR 下的 profiles/、profiles.yaml、dns_config.yaml、verge.yaml 备份到 $DIR/.bak-<当前日期时间>/。
4. 让我先在 Clash Verge 图形界面的"订阅"页导入订阅:
   URL:【你的订阅地址】
   名称:xuxiaole
   打开自动更新,导入后设为当前订阅。
   我确认完成后再继续。
5. 读取 $DIR/profiles.yaml,找到 name 为 xuxiaole 的 remote 订阅,记下它 option 里 rules 字段对应的 uid(下文记作 $RULES_UID)。再确认全局扩展的 uid 为 Merge(文件 Merge.yaml)和 Script(文件 Script.js)。
6. 修改配置文件前先完全退出 Clash Verge,避免它运行时把文件覆盖回去。

## 1. 订阅的规则扩展:写入 $DIR/profiles/<$RULES_UID 对应的文件名>

```yaml
# Profile Enhancement Rules Template for Clash Verge

prepend:
  - DOMAIN-SUFFIX,gov.cn,DIRECT
  - DOMAIN-SUFFIX,qcc.com,DIRECT
  - DOMAIN-SUFFIX,qichacha.com,DIRECT
  - DOMAIN-SUFFIX,tianyancha.com,DIRECT
  - DOMAIN-SUFFIX,aiqicha.baidu.com,DIRECT
  - DOMAIN-SUFFIX,tmkoo.com,DIRECT
  - DOMAIN-SUFFIX,quandashi.com,DIRECT
  - DOMAIN-SUFFIX,cnnic.cn,DIRECT
  - DOMAIN-SUFFIX,cnnic.net.cn,DIRECT
  - DOMAIN-SUFFIX,weixin.sogou.com,DIRECT
  - DOMAIN-SUFFIX,beian.gov.cn,DIRECT

append: []

delete: []
```

订阅自己的 merge / script / proxies / groups 扩展保持空模板,不要改。

## 2. 全局扩展配置:写入 $DIR/profiles/Merge.yaml

```yaml
# 全局 Merge 只做普通 YAML 深合并,不解析 prepend-rules;分流规则一律写在 Script.js
profile:
  store-selected: true
```

## 3. 全局扩展脚本:写入 $DIR/profiles/Script.js

```js
// 规则模式下的定向分流:
// 1) Anthropic / Claude 全域名强制走代理组,并拒绝其 UDP(节点 udp:false,防止 QUIC 从本地 IP 直出)
// 2) DeepSeek、滴滴、QQ 邮箱、百度、小米路由器、向日葵、微信直连

function pickProxyGroup(config) {
  const groups = config["proxy-groups"] || [];
  if (!groups.length) return null;
  const names = groups.map((g) => g.name);
  const preferred = ["PROXY", "EEVPN", "节点选择", "手动切换", "代理模式"];
  for (const name of preferred) {
    if (names.indexOf(name) !== -1) return name;
  }
  const selector = groups.filter((g) => g.type === "select")[0];
  return (selector || groups[0]).name;
}

function prependMissing(rules, candidates) {
  const missing = candidates.filter((rule) => rules.indexOf(rule) === -1);
  rules.unshift.apply(rules, missing);
}

function main(config, profileName) {
  const rules = config.rules || (config.rules = []);

  prependMissing(rules, [
    "DOMAIN-SUFFIX,deepseek.com,DIRECT",
    "DOMAIN-SUFFIX,deepseek.cn,DIRECT",
    "DOMAIN-SUFFIX,deepseek.ai,DIRECT",
    "DOMAIN-SUFFIX,deepseekapi.com,DIRECT",
    "DOMAIN-SUFFIX,didichuxing.com,DIRECT",
    "DOMAIN-SUFFIX,xiaojukeji.com,DIRECT",
    "DOMAIN-SUFFIX,didistatic.com,DIRECT",
    "DOMAIN-SUFFIX,udache.com,DIRECT",
    "DOMAIN-SUFFIX,mail.qq.com,DIRECT",
    "DOMAIN-SUFFIX,imap.qq.com,DIRECT",
    "DOMAIN-SUFFIX,pop.qq.com,DIRECT",
    "DOMAIN-SUFFIX,smtp.qq.com,DIRECT",
    "DOMAIN-SUFFIX,qqmail.com,DIRECT",
    "DOMAIN-SUFFIX,foxmail.com,DIRECT",
    "DOMAIN-SUFFIX,mailcdn.qq.com,DIRECT",
    "DOMAIN-SUFFIX,ptlogin2.qq.com,DIRECT",
    "DOMAIN-SUFFIX,baidu.com,DIRECT",
    "DOMAIN-SUFFIX,baidu.cn,DIRECT",
    "DOMAIN-SUFFIX,baidustatic.com,DIRECT",
    "DOMAIN-SUFFIX,bdstatic.com,DIRECT",
    "DOMAIN-SUFFIX,bdimg.com,DIRECT",
    "DOMAIN-SUFFIX,bcebos.com,DIRECT",
    "DOMAIN-SUFFIX,baidubce.com,DIRECT",
    "DOMAIN,miwifi.com,DIRECT",
    "DOMAIN-SUFFIX,miwifi.com,DIRECT",
    "PROCESS-NAME,AweSun,DIRECT",
    "PROCESS-NAME,AweSun_Helper,DIRECT",
    "PROCESS-NAME,AweSun_Desktop,DIRECT",
    "PROCESS-NAME,awesun-mcp-server,DIRECT",
    "DOMAIN-SUFFIX,oray.com,DIRECT",
    "DOMAIN-SUFFIX,oray.cn,DIRECT",
    "DOMAIN-SUFFIX,oray.net,DIRECT",
    "DOMAIN-SUFFIX,orayimg.com,DIRECT",
    "DOMAIN-SUFFIX,sunlogin.cn,DIRECT",
    "DOMAIN-SUFFIX,sunlogin.net,DIRECT",
    "PROCESS-PATH-REGEX,^/Applications/WeChat\\.app/,DIRECT",
    "DOMAIN-SUFFIX,weixin.qq.com,DIRECT",
    "DOMAIN-SUFFIX,wx.qq.com,DIRECT",
    "DOMAIN-SUFFIX,weixin110.qq.com,DIRECT",
    "DOMAIN-SUFFIX,wechat.com,DIRECT",
    "DOMAIN-SUFFIX,servicewechat.com,DIRECT",
    "DOMAIN-SUFFIX,weixinbridge.com,DIRECT",
    "DOMAIN-SUFFIX,wechatpay.com,DIRECT",
    "DOMAIN-SUFFIX,tenpay.com,DIRECT",
    "DOMAIN-SUFFIX,qpic.cn,DIRECT",
    "DOMAIN-SUFFIX,qlogo.cn,DIRECT",
  ]);

  // Anthropic / Claude 最后 unshift,确保位于规则表首位
  const group = pickProxyGroup(config);
  if (group) {
    const domains = [
      "claude.ai",
      "claude.com",
      "claudeusercontent.com",
      "anthropic.com",
      "anthropic.ai",
      "anthropicusercontent.com",
    ];
    prependMissing(rules, domains.map((d) => "DOMAIN-SUFFIX," + d + "," + group));
    const orList = domains.map((d) => "(DOMAIN-SUFFIX," + d + ")").join(",");
    prependMissing(rules, ["AND,((NETWORK,udp),(OR,(" + orList + "))),REJECT"]);
  }

  return config;
}
```

在 Windows 上,脚本需要按下面修改:
- 把 "PROCESS-PATH-REGEX,^/Applications/WeChat\\.app/,DIRECT" 替换为 "PROCESS-NAME,WeChat.exe,DIRECT"、"PROCESS-NAME,Weixin.exe,DIRECT"、"PROCESS-NAME,WeChatAppEx.exe,DIRECT" 三条。
- 向日葵的 4 条 PROCESS-NAME 规则,进程名都加 .exe 后缀。
- 安装后用任务管理器核对实际进程名,以实际名称为准。

在 Linux 上,删除微信和向日葵的进程规则,保留域名规则。

## 4. DNS 覆写:写入 $DIR/dns_config.yaml

```yaml
dns:
  enable: true
  ipv6: false
  listen: :53
  enhanced-mode: fake-ip
  fake-ip-range: 198.18.0.1/16
  fake-ip-range6: fdfe:dcba:9876::1/64
  fake-ip-filter-mode: blacklist
  fake-ip-filter:
  - '*.lan'
  - '*.local'
  - '*.arpa'
  - 'time.*.com'
  - 'ntp.*.com'
  - '+.market.xiaomi.com'
  - localhost.ptlogin2.qq.com
  - '*.msftncsi.com'
  - www.msftconnecttest.com
  - miwifi.com
  - '*.miwifi.com'
  - '+.oray.com'
  - '+.oray.cn'
  - '+.oray.net'
  - '+.sunlogin.cn'
  - '+.sunlogin.net'
  - '+.orayimg.com'
  default-nameserver:
  - system
  - 223.6.6.6
  - 8.8.8.8
  - 2400:3200::1
  - 2001:4860:4860::8888
  nameserver:
  - 8.8.8.8
  - https://doh.pub/dns-query
  - https://dns.alidns.com/dns-query
  proxy-server-nameserver:
  - https://doh.pub/dns-query
  - https://dns.alidns.com/dns-query
  - tls://223.5.5.5
  direct-nameserver: []
  direct-nameserver-follow-policy: false
  nameserver-policy:
    '+.deepseek.com':
    - https://dns.alidns.com/dns-query
    - https://doh.pub/dns-query
    '+.miwifi.com':
    - 192.168.31.1
    miwifi.com:
    - 192.168.31.1
  fallback: []
  fallback-filter:
    geoip: true
    geoip-code: CN
    ipcidr:
    - 240.0.0.0/4
    - 0.0.0.0/32
    domain:
    - +.google.com
    - +.facebook.com
    - +.youtube.com
  prefer-h3: false
  respect-rules: false
  use-hosts: false
  use-system-hosts: false
```

192.168.31.1 是我家小米路由器的地址。这台电脑的局域网网关不是 192.168.31.1 时,删除 miwifi 相关的两条 nameserver-policy,然后告诉我。

## 5. 应用设置:只改 $DIR/verge.yaml 中的以下键,其他键保持原样

```yaml
clash_core: verge-mihomo
enable_tun_mode: true
enable_system_proxy: false
enable_dns_settings: true
enable_builtin_enhanced: true
auto_close_connection: true
enable_auto_launch: false
enable_external_controller: false
verge_mixed_port: 7897
verge_redir_enabled: false
verge_socks_enabled: false
verge_http_enabled: false
```

另外在 verge.yaml 的 profile_dns_settings 下,为 xuxiaole 订阅的 uid 加上 enabled: true。

内核相关设置可以在图形界面"设置 → Clash 设置"里核对:
- 模式:规则模式(mode: rule)
- 局域网连接:关
- IPv6:开
- 统一延迟:开
- TUN:gvisor 栈,开启 auto-route、auto-detect-interface,关闭 strict-route,dns-hijack 为 any:53

## 6. 启动与验证

1. 重新打开 Clash Verge。第一次开启 TUN 时需要安装服务模式,提示我在界面里授权。
2. 在订阅页右键 xuxiaole,选择"更新",触发重新生成配置。
3. 读取 $DIR/clash-verge.yaml,核对 rules 段(脚本生成的规则排在订阅规则扩展之前):
   - 第 1 条是 AND,((NETWORK,udp),(OR,(...claude/anthropic 6 个域名...))),REJECT
   - 第 2–7 条是 6 个 Claude / Anthropic 域名 → PROXY
   - 接着依次是 DeepSeek、滴滴、QQ 邮箱、百度、miwifi、向日葵、微信的直连规则
   - 然后是第 1 步的 gov.cn 到 beian.gov.cn 共 11 条直连规则
   - 最后两条是 IP-CIDR,【你的服务器 IP】/32,DIRECT,no-resolve 和 MATCH,PROXY
   同时核对 tun.enable 为 true,dns 段与第 4 步一致。
4. 实测以下 3 项:
   - curl -I https://claude.ai 能通
   - curl https://ipinfo.io 显示的出口 IP 是 【你的服务器 IP】
   - 访问 baidu.com 走直连(在 Clash Verge 的"连接"页看到规则命中 DIRECT)
5. 最后汇报:改了哪些文件、规则核对结果、3 项实测结果,以及因操作系统不同做了哪些改动。
  1. 如果你之前有被封禁的Claude账号,需要先清理掉Claude的使用痕迹,这一点可以让Codex/workbuddy代劳,不过关键的几点:

    1. 浏览器及其插件都需要退出登录,并清除Claude的使用痕迹。
    2. 删除设备指纹。
    3. 清理macOS 钥匙串,删掉 Keychain 里的 Claude Code-credentials 与 Claude Safe Storage。
    4. iPhone 必须彻底删除 App 重装。
  2. 通过https://ip.net.coffee/claude/ 检测环境的纯净度,尽量让所有项目都变绿。

  3. 登录claude.ai,注册一个Claude账号;

  4. 在本机电脑下载安装并登录Claude客户端。

  5. (可选)注册、认证、充值一个境外银行卡,可选银行卡有biyapay(优先推荐),bybit,starryblu,bitget wallet:

    1. biyapay的注册教程参考:https://www.youtube.com/watch?v=Hjx1cCEu_bE
    2. 需要通过虚拟货币入金,最简单的方式就是找个有虚拟货币的人,你给他人民币,他给你U。
  6. 通过境外银行卡为Claude充值,接下来就可以开始使用了Claude code了。