路由器上的隧道和电脑上的客户端同时开着时,网站看到的是后封装的那一跳。2026-11-10 核对的 sing-box 1.14.4 把 detour 写成上游出站,并写明启用后同一组里的其他拨号字段会被忽略。WireGuard 快速入门里的 25 秒,维持的是隧道自己的 NAT 映射。

OpenAI、Anthropic 和 Google 都没有把中国大陆写成这些消费级或开发者产品的无条件服务地。从名单外访问或向名单外提供访问,可能违反条款,账号可能被限制或停用。拆开两层隧道,只让你看清最后一跳是谁,不把这一跳写进对方的地区名单。本文不写伪造证件、购买或借用账号、借用他人手机号和支付卡。

先记下两次出口

一个可单独引用的区分:电脑客户端再封装之后,AI 网站看到的源地址是这一跳的出口;路由器界面上的国家只在流量没有再被电脑封装时才是最后一跳。

你记下的结果更像哪一层下一步
两次 trace 的 loc 不同电脑客户端改变了出口地区判断对着第二次
只开路由器时成功,打开电脑客户端后超时电脑客户端到自己的服务器失败看该服务器是否被路由器的隧道收进去
页面已打开,并写国家、地区或 territory最后一跳不在名单里对照名单,停止再加一跳
回答在相近的秒数后断开,没有新的 HTTP 错误长连接被路径回收看保活写在哪一条出站

地区名单见 Claude 与 Gemini 的地区报错和注册。多跳改变的是谁看见哪一段,概念见 双重 VPN / 多跳。本文只写怎样把两层分开观察。

用同一条 trace 看最后一跳

2026-11-10,起草环境(不是大陆宽带,也不是家用路由器)请求 https://www.cloudflare.com/cdn-cgi/trace,正文仍有 ip、loc、colo、http、tls 等行。当天 loc 为 US,colo 为 IAD,http 为 http/2,tls 为 TLSv1.3,客户端标识是 curl/8.5.0。这只证明这个地址在该环境会返回这些字段。

在你自己的电脑上做两次,中间只改「电脑上的客户端开或关」,路由器上的隧道保持不动:

curl -4 -sS --max-time 20 https://www.cloudflare.com/cdn-cgi/trace
  • 两次都失败:先按 大陆代理连上后仍失败 查路径,不要从国家名单读起。
  • 两次 loc 相同:这一跳没有被电脑客户端改写。AI 页面若仍写地区不支持,名单对着的就是这一跳。
  • 两次 loc 不同:走电脑客户端的连接,网站看到的是第二次。把路由器界面上的国家填进账号资料,对不上这次请求。
  • 只有 -4 成功:没有可用的 IPv6 不一定是故障。地址族分裂见 IPv6 泄漏检查,本文没有重做那一篇的步骤。

loc 是 Cloudflare 给出的代码,不是 OpenAI 或 Google 的支持名单。

电脑客户端连不上自己的服务器

第二次超时、第一次还能通,常见的是:电脑客户端要去连的服务器地址,已经被路由器的隧道收进去了。2026-11-10 打开的 WireGuard 快速入门 在命令行例子里写了 allowed-ips 192.168.88.0/24,也就是交给该对端的地址段。这一节没有标软件版本号。

快速入门没有把「全局」定义成某一个家用路由器菜单。本文没有逐款打开路由器固件,不能把界面上的「全局」写成某一条 AllowedIPs。可以观察的事实只有上面那两次 trace:电脑客户端关闭时 loc 已经是境外,说明默认路由进了路由器上的隧道。

接下来只保留一层再重试同一次 trace:

  1. 关掉电脑客户端,只留路由器上的隧道,再记 loc。
  2. 关掉路由器上的隧道,只留电脑客户端,再记 loc。
  3. 需要电脑客户端单独连到它的服务器时,让该服务器地址不要进入路由器的隧道。具体点击因固件而异,本文不写某一款的菜单路径。

WireGuard 隧道本身还没握手时,不要先改 AI 账号,见 WireGuard 没握手,先别改 AI 账号。

