Clash Verge + OneDrive 连接异常问题排查总结

校园网里开着 Clash Verge,OneDrive 却一直连接异常。我从系统代理与 DNS 开始排查,对照测试了 24 个网站和服务入口,逐步区分解析异常、TLS 连接重置与 HTTP 拒绝,并在结束后核对电脑原状。

在校园网里,我遇到了一个奇怪的问题:电脑明明开着 Clash Verge,其他网站也能访问,OneDrive 却一直连接异常。

最初我怀疑是节点或者分流规则出了问题。同样的校园网、相同的节点与配置,在另一台电脑上曾经可以正常登录、同步 OneDrive,而这台电脑的表现却不一样。手动改过规则后,连接一度恢复;恢复配置后,问题又出现了。

为了弄清楚问题在哪,我没有继续反复换节点,而是把整个连接过程拆开:先看系统代理,再查 DNS,然后分别测试直连和代理,最后比较 TLS 与 HTTP 的结果。除了 OneDrive,我还测试了 23 个网站和服务入口作为对照。

一、先确认电脑当前的配置

排查前,我先记录了当前状态:

  • 系统代理已开启,地址为 127.0.0.1:7897。
  • Clash Verge 使用 rule 模式,TUN 关闭。
  • DNS 覆写及 Fake-IP 配置开启。
  • 网卡通过 DHCP 获取 DNS,服务器为 221.11.1.67、221.11.1.68。

这里有两个区别需要先弄清楚。

第一,系统代理开启,不等于每个程序的每个请求都走代理。应用是否使用系统代理,需要实际验证;不能只凭浏览器能访问外网,就认为 OneDrive 的全部请求也采用相同路径。

第二,请求进入 Clash,不等于一定经过海外节点。当前是规则模式,部分域名可能匹配 DIRECT。后面表格中的“经 Clash”,表示请求先交给 Clash,再由现有规则决定出口。

为了避免影响正常使用,我通过每条测试请求单独指定连接方式,没有先关闭系统代理,也没有修改网卡 DNS、节点或规则。

二、查 DNS 时发现了异常

我先查询 onedrive.live.com,分别使用网卡当前的 DNS、Google DNS 和 Cloudflare DNS。普通 UDP 查询得到的结果如下:

查询服务器 OneDrive 返回的 A 记录
221.11.1.67 69.171.247.32
221.11.1.68 31.13.88.26
8.8.8.8 157.240.1.50
1.1.1.1 168.143.162.42

这些结果看起来很不寻常,而且指定外部 DNS 后,异常也没有消失。

不过,不同 DNS 返回不同 IP,本身不能证明污染。网站可能使用 CDN,正常解析也会随地区、时间和解析服务变化。于是,我又通过当前 Clash 分别查询 Cloudflare DoH 和 Google DoH。

两家加密解析服务为 OneDrive 返回了同样的一组地址:

13.107.137.11
13.107.139.11

接着,我把对照范围扩展到其他域名:

域名 当前 DNS / UDP 8.8.8.8 / UDP Cloudflare DoH / 经 Clash
onedrive.live.com 69.171.247.32 157.240.1.50 13.107.137.11、13.107.139.11
www.google.com 185.45.5.35 104.244.42.197 多个 142.251.x.x 地址
www.youtube.com 31.13.92.37 69.171.235.22 多个 142.251.x.x 地址
www.wikipedia.org 31.13.112.9 31.13.106.4 103.102.166.224
chatgpt.com 128.242.245.93 104.31.142.88 172.64.155.209、104.18.32.47
www.baidu.com 110.242.70.57、110.242.69.21 103.235.47.188、103.235.46.96 103.235.46.96、103.235.47.188

前五个域名还用 Google DoH 做了交叉查询,结果与 Cloudflare DoH 相符或处于相同地址集合。百度等对照域名则能够正常解析和访问。

结合重复查询和后续连接结果,我判断:这条网络路径下,部分域名的普通 DNS 解析存在异常;只把 DNS 地址换成 8.8.8.8 或 1.1.1.1,不足以避开问题。

