现象
Clash Verge 正常运行,系统代理指向 127.0.0.1:7892,但无法访问 Google。同样的订阅节点在其他电脑上正常。
排查过程
1. 确认代理进程存活
netstat -ano | grep 7892结果:127.0.0.1:7892 处于 LISTENING 状态,verge-mihomo(PID 7336)正在监听。
2. 确认系统代理已设置
reg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyEnablereg query "HKCU\Software\Microsoft\Windows\CurrentVersion\Internet Settings" /v ProxyServer结果:ProxyEnable=1,ProxyServer=127.0.0.1:7892,系统代理设置正确。
3. 测试代理连通性
curl -x http://127.0.0.1:7892 -I --connect-timeout 5 https://www.google.com结果:HTTP/1.1 200 Connection established(HTTPS 隧道建成功),但随后超时——数据无法通过代理传输。
4. 检查 mihomo 核心日志
tail -100 clash-verge/logs/service/service_latest.log关键日志:
[TCP] dial XFLTD ... --> 0af4430.cnrcz.cn:13001 error: connect error: dns resolve failed: couldn't find ip[UDP] dial XFLTD (match IPCIDR/8.8.8.8/32) mihomo --> 8.8.8.8:53 error: dns resolve failed: couldn't find ip5. 检查 DNS 配置
mihomo 运行时配置中:
nameserver: - 223.5.5.5 # 阿里 DNS - 119.29.29.29 # 腾讯 DNS - 114.114.114.114 # 114 DNS
proxy-server-nameserver: - https://cn.ali-oss.cn:44443/dns-query/... - https://hk.ali-oss.cn:44443/dns-query/...6. 测试 DNS 可达性
nslookup baidu.com 223.5.5.5 # 超时nslookup baidu.com 119.29.29.29 # 超时nslookup baidu.com 114.114.114.114 # 超时nslookup 0af4430.cnrcz.cn # 使用系统 DNS: 成功解析校园网 DNS(
202.114.96.1)能正常解析所有域名
根因
校园网封锁了所有公共 DNS 服务器,而代理订阅配置指定了这些被封锁的 DNS 作为 nameserver。
数据流被阻断的位置:
浏览器 → 系统代理(127.0.0.1:7892) → mihomo 核心 │ 需要解析代理节点域名 0af4430.cnrcz.cn │ ▼ 使用 nameserver 解析: ├─ 223.5.5.5 → 校园网封锁, 不可达 ├─ 119.29.29.29 → 校园网封锁, 不可达 └─ 114.114.114.114 → 校园网封锁, 不可达 │ ▼ dns resolve failed: couldn't find ip │ ▼ 所有代理连接失败校园网是如何阻断公共 DNS 的
方式一:ACL 防火墙规则(最可能)
校园网出口路由器/防火墙上配置 ACL(访问控制列表),直接丢弃目标为公共 DNS 的 UDP 53 端口包:
你的电脑:随机端口 → 223.5.5.5:53 UDP DNS Query │ ▼校园网出口路由器 (10.137.127.254) │ │ 规则命中: dst 223.5.5.5 port 53 → DROP │ ▼ ✗ 包被丢弃,没有回应 → 超时测试结果符合这个特征——DNS request timed out,连 REFUSED 都不是,说明包直接被丢了。
方式二:DNS 劫持
不丢包,但路由器拦截所有 DNS 请求强行转到校园网 DNS。不过本次情况不太像——如果是劫持,cnrcz.cn 校园网 DNS 也能解析,不应该出现 couldn't find ip。
方式三:路由黑洞
把公共 DNS 的 IP 段指向 null0(黑洞路由),效果和方式一相同。
为什么只封 DNS 不封代理流量
DNS 是审查的第一步。如果域名解析不出来,后续连接根本不会发生,成本最低:
| 封法 | 成本 | 效果 |
|---|---|---|
| 封 DNS(UDP 53) | 低,几条防火墙规则 | 阻止域名解析 |
| 封 IP + 端口 | 高,海量 IP 要维护 | 阻止特定服务 |
| DPI 深度包检测 | 极高,需要专用设备 | 识别协议特征 |
校园网预算有限,封 DNS 性价比最高。而代理流量走的是 VLESS + Reality 在 TCP 443 上,外层就是普通 HTTPS(SNI 伪装成正常网站),就算有 DPI 也很难识别,所以代理本身的 TCP 连接不会被阻断。
为什么切手机热点再切回来就能用了
这是一个很有意思的现象。笔记本电脑先连手机热点走流量,代理通了;切回校园网后居然还能继续用。原因在于 mihomo 的 DNS 缓存。
过程拆解:
切热点前(校园网): mihomo → 223.5.5.5:53 解析 0af4430.cnrcz.cn → ✗ 被校园网丢掉 → 连不上
切热点后(手机流量): mihomo → 223.5.5.5:53 解析 0af4430.cnrcz.cn → ✓ 得到 18.181.249.107 mihomo 把这条结果写入缓存 mihomo → 18.181.249.107:13001 → ✓ 成功 → Google 通了
切回校园网: mihomo 查 0af4430.cnrcz.cn → 缓存命中 → 直接用 18.181.249.107 mihomo → 18.181.249.107:13001 → ✓ 校园网没封这个 IP → 还能通!mihomo 在 fake-ip 模式下维护的 DNS 缓存表大致是:
域名 假 IP (返回给客户端) 真实 IP (缓存)0af4430.cnrcz.cn 198.18.0.42 18.181.249.107www.google.com 198.18.0.17 (由节点侧解析,不缓存)校园网只封了到公共 DNS 的 UDP 53 端口,没有封到代理节点 IP 的 TCP 连接。只要缓存不过期,mihomo 就不需要重新做 DNS 查询,直接用缓存的真实 IP 连代理节点,所以切回校园网后仍然能通。
但这个”修复”是暂时的,以下情况缓存会失效:
- DNS 缓存过期(通常几分钟到几十分钟)
- 切换到另一个 DNS 没缓存的节点
- mihomo 重启
- 手动清除缓存
届时问题会复现。改成 nameserver: [system] 才是永久解法。
解决方法
将订阅配置中的 DNS 服务器从被封锁的公共 DNS 改为 system(使用系统 DNS):
# 改前nameserver: [223.5.5.5, 119.29.29.29, 114.114.114.114]proxy-server-nameserver: - https://cn.ali-oss.cn:44443/dns-query/... - https://hk.ali-oss.cn:44443/dns-query/...
# 改后nameserver: [system]proxy-server-nameserver: [system]配置文件路径:%APPDATA%\io.github.clash-verge-rev.clash-verge-rev\profiles\<当前配置>.yaml
系统代理数据流全貌
┌───────────────────────────────────────────────────────────────┐│ 浏览器 (Chrome/Edge) ││ 读取系统代理设置 → 不直接连目标,发 CONNECT 请求给代理 ││ CONNECT google.com:443 → 127.0.0.1:7892 │└──────────────────────────┬────────────────────────────────────┘ ▼┌──────────────────────────────────────────────────────────────┐│ mihomo 核心 (verge-mihomo, 监听 127.0.0.1:7892) ││ ││ ① 匹配规则: DOMAIN-KEYWORD,google → XFLTD 代理组 ││ ② 选择节点: 🇸🇬 新加坡 01 [V] → 0af4430.cnrcz.cn:13001 ││ ③ DNS 解析节点域名: nameserver → system DNS → 18.181.249.107 ││ ④ 连接节点: VLESS + Reality 协议, 伪装 www.lamer.com.sg ││ ⑤ 节点转发: 新加坡 VPS → www.google.com:443 ││ ││ 规则逻辑: ││ DOMAIN-KEYWORD,google → XFLTD (走代理) ││ GEOIP,CN → DIRECT (国内直连) ││ MATCH → XFLTD (兜底走代理) │└──────────────────────────┬────────────────────────────────────┘ ▼┌──────────────────────────────────────────────────────────────┐│ 代理节点 (VLESS + Reality) ││ 伪装成普通 HTTPS 流量 (SNI: 国内正常域名) ││ 转发请求到目标网站, 返回响应 │└──────────────────────────────────────────────────────────────┘注意事项
- 更新订阅后 DNS 配置可能被覆盖,如出现相同症状,按同样方式修复
- 可以在 Clash Verge → 设置 → DNS 中开启自定义 DNS 设置为
system,一劳永逸 - 此问题本质是校园网 DNS 封锁策略与代理订阅默认配置冲突,并非代理节点本身的问题