detour 会忽略旁边的保活

同一进程里用上游出站再套一跳时,sing-box 用的是 detour,不是路由器里的另一份配置。GitHub Releases 在 2026-11-10 仍显示非预发布的最新标签为 v1.14.4,发布于 2026-10-24T01:04:25Z。同日的 v1.15.0-alpha.13 是预发布。下面只使用 1.14 文档里的字段。

拨号字段 写明:detour 是上游出站的标签;启用后,其他字段会被忽略。同一页把 tcp_keep_alive 的默认初始周期写成从 10m 改为 5m,未填写时用 5m;tcp_keep_alive_interval 的默认是 75s。二者都是拨号字段。因此写在 detour 旁边的 tcp_keep_alive 不按字面生效。

SOCKS 出站 的结构把服务器、端口、版本和拨号字段放在同一对象里。文档示例的服务器是 127.0.0.1,端口 1080,版本 "5"。下面不是完整配置,也没有在本机运行 sing-box check:

{
  "type": "socks",
  "tag": "second-hop",
  "server": "127.0.0.1",
  "server_port": 1080,
  "version": "5",
  "detour": "first-hop",
  "tcp_keep_alive": "30s"
}

30s 与 detour 写在一起。按拨号字段页,这一组里的其他拨号字段会被忽略,所以这一行不表示第二跳出站会每 30 秒做 TCP 保活。保活要写在标签为 first-hop、并且自己不再设置 detour 的那条出站上。文档示例里的用户名和密码不要抄进要运行的配置。127.0.0.1 只说明字段位置;你的服务器地址不同。

2026-10-31 的站内文章对照过 v1.14.4 的 dialer.go,认为 Detour 非空时不再套默认拨号。本文 2026-11-10 没有重读那份源文件。升级之后用你安装的那一版执行 sing-box check,再看长连接是否仍在相近的秒数断开。

两层封装还会少掉路径上的有效 MTU。能连上但写到一半停住时,先看 VPN 的 MTU,不要先换成另一个国家。

25 秒管的是 WireGuard 自己

同一份快速入门写明:对端位于 NAT 或防火墙之后、又要在没有数据时继续接收时,才周期发送 persistent keepalive。它认为对多种防火墙都合适的间隔是 25 秒。设为 0 会关闭,这是默认值。页面还写了:不需要就不要打开。

这 25 秒维持的是 WireGuard 与对端之间的映射,方便隧道在静默之后仍能收到入站包。AI 网页或 API 的长回答走的是隧道里面的另一条连接。外面每 25 秒有一个 WireGuard 包,不表示里面的 HTTP 流也有 TCP 保活。TCP 保活的默认周期见上一节的拨号字段。空闲断开的一般读法见 VPN 保活与掉线重连。

公开文件里的法律范围

2026-11-10 打开司法部国家行政法规库所载《计算机信息网络国际联网管理暂行规定》(1996 年 2 月 1 日国务院令第 195 号公布,1997 年 5 月 20 日第一次修订,2024 年 3 月 10 日第二次修订),页面为 LawID=1713。第六条写明:计算机信息网络直接进行国际联网,必须使用国家公用电信网提供的国际出入口信道;任何单位和个人不得自行建立或者使用其他信道进行国际联网。第十四条写明,违反第六条、第八条和第十条的,由公安机关责令停止联网、给予警告,可以并处 15000 元以下的罚款;有违法所得的,没收违法所得。第十六条写明,与台湾、香港、澳门地区的联网参照本规定执行。

这是公开条文的转述,不是对某一条隧道是否违法的判断,也不是法律意见。本文不写如何躲避检查。

对照之后留下的记录

留下六样东西:两次 trace 的 loc、电脑客户端是开还是关、路由器上的隧道有没有接管默认路由、出站有没有 detour、tcp_keep_alive 写在哪一个标签上、页面是超时还是地区英文。起草环境的 loc=US 不能当作下一周你家的出口。1.15 的预发布字段不要写进这份 1.14.4 的片段。