但我没有抓包,不能准确判断干扰发生在校园出口、运营商还是更上游的位置,也不能把它扩大成“所有 DNS 查询都被劫持”。

三、为什么换 DNS 地址仍然没用?

换解析服务器地址和换传输方式是两件事。

向 8.8.8.8:53 或 1.1.1.1:53 发起普通查询,通常仍使用明文 DNS。如果异常来自解析服务本身或查询路径,换一个服务器地址未必能够避开。

DoH 把 DNS 查询放进 HTTPS;DoT 使用 TLS 传输 DNS。它们能够保护客户端到解析服务这一段的通信,但还要分别确认:连接是否可用,以及服务返回的答案是否可靠。

我测试直连阿里 DoH 时,HTTPS 请求可以完成,部分受影响域名却仍然得到异常地址。这个现象让我意识到:DNS 传输加密成功,不代表解析服务的上游数据一定正确。

我也做了 TCP DNS 和对照查询。外部 TCP DNS 对百度能返回结果,对 OneDrive、Google 则出现连接重置。向两组文档保留地址发送 DNS 查询时,全部超时,没有观察到“任意目标都被透明代答”的现象。

因此,目前能确认的是受影响域名存在解析异常,而不是所有域名、所有 DNS 传输都受同一种方式的干扰。

四、Fake-IP 开启,不等于系统 DNS 已经被接管

检查 Clash 配置时,我看到 DNS 覆写和 Fake-IP 已经开启。但向 127.0.0.1:53 发起 UDP/TCP 查询,结果都是被拒绝;运行配置中也没有设置 dns.listen。

这说明,dns.enable: true 并不意味着电脑一定在本地 53 端口提供 DNS 服务,也不意味着系统 DNS 查询已经自动交给 Clash。

Fake-IP 的含义也容易理解错。在这个模式下,Clash 可以为域名分配 198.18.x.x 一类虚拟地址,保留域名与虚拟地址的对应关系,再处理后续连接。这个地址不是网站真实服务器的地址。

所以,拿到 Fake-IP 只能说明进入了对应的解析流程,不能单独证明 OneDrive 已恢复。后续连接必须继续由 Clash 正确处理。系统代理、DNS 监听和 TUN 是不同环节,需要分别检查。

五、不只看 OneDrive:24 个入口的连接结果

只测一个服务,很难判断问题范围。我把国内网站、海外网站和微软相关入口放在一起,分别测试直连与经当前 Clash 的访问结果。

表中的 200 表示测试 URL 能返回页面;403、417 表示已收到 HTTP 回应,但服务拒绝了请求,不能当成业务正常。出现工具相关异常的站点,使用另一套 TLS 实现交叉验证后再记录结果。

网站或服务入口 直连 经当前 Clash
百度 200 200
B站 200 200
腾讯网 200 200
淘宝 200 200
京东 200 200
知乎 200 200
抖音 200 200
GitHub 200 200
Bing 200 200
Apple 200 200
Microsoft 官网 200 200
Office 首页 200 200
login.live.com 200 200
login.microsoftonline.com 200 200
g.live.com 200 200
oneclient.sfx.ms 200 200
Cloudflare 官网 200 200
Google 超时 200
YouTube 超时 200
维基百科 超时 200
Reddit 超时 200
OneDrive 首页 超时或连接被重置 403
ChatGPT 首页 超时 403
Outlook 首页 417 417

这些结果缩小了问题范围:国内网站和部分微软入口能够正常连接,几个海外网站在直连时失败、交给 Clash 后可访问;OneDrive 则仍存在额外障碍。

尤其是微软登录入口返回 200,不能代表 OneDrive 网页和同步服务也正常。一个应用可能依赖多个域名,登录、下载和同步需要分别验证。

这次测试没有操作 OneDrive 登录、真实文件同步或个人浏览器会话,因此我没有把首页的连接结果写成“同步已经恢复”。

