一台 Windows 机器上,把 AI 产品家族的流量锁死在单一固定代理出口的完整实操记录。方法论来自「黑哥」的小白图解版指南,本页是按它落地后的实战报告——所有结论都有实测证据,包括真实掉线演练。已做脱敏处理:所有 IP、用户名、路径、订阅与节点信息均已替换为占位符。
本页面所有私人信息均已替换:固定出口 IP → 【你的固定出口IP】;真实公网 IP → 【你的真实公网IP】(它只在演练对照里出现,正常应该一次都不出现);用户目录 → %USERPROFILE%\;订阅名、节点名、机场名 → 占位描述。你照做时用自己机器的真实值替换即可。
用法很简单:① 把手册网址发给他 ② 把下面对应你情况的提示词整段复制给他 ③ 他说"开始"之前会先给你一份改动计划,你确认后再动手。提示词里已经写死了红线(不许擅自换节点、改一处验一处、做不到要如实说),所以可以放心让他跑。
你是我的 Clash / mihomo 配置工程师兼安全工程师。 目标:按下面这份手册,为我的 Windows 机器把「Claude 产品家族的全部流量」锁死在一个固定代理出口上,做到一句话—— 连不上,可以;真实 IP 直连,不行。 【第 0 步 · 先读手册,不要凭印象动手】 1. 先完整读取这个网址的全部正文: https://www.heigeai.com/claude/ 注意:它是 JS 单页应用,正文在 JS bundle 里(页HTML只是空壳)。如果直接抓只拿到几 KB 的空壳,就找出页面引用的 /assets/*.js,下载后用正则提取中文文本再读。读不到全文就不要往下走。 2. 读完先给我一份不超过 15 行的计划:你要做哪几件事、每件事会改我机器的哪个文件、哪些操作有风险、改坏了怎么退回。 3. 等我回复「开始」再动手。在收到之前,除了只读的审计之外,什么都不要改。 【硬红线(违反任何一条就停下来问我)】 - 我的代理节点和出口由我决定。你可以告诉我「你现在用的是哪个节点、出口 IP 是多少」,但绝对不要擅自切换节点、改订阅、换出口。需要换就先问我。 - 动手前先完整备份 Clash Verge 的配置目录(profiles/、verge.yaml、config.yaml 等),备份目录带日期。 - 每改一处配置,立刻验证三件事:① 代理核心还在跑 ② TUN 网卡还在 ③ 出口 IP 还是原来那个。任何一项不对,立即回滚到上一步,然后告诉我发生了什么。(我有过一次教训:改完没验证,整个代理配置失效、TUN 消失,机器裸奔了十几分钟。) - 不要为了省事把节点名直接写进规则。必须用「专用策略组」把出口身份和节点名解耦——这样订阅更新改了节点名时,只会表现为探测失败并被明确报告,而不是整份配置崩掉。 - 不要用「装随机指纹插件」「改 WebGL 字符串」这类操作冒充防封。指纹治理的原则是保持真实稳定。 【要你做的八件事】 1. 审计:先告诉我我现在的代理栈(客户端和核心版本、TUN 开关状态、订阅结构、现有规则)、防火墙状态、浏览器、Claude 客户端、隐私开关、IPv6 状况。先看清起点再改。 2. 专用策略组:在 Clash Verge 的「Profile Enhancement → groups」里 append 一个 select 类型的组(例如叫 Claude),只放一个成员 = 我现在选定的那个固定节点。组内不要 DIRECT、不要自动回落、不要用 url-test / fallback。 注意:不要写在订阅 merge 文件的 proxy-groups 里——merge 会按索引覆盖订阅自带的分组,可能让整个代理配置失效。 3. 围墙(TUN):确保 TUN 开启,stack=gvisor、strict-route=true、auto-route=true、DNS 劫持开启、fake-ip 开启、全局 IPv6 关闭。 4. 规则:用「Profile Enhancement → Script(JavaScript)」把规则前置到 rules 最前面,顺序是:进程规则 → 官方域名 → 关键词兜底 → 出口探测域名 → 其他服务。至少覆盖 claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.com / sentry.io,再加 DOMAIN-KEYWORD,claude 和 DOMAIN-KEYWORD,anthropic 做兜底。 注意:merge 文件的 prepend-rules 是死键,GUI 不会内联它,必须写在 Script 里。 5. DNS:把这些域名的 DNS 解析也固定走同一个专用组(DoH 走代理侧),避免解析出口漂移。 6. 专用浏览器:新建一个独立资料目录的浏览器快捷方式,显式指定本地代理端口,并禁用非代理 UDP(WebRTC)。要求:代理端口死了就打不开页面,绝不回落直连。我日常用的浏览器不受影响。 7. 启动预检 + 常驻守卫:写一个预检脚本(启动 Claude 前先探测出口,不对就拒绝启动并弹窗说明原因)和一个常驻检查(用计划任务,检查 TUN / 端口 / 出口身份,异常就停掉 Claude 进程并告警)。 守卫必须「按需化」:我不用 Claude 的时候它直接退出,不要常驻占资源。请实测并告诉我空闲时每次检查花多少 CPU 时间。 8. 演练(必须真的做,不能只写方案): - 出口身份:经代理探测的出口 = 我选定的那个固定出口。 - 非代理程序:用不走系统代理的方式访问测试站点,出口应当同样被收编,不能是我的真实公网 IP。 - IPv6 和 UDP 分别单独测(UDP 可以用 STUN 探测,它就是 WebRTC 拿到你公网地址的那套协议)。 - 真实掉线:停掉代理核心几分钟,观察会不会出现真实 IP 直连,然后自动恢复。 - 新域名不例外:把一个无凭据的测试程序改名为 claude 开头,去访问一个不在名单里的域名(最好挑你规则里本来就走直连的那种),确认出口仍然是被收编的固定出口。 所有演练用无凭据、无账号的测试,不要拿我的真实账号去冒险。演练过程和结论写进报告。 【交付】 1. 一份 HTML 报告(暗色主题):审计前后对比、架构图、逐项配置与改动位置、每项怎么验收、演练记录(含失败与回滚)、与手册的符合度对照(达标的列证据,没做到的列原因)、已知边界。 2. 所有脚本放在一个独立目录(例如 %USERPROFILE%\ClaudeGuard\),报告里写清楚每个文件干什么、怎么手动跑。 3. 最后给我一段「日常怎么用」的 SOP:点哪个图标、多久看一次、看到告警怎么办、多久演练一次。 【风格要求】 - 不粉饰:没做到的就写没做到,并说清楚风险由谁承担。 - 每个结论都要有实测证据,不要写「应该可以」。 - 遇到你解决不了的环境限制(比如防火墙改不动),如实告诉我并给替代方案,不要偷偷降级还当成完成。
我不使用 Windows + Clash Verge Rev 这套组合。我的代理环境是: 【填写:操作系统 + 客户端名与版本 + 是否支持 TUN/系统扩展/全局接管 + 是否支持按进程或按应用做规则】 例如:macOS + Surge / macOS + ClashX Pro / iOS + Shadowrocket / Linux + 命令行 mihomo / sing-box。 请先完整读取这份手册的正文(它是 JS 单页应用,正文在 /assets/*.js 里,别只抓空壳 HTML): https://www.heigeai.com/claude/ 然后按同样的目标——「连不上可以,真实 IP 直连不行」——为我的环境做等价实现。 红线与提示词 A 相同:不许擅自换我的节点或出口;动手前先备份;每改一处立刻验证代理还活着;做不到就如实说,不要偷偷降级。 请重点回答我三件事: 1. 我的客户端能不能做到「围墙接管」(TUN / 系统扩展 / 全局路由)?如果不能,我差在哪一层?有没有退而求其次的方案,以及那个方案漏掉的是什么? 2. 能不能按「进程」或「应用」做规则?如果不能,用什么兜底(只按域名 + 关键词够不够),以及名单补不完的风险有多大? 3. 手册要求的那些演练,在我的环境里哪些还能做、哪些做不了?做不了的用什么替代验证? 最后给我一份 HTML 报告:我的环境能覆盖到哪几层、覆盖不到哪几层、每层缺口在什么情况下会真的咬到我。
我没时间做全套。请先读这份手册的正文(JS 单页应用,正文在 /assets/*.js 里,别只抓空壳 HTML): https://www.heigeai.com/claude/ 然后只帮我做三件事,每做一件当场验证一次: 1. 建一个只含单个固定节点、不含 DIRECT 的专用策略组,把 Claude / Anthropic 全家族域名指过去,并加上关键词兜底(DOMAIN-KEYWORD,claude 和 anthropic)。 2. 打开 TUN(或我客户端里等价的全局接管),并关闭 IPv6。 3. 设置遥测关闭开关(DISABLE_TELEMETRY、DISABLE_ERROR_REPORTING 之类,按我客户端实际支持的来)。 做完立刻跑一次出口核对:确认经代理的出口就是我选定的那个节点,并且我的真实公网 IP 不在任何结果里出现。 然后明确告诉我:我跳过了哪些层(启动预检 / 常驻守卫 / 专用浏览器 / 各类演练),这些缺口在什么情况下会真的咬到我,以及我什么时候应该回来补做。 不要安慰我,不要说「问题不大」。
做一次防封环境的月度演练核对。 1. 读取 %USERPROFILE%\ClaudeGuard\last-drill.txt(内容形如 2026-10)。 - 如果它等于当前年月 → 本月已经演练过,直接读 real_drill.txt 向我汇报关键结论(各项是否 PASS、最终出口是否回到固定出口),然后结束。 - 如果不等于当前年月 → 继续第 2 步。 2. 先确认没有演练正在跑(检查是否存在 drill-active.marker)。如果有,等它结束(最多 6 分钟)再读报告向我汇报。 3. 做一次掉线演练:停掉代理核心 3-5 分钟 → 验证这段时间内不会出现真实 IP 直连 → 恢复核心 → 确认出口回到我的固定出口、守卫状态回到 SAFE。 演练期间要告诉我会断网几分钟,让我先保存手上的东西。 4. 把报告写到 %USERPROFILE%\ClaudeGuard\real_drill.txt,并更新 last-drill.txt 为当前年月。 全程红线:不要改我的节点、不要改出口、不要动任何规则配置。 如果提权失败或演练中途出错,把错误写进 guard-log.txt 并如实告诉我,不要静默跳过。
【Claude / GPT 防封环境配置 · 小白图解版】 https://www.heigeai.com/claude/ 这是「黑哥」改编的图解指南,不用懂网络也能照着做。我自己按它把机器整套配好了, 另外附一份脱敏后的实操报告,以及一段可以直接丢给 AI 的提示词—— 你把网址和提示词一起发给你的 AI 助手,它就能在你机器上照做一遍,基本不用自己动手。 核心就一句话:连不上可以,真实 IP 直连不行。 做法是把 AI 流量锁死在一个固定出口:专用策略组(组内不放 DIRECT)+ 围墙接管(TUN)+ 进程/域名/关键词三级规则 + 启动预检 + 常驻守卫 + 定期演练。 GPT / ChatGPT 完全同理,把域名换掉就行。 提醒一句:这世上没有"免封"这回事。它做的是减少意外直连、防止配置漂移、少暴露不必要的信息; 账号结果由平台决定,路径由我们自己把关。
整套机制与产品无关,只要把"被保护对象"换成对应产品即可。同一个思路可以开多个专用组,各自锁自己的固定出口(或者共用同一个,看你习惯)。
| 配置项 | Claude | ChatGPT / GPT |
|---|---|---|
| 进程规则 | PROCESS-NAME-REGEX,(?i)^claude | 桌面端进程名(按实际填写);网页版靠专用浏览器 |
| 官方域名 | claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.com | chatgpt.com / openai.com / oaistatic.com / oaiusercontent.com / ab.chatgpt.com |
| 关键词兜底 | DOMAIN-KEYWORD,claudeDOMAIN-KEYWORD,anthropic | DOMAIN-KEYWORD,openaiDOMAIN-KEYWORD,chatgpt |
| 崩溃上报 | sentry.io | sentry.io(同样适用) |
| 遥测开关 | DISABLE_TELEMETRY / DISABLE_ERROR_REPORTING | 客户端内对应开关 + 系统级环境变量 |
| 其他 | 专用策略组、TUN、专用浏览器、预检、守卫、演练——完全通用,一套代码两处用 | |
原文是一部分篇的图解指南。以下是直接影响配置决策的核心内容,方便你还没看原文时先有个骨架。
手册开篇即声明:「以下经验也许有用,也许毫无用处」,没有任何免封保证。它能做的是:减少意外直连、防止配置漂移、少暴露不必要的信息;它不能做的是:推断平台的全部风控规则、承诺账号不被限制、拿某个标签(住宅 IP、信任分、时区一致)当护身符。账号结果由平台决定,路径由我们把关。
| 术语 | 比喻 | 配置含义 |
|---|---|---|
| IP 地址 | 门牌号 | 网站看到的「你从哪来」。代理能改变服务端看到的来源,但撤不回已记录的地址 |
| 代理 / 固定出口 | 快递代收点 | 专用策略组只放一个固定出口;选出口前核对地区、稳定性、日志政策 |
| 直连 | 家门口直寄 | 配置里的 DIRECT。故障底线:代理不可达时拒绝业务,不能悄悄走 DIRECT |
| 系统代理 | 门口告示 | 只约束「听话」的程序;不读系统配置的程序照样自己出门 |
| TUN | 一圈围墙 | 路由层接管流量,但仍要检查排除项、IPv6 和掉线行为 |
| DNS | 电话簿 | 纯代理模式下系统 DNS 返回真实地址可能是正常行为;TUN 模式要核对 dns-hijack 与 IPv6 |
| IPv6 | 侧门 | 只锁正门(IPv4)不够;IPv4 安全不能代替 IPv6 验收 |
| WebRTC | 对讲机 | UDP 可能绕过 HTTP 代理直接报出地址,需单独复核候选类型 |
| 浏览器指纹 | 长相笔迹 | WebGL/Canvas/字体/UA/时区的组合。保持真实稳定,不堆叠随机指纹插件 |
| 出站限制 / 防火墙 | 门卫 | 没通过检查的包裹一件也不许出门;必须在发包前拒绝,定时守卫只是补充 |
产品家族要访问多个域名,分五组管理:核心与登录(claude.ai / claude.com / anthropic.com / claudeusercontent.com / console.anthropic.com / statsig.anthropic.com / support.claude.com)、连接器与更新(安装器、更新进程、sentry.io 崩溃上报)、浏览器桥与内容(Datadog intake 遥测)、可选运行遥测、公共分发依赖。客户端一升级这张表还可能变,所以要用进程规则和关键词兜底「名单外」的新域名。
| 补救动作 | 修到了哪件事 | 没修到什么 |
|---|---|---|
| 改 WebGL 字符串 | 只改了「长相」里的一个字段 | IPv6 直连(门牌号)一点没修好;单字段伪造还可能和其他字段矛盾 |
| 清 Cookie | 清掉了本地记录 | 服务端历史(档案)撤不回 |
| 开无痕模式 | 不带出本地 Cookie | 不隐藏 IP;不能用于伪装「新设备」 |
每一个相关请求,从进程出发到抵达服务端,只走这一条路。
对应手册的施工图。每项都标注了改动位置、验收方式,以及哪些地方有坑。
Clash Verge 全量配置(profiles/、verge.yaml、config.yaml 等)+ 防火墙策略导出到带日期的备份目录。改坏了可原样退回。这一步不要省。
在 groups 增强配置里 append(注意:不能写在订阅 merge 文件里——merge 对 proxy-groups 按索引覆盖,会顶掉订阅自带的全部分组):
组内没有 DIRECT、没有自动回落。节点失效时连接快速失败——绝不悄悄改走别的出口,更不回退直连。换节点只改这一行,改完在 Verge 重新应用。
stack: gvisor、strict-route: true、auto-route、dns-hijack: any:53、ipv6: false、fake-ip 池 198.18.0.1/16。验收:TUN 适配器 Up;非代理程序(curl --noproxy "*")的出口与代理出口一致(被围墙收编)。
tun.dns-hijack 这个字段会被应用设置接管——你在 merge 或 Script 里再写一遍,它会弹提示「扩展配置或脚本写入了由应用设置接管的字段 tun.dns-hijack,这些值已被丢弃」。这个提示是无害的:Verge 自己生成的配置里本来就是 dns-hijack: [any:53],和你要设的一样。把那行删掉就不弹了,行为不变。规则写在 Script 增强配置里前置到 rules 最前面(同样注意:merge 文件的 prepend-rules 是死键,GUI 不会内联它):
同时这些域名的 DNS 解析(DoH)也固定走同一节点(#Claude),即使主组切换,解析出口也不漂移。验收:api.ipify.org(规则指向专用组)与 ifconfig.me(走默认规则)出口一致。
独立资料目录(零扩展、全新档案)+ 显式本地代理 + WebRTC 非代理 UDP 禁用:
设计要点:代理端口死亡时浏览器连接被拒、页面打不开,不会回落直连——这是「连不上,可以」在浏览器层的落地。日常浏览器完全不受影响(这是独立入口)。
预检脚本:桌面端或 CLI 启动前,经代理探测一次出口身份,与预期不符或超时即拒绝启动(exit 78)并弹窗说明原因。同时注入大小写两种代理环境变量。
计划任务(提权、登录时启动、每 3 分钟一次,经 wscript 包装器静默启动——不弹控制台窗口):检查 TUN 适配器 / 混合端口 / 出口身份三重状态;出口漂移或代理核心死亡时停止进程并弹窗告警;代理恢复后自动回到 SAFE。状态写 status.json,日志写 guard-log.txt(按大小轮转)。
只在你用的时候才干活:任务动作现在是一道门控。它先判断「有没有被保护程序在使用中」,没有就直接退出、根本不启动 PowerShell。只有四种情况才做完整检查:① 有对应进程;② 有 node 在跑 CLI;③ 专用浏览器在开着;④ 上次状态不是 SAFE(需要恢复)。四种场景均已实测。
| 项目 | 优化前 | 优化后 |
|---|---|---|
| 空闲(没在用) | 每次都启动 PowerShell 做全量检查 ≈ 2200 ms CPU / 分钟 | 门控 0.2 s 内退出,不启动 PowerShell ≈ 190 ms CPU / 次 |
| 检查里的最大开销源 | Get-NetAdapter 走 CIM,冷启动约 1000 ms | 改用 .NET NetworkInterface 枚举,约 30 ms |
| 运行时的完整检查 | ≈ 3100 ms 墙钟 / 2200 ms CPU | ≈ 1500 ms 墙钟 / ≈ 1090 ms CPU |
| 常驻内存 | 无常驻(进程用完即退) | 无常驻(同样用完即退,没有后台长驻进程) |
也就是说:不用的时候,它一分钟只花约 0.19 秒 CPU(≈单核 0.3%),且不占常驻内存;出口探测这类真正的网络动作,只在运行时才发生。这一点很重要——否则一个"为了安全"的守卫反而变成常驻负担,会让人想把它关掉。
| 开关 | 设置 | 说明 |
|---|---|---|
| DISABLE_TELEMETRY | =1(用户级) | 运行遥测 |
| DISABLE_ERROR_REPORTING | =1(用户级) | 错误上报(报错材料可能夹带路径/截图) |
| Windows 系统定位 | Denied | 按需授权;关闭不阻止服务端经 IP 推断大致地区 |
| CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 未设(可选) | 手册原文把它注释掉:范围太广,可能影响 Remote Control 等能力 |
| 模型改进 / 主动反馈 | 账户页自选 | 隐私选择,不是防封手段;提交反馈前先审查附带内容 |
[Environment]::GetEnvironmentVariable($v) 不带 scope 读的是进程继承值(可能是过时的旧值),要查注册表必须带 "User" 或 "Machine"。我因为没带 scope 误判过一次遥测开关没生效,实际用户级是 1。桌面客户端若是 MSIX 安装,开始菜单的入口改不了启动参数。做法是新建一个「安全启动」快捷方式:静默调用预检脚本 → 出口身份不符时弹窗告知原因并拒绝启动;通过则拉起原版应用。把这份快捷方式同时放进桌面和开始菜单,就不用改使用习惯了。
claude.exe(注意:磁盘上的可执行文件名可能是 claude-desktop.exe,运行时进程名和磁盘文件名不是一回事,别搞混),门控查询 Name LIKE 'claude%' 全部命中;WQL 的 LIKE 是大小写不敏感的。drill-active.marker,不锁不叫不杀进程——代理是故意停的,不算故障。StartWhenAvailable 保证关机错过也能补跑。手册要求:用无账号、无密钥的受控测试证明保护真的有效。以下是真实执行的演练,不是方案推演。
curl --noproxy "*" 直连尝试 → 出口仍是 【你的固定出口IP】(被围墙收编,未暴露 【你的真实公网IP】)用专用浏览器打开 browserleaks.com/webrtc:合格线 = 候选地址里不出现你的公网 IP,出现的公网 IP 只能是 【你的固定出口IP】。注意 mDNS 隐藏本地地址证明不了公网没泄漏,IPv4 / IPv6 / 候选类型都要看。换资料、换浏览器、升级后重测。
这是最可能真实发生的漂移场景:TUN 在、端口在、代理看着一切正常,但出口 IP 被换掉了(机场改节点名、订阅更新顶掉配置)。演练 D 走的是另一条路(TUN 消失 → BLOCKED),所以这条分支必须单独验证。
为什么不直接改配置来测:把预期出口临时改成假 IP,会让真实守卫在下一个周期判定漂移并杀掉正在使用的程序。所以改用干跑副本——复制一份守卫脚本,在里面强制注入假预期 IP、状态写到独立文件、杀进程与弹窗都降级为记日志。生产配置全程一个字节未动。
UDP 是最容易被忽略的一条旁路:它可能绕过 HTTP 代理直接报出地址。STUN 正是 WebRTC 拿你公网地址的那套协议,所以直接用它验证。
198.18.x.x)→ UDP 也被围墙接管
结果 6/6 样本一致(Google ×3 + Cloudflare ×3):映射地址均为 【你的固定出口IP】
VERDICT UDP 路径 = PASS —— 走受控出口,真实 IP 未暴露(端口每次不同属正常 NAT 行为)手册要求「故意把正在使用的组切成 DIRECT」看会暴露成什么样。这台机器上 enable_external_controller: false——没有运行时 API,切换只能改配置文件并重载核心,而这台机器有过「改配置 → TUN 死亡 → 整机裸奔」的前科。所以改用零配置改动的等价对照法。
思路:订阅规则里本来就有一条 GEOIP,CN,DIRECT(国内域名走直连)。拿它当"直连路径样本",同一个域名、同一台机器,只换发起进程的身份,看出口是谁。
| 频率 | 动作 |
|---|---|
| 需要时(不必每天) | 看一眼 status.json 的 state 与时间戳。注意:守卫改成按需化后,只在运行时才写这个文件,所以时间戳是「最近一次使用时的检查时间」,不是你打开文件的当下——别把它当成过期 |
| 每次变更后 | 换网、升级、唤醒、重启代理、插网卡 → 跑一次验收脚本(出口身份 + 非代理程序路径两项) |
| 每月(可自动化) | 计划任务触发 + 月门控(本月跑过就跳过,错过则下一个周期补跑)。手动跑也可以 |
改编自手册原版 24 项。勾选只记录人工检查进度,不自动认证网络安全;换网/升级后重新过一遍。
重新拉取手册原文逐条核对。下面不粉饰——达标列证据,差距列原因。
| 手册要求 | 状态 | 证据 |
|---|---|---|
| 专用组锁定单一出口,禁止自动退回 DIRECT | 达标 | select 单成员,无 DIRECT、无回落 |
| 围墙接管 + 检查排除项、DNS、IPv6 | 达标 | TUN 开(strict-route/gvisor/fake-ip/dns-hijack);curl -6 出口 = 固定出口,IPv6 被收编而非泄漏 |
| 新域名也不能获得例外 | 达标(强验证) | 演练 H:用改名进程访问本该直连的国内域名 → 出口仍是固定出口;同一域名换普通进程就是真实公网 IP。进程规则压过了 DIRECT 规则 |
| 专用浏览器隔离 | 达标 | 独立资料目录 + 显式本地代理,失败即断 |
| 未知状态拒绝新启动 | 达标 | 预检脚本出口不符即 exit 78 |
| 五类演练(掉线/状态机/漂移/UDP/直连对照) | 达标 | 演练 C/D/F/G/H 全部 PASS |
| 遥测开关 | 达标 | 遥测/错误报告变量已设(用户级) |
| 无意外直连例外 | 达标 | NO_PROXY / no_proxy 用户级与系统级均为空 |
| 手册要求 | 现状 | 说明 |
|---|---|---|
| 「任何新域名也不直连」要由业务进程的全目的地出站限制实现 | OS 层未落地 | 手册明确点名的一层。本机防火墙配置文件未启用(启用状态被环境秒级还原),现有相关规则全是 Allow 且不生效。 但演练 H 给出了实测补充:核心在线时进程规则压过了直连规则,连"规则判直连"的场景都被收编,所以"名单补不完"不成立。真正剩下的缺口只有一个:核心进程本身死掉的那一瞬——而演练 D 实测此时是直接黑洞,不是泄漏。是否还要再加一层进程级出站控制(第三方工具),属个人权衡 |
| 保持真实稳定的环境,不伪造「住在出口国」 | 自行定夺 | 手册反对的是"频繁改动"和"单字段伪造导致自相矛盾"。时区与区域应当内部自洽:要么全部与真实居住地一致,要么像有些人那样与常用出口地一致且长期使用。关键是别频繁改,也别出现"时区是 A、语言是 B"这种自相矛盾的混合状态 |
| 单独查 IDE、更新器、MCP、后台子进程的出口 | 已核对 | 若客户端数据目录内没有 MCP 配置文件,说明未配置 MCP 服务器,无额外出口需要单独管。若你配了 MCP,记得单独看它们的出口 |
| 把正在使用的组故意切成 DIRECT 做演练 | 已做(等价法) | 见演练 H:用零配置改动的等价对照拿到结论,不碰生产配置。若你的机器开了控制器 API,可以直接切,但务必先退出被保护程序 |
| 对 UDP / QUIC 单独演练 | 达标 | 演练 G:STUN 探测 6/6 样本映射地址均为固定出口 |
| CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC | 知情取舍 | 未设。手册原版把它注释掉:范围太广,可能影响 Remote Control 等能力 |
下面每一条都是真实踩出来的,不是理论。照着做之前先扫一眼,能省你几个小时。
| 问题 | 根因与处理 |
|---|---|
| 配置验证失败回退最小配置、TUN 消失(机器一度裸奔十几分钟) | merge 文件的 proxy-groups 按索引覆盖了订阅全部分组 → 组定义改用 groups 配置的 append;规则改用 Script.js 前置 |
merge 文件的 prepend-rules 完全不生效 | 它是死键,GUI 不会内联它。规则必须写在 Script 增强配置里用 config['rules'] = rules.concat(...) 前置 |
| 开代理时弹窗「扩展配置或脚本写入了由应用设置接管的字段 tun.dns-hijack,这些值已被丢弃」 | 无害。「TUN 模式」应用设置接管了这个字段,它生成的配置里本来就是 dns-hijack: [any:53],与你的意图一致。删掉自己写的那行即可,行为不变 |
| 防火墙启用状态约 1 秒被还原 | 该执行环境的限制(无第三方管家软件也一样)。Set-NetFirewallProfile 的「启用」与「默认出站策略」必须分两次调用,且要回读验证。若同样被还原,就接受降级方案 |
| 计划任务注册后消失 | RepetitionDuration=MaxValue 生成非法 XML 被调度服务丢弃 → 不要设这个参数 |
| 任务每分钟闪一次控制台窗口 | 动作不要直接调 powershell.exe。用 wscript.exe 跑一个 VBS 包装器(sh.Run ..., 0, False)静默启动 |
| VBS 脚本报 800A0408 | VBS 文件里有中文等非 ASCII 字节。VBS 必须纯 ASCII,注释也用英文 |
| PowerShell 脚本 exit 1 且无日志 | UTF-8 BOM 问题。用 PowerShell 7 的 Set-Content -Encoding UTF8 写出的是无 BOM 文件;而脚本若跑在 Windows PowerShell 5.1 下会按 GBK 解析中文 → 语法错误。必须显式写 BOM:[System.IO.File]::WriteAllText($path,$text,(New-Object System.Text.UTF8Encoding($true))) |
| 字符串全局替换把脚本搞挂 | 把 Show-Toast 全替换成 Write-Log 时,连 function Show-Toast(...) 定义行也改了,真日志函数被覆盖 → 日志全丢。改成只替换调用点 |
| 非管理员改不了提权任务(拒绝访问) | 任务以 RunLevel=Highest 注册。解法:复用任务自身的提权上下文——放一个一次性 marker 文件,门控脚本看到就调用修改脚本(子进程继承管理员权限),改完自动删 marker |
| 以 RunAs 提权启动 powershell.exe 被拦截(cmd 的 RunAs 正常) | 改用已有的高权限计划任务通道:Start-ScheduledTask -TaskName ...,无需 UAC 即可静默提权 |
| 门控「≤7 号才跑」导致错过首周一后整月不再补跑 | 触发源是每周一(可能落在 5/12/19/26 号)→ 取消日期窗口,改为「本月没跑过就跑」 |
| 诊断脚本读到出口为空,误判成"假 SAFE" | 状态文件里实际出口的字段名是 exitIp(预期值才叫 expectedExitIpv4)。读错字段会得到空值 |
| 进程探测测试得出错误结论 | 用 notepad.exe 的副本当假进程,它启动 3 秒后自己退出 → 误判成"门控失效"。做进程存在性测试必须确认假进程真的活着再断言,改用常驻的进程(cmd /k 之类) |
| 把磁盘可执行文件名当成了进程名 | 桌面端磁盘上叫 claude-desktop.exe,运行时进程名是 claude.exe。两者不是一回事,写规则前先跑起来看真实进程名 |
Python 的 struct.unpack 解 STUN 响应一直报错 | 原因未查明(长度明明够)。改用 int.from_bytes + 逐字节 XOR 手工解码即可。解这类二进制别死磕 struct |
| 环境变量读到 0,以为开关没生效 | 不带 scope 读的是进程继承值(可能是旧值),查注册表必须带 "User" / "Machine" |
先分清是哪种问题(网络故障 / 服务故障 / 登录失效 / 额度限制 / 正式账户限制),正式限制走官方入口 support.claude.com,留好工单号,凭据只留在自己手里,不找「解封服务」。
| 流言 | 真相 |
|---|---|
| 「养 3-7 天再充值」 | 社区经验,缺因果证据,不是安全保证 |
| 「前 7 天不能访问 Portal」 | 无可靠依据 |
| 「用量没到黄色就安全」 | 用量界面不是风控阈值 |
| 「说自己住在出口所在地」 | 出口地 ≠ 居住地,只陈述真实背景 |
| 「邮件无痕打开就不泄漏」 | 无痕不隐藏 IP |
| 「信任分 100、开训练就免封」 | 没有这样的保证;检测站 100 分是它自己的打分 |