六、绕过 DNS 后,OneDrive 直连还是失败

发现解析异常后,我又做了一组测试:给 OneDrive 指定两家加密 DNS 返回的地址,绕过系统解析,但保留原 URL 主机名和 TLS 验证。

命令的核心写法是:

curl.exe -q --noproxy "*" `
  --resolve "onedrive.live.com:443:13.107.137.11" `
  --connect-timeout 6 --max-time 22 `
  -o NUL -v https://onedrive.live.com/

分别指定 13.107.137.11 和 13.107.139.11 后,两次实际对照测试都在约 0.1 秒发生 TLS/连接重置。

这个结果很关键:即使绕过 DNS,OneDrive 直连也没有恢复,因此不能把整个问题都归结为 DNS。 至于重置来自哪里,还需要抓包或其他路径测试才能判断。

经当前代理访问 OneDrive 时,另一套 TLS 实现能够完成 HTTPS 并收到 403。这已经进入 HTTP 阶段,与 DNS 失败或无法建立连接不同。403 的原因本次没有确定,不能直接归因为校园 DNS、代理节点风控或账号问题。

七、别把测试工具的失败当成网站断网

首轮使用 Windows curl 时,Google、Cloudflare、ChatGPT 出现了 CRYPT_E_REVOCATION_OFFLINE。这个错误涉及证书吊销信息无法获取,不能据此直接认定网站断网。

我使用 Python OpenSSL 的默认证书链和主机名验证做了交叉测试:Google、Cloudflare 经代理返回 200,ChatGPT 返回 403。这让我把吊销检查问题与真正的连接问题分开了。

腾讯网也有一个类似例子:curl 请求返回 501,带浏览器 User-Agent 的另一组请求返回 200。请求方式会影响服务端回应,不能把所有非 200 状态都理解成网络断开。

测试中没有使用 -k 跳过证书链和主机名验证,也没有修改系统 TLS 设置。部分诊断请求使用了 --ssl-revoke-best-effort,仅让该次 curl 进程容忍吊销服务离线,最终判断结合了另一套 TLS 实现的结果。

八、最终判断,以及尚未解决的部分

经过这些检查,我把问题分成了三个层次:

  1. 解析层: 部分域名的普通 DNS 查询存在异常,改成外部明文 DNS 也未避开;代理内的加密解析可以提供对照结果。
  2. 连接层: OneDrive 即使指定加密解析返回的地址,直连仍被重置,说明还有 DNS 以外的连接障碍。
  3. HTTP 与业务层: OneDrive 和 ChatGPT 经代理返回 403,Outlook 首页返回 417;这些需要继续结合浏览器或应用请求排查,不能宣称业务已经恢复。

对于能通过 Clash 正常访问的网站,当前代理路径已经绕过直连障碍。对于 OneDrive,我只能确认 DNS 异常是线索之一,暂时不能给出“只开 Fake-IP 就彻底解决”的结论。

这次排查让我不再把所有失败都统称为“连不上”。先确认 DNS,再看 TCP/TLS,最后看 HTTP 和真实业务,才能判断下一步应该查解析、连接路径,还是应用请求。

九、测试结束后,核对电脑原状

测试前记录的系统代理、网卡 DNS/DHCP/IP/网关配置,测试后都进行了核对。Clash 的主要配置文件、hosts,以及 Obsidian 笔记的文件哈希,也与测试前一致。

本次没有切换节点或规则,没有开启 TUN,没有修改网卡 DNS,没有清空 DNS 缓存,也没有重启 OneDrive 或改动同步文件。连接方式只对单条测试请求生效,不需要在结束后重新设置全局代理。

测试产生的连接、流量统计、自然缓存更新和日志没有清理。核对结果是:电脑配置保持原状,排查过程没有改动原来的文件和设置。

参考资料

文中的具体 IP 和 HTTP 状态是此次排查时的记录,不是其他网络环境下可以直接套用的固定配置。

评论