最近在使用 Google Analytics 时,我遇到了一个一开始看起来很奇怪的问题。
页面可以正常打开,统计数据也能够显示,但是很多本来应该显示为图标的位置,却直接出现了文字,例如:
arrow_drop_down
check_circle最开始,我还怀疑过 Google Analytics 本身、浏览器缓存,甚至服务器端是否出现了异常。
继续排查以后发现,这次问题最终并不在 Google Analytics,也不在网站服务器,而是与我目前使用的:
Clash Verge
+
Mihomo
+
Wstunnel
+
WireGuard这套网络链路中的 DNS 解析位置与实际远端出口位置不一致有关。
最终,我在原有 MetaCubeX v4 配置基础上只做了一个很小的调整:
remote-dns-resolve: true
dns:
- 1.1.1.1
- 8.8.8.8问题随即恢复正常。
这次调整也形成了目前新的:
MetaCubeX 极简稳定版 v5一、Google Analytics 页面首先出现异常
最开始看到的问题是在 Google Analytics。
页面本身能够打开,数据也正常显示,但是很多图标都变成了普通文字。
例如页面中直接出现:
arrow_drop_down
check_circle正常情况下,这些内容应该通过 Material Icons 字体渲染成对应图标。

因此,问题很快就可以缩小到:
页面主体能够加载,但是 Google Analytics 使用的某些字体或静态资源没有成功加载。
二、Firefox Network 显示 Google Fonts 请求失败
接下来打开 Firefox 开发者工具:
F12
→ Network过滤:
font马上可以看到多个:
fonts.googleapis.com请求失败。
错误是:
NS_ERROR_NET_RESET而且传输大小都是:
0 字节
这里基本已经可以确认:
Google Analytics 页面本身没有损坏,真正的问题是 Google Fonts 相关资源没有成功加载。
由于 Material Icons、Google Sans、Roboto 等资源都依赖这些请求,因此字体 CSS 一旦加载失败,图标名称就可能直接作为普通文字显示出来。
三、Clash 日志证明 Google 流量已经命中正确规则
接下来,我查看 Clash Verge 日志,并搜索:
fonts.googleapis.com日志中持续出现:
[TCP] dial Proxy (match GeoSite/google)
127.0.0.1:xxxxx --> fonts.googleapis.com:443
error: context deadline exceeded
这一点非常重要。
因为它证明:
GEOSITE,google,Proxy规则实际上已经正确命中。
也就是说,这次问题并不是:
fonts.googleapis.com 没有匹配到 Google 规则而是:
已经命中 Proxy
↓
但连接目标地址时超时所以继续调整 Google 规则顺序,已经不是主要排查方向。
四、美国服务器直接访问 Google Fonts 正常
由于这套环境中的 WireGuard 服务端由我自己维护,因此下一步可以直接登录远端服务器测试。
执行:
curl -4 -I --connect-timeout 10 \
'https://fonts.googleapis.com/css2?family=Roboto'正常返回:
HTTP/2 200随后测试:
curl -4 -I --connect-timeout 10 https://www.google.com/同样返回:
HTTP/2 200
当时 IPv6 测试失败:
curl: (7) Couldn't connect to server一开始我也考虑过 IPv6 是否参与了这次异常。
不过后续测试证明,它并不是本次问题的核心原因。
真正有价值的结论是:
美国服务器自身通过 IPv4 访问 Google Fonts 完全正常。
因此可以排除:
Google Fonts 本身整体不可访问以及:
服务器到 Google 的 IPv4 网络整体异常五、远端服务器解析到了正常可访问的 Google IP
继续在服务器执行:
getent ahostsv4 fonts.googleapis.com当时解析结果是:
142.251.40.106
这个地址从服务器能够正常访问。
后续我还在本机通过 Clash,强制让:
fonts.googleapis.com连接这个 IP。
结果 TLS 握手和 HTTP 请求全部成功:
TLSv1.3
HTTP/2 200这一步非常关键。
因为此时仍然使用同一套:
Clash
→ Wstunnel
→ WireGuard
→ 美国服务器网络链路。
唯一发生变化的只是:
明确指定了目标 IP。
请求就恢复了正常。
因此,到这里 WireGuard、Wstunnel、MTU 等问题的可能性已经大幅下降。
真正需要继续确认的是:
未手动指定 IP 时,WireGuard 实际访问的究竟是哪一个目标地址?
六、tcpdump 抓到了实际访问的另一个目标地址
为了确认这一点,我直接在 WireGuard 服务端的:
wg0接口抓包。
执行:
sudo tcpdump -ni wg0 -nn \
'tcp dst port 443 and tcp[tcpflags] & tcp-syn != 0'然后重新从本机访问:
fonts.googleapis.com结果抓到了:
10.7.0.2:34156 > 120.232.233.161:443 Flags [S]随后连续重试:
SYN
SYN
SYN但是一直没有建立连接。

这张图基本让问题方向变得非常清楚。
服务器自己解析:
fonts.googleapis.com
↓
142.251.40.106并且可以正常访问。
但是通过现有链路访问原始域名时,实际却连接到了:
120.232.233.161而这个地址从当前远端出口没有成功建立连接。
这里更准确的理解并不是简单地说:
DNS 返回了一个错误 IP。
因为 GeoDNS、CDN 和区域调度本来就可能根据查询来源返回不同地址。
真正的问题更接近:
DNS 解析所在的网络环境,与最终发起 HTTPS 请求的网络出口不一致。
七、DNS 解析位置与实际网络出口不一致
原来的访问逻辑实际上接近:
本地网络环境
↓
解析 fonts.googleapis.com
↓
得到一个目标地址
↓
Mihomo 判断该流量需要经过远端链路
↓
WireGuard
↓
美国服务器出口
↓
访问前面已经解析好的地址这里存在一个潜在问题。
DNS 查询是在:
本地网络环境完成的。
而最终 HTTPS 请求却从:
美国远端出口发出。
对于普通域名,这种差异很多时候并不会造成明显影响。
但是对于使用:
GeoDNS
CDN
区域调度
边缘节点的服务,DNS 查询来源有时会影响最终得到的目标地址。
于是就有可能出现:
DNS 返回的地址适合本地网络环境但是:
实际请求却从另一个地区的网络出口发出最终造成连接异常。
这也解释了为什么这套配置以前使用了很长时间,一直没有明显问题。
之前即使 DNS 与实际出口不在同一个位置,只要解析得到的目标地址从远端服务器仍然能够正常访问,就完全感觉不到这个潜在问题。
这一次:
fonts.googleapis.com恰好把这个边界情况暴露了出来。
八、没有增加 Google 特殊兼容,而是启用 WireGuard 远程 DNS
排查过程中,我最初也考虑过另一种处理方式:
针对:
geosite:google单独增加:
nameserver-policy让 Google 域名使用单独的境外 DNS。
这种方式可以针对当前问题进行处理。
不过继续检查 Mihomo 的 WireGuard 配置以后,我发现了一个更直接、也更加通用的配置:
remote-dns-resolve: true因此最终没有继续为 Google 增加新的 DNS 特殊规则。
而是在 WireGuard 节点中增加:
remote-dns-resolve: true
dns:
- 1.1.1.1
- 8.8.8.8完整新增部分是:
# 【关键】强制由 WireGuard 远端解析代理目标域名,避免本地 DNS 解析位置与实际出口位置不一致
remote-dns-resolve: true
# 远端 DNS:仅在 remote-dns-resolve: true 时用于代理目标域名解析
# 使用 Cloudflare DNS,并增加 Google DNS 作为兜底
dns:
- 1.1.1.1
- 8.8.8.8这样,整体逻辑就变成:
本机
↓
Mihomo 判断域名需要经过 WireGuard
↓
WireGuard
↓
由远端网络环境解析目标域名
↓
取得更适合实际出口的目标地址
↓
建立 HTTPS 连接与之前最大的区别就是:
不再提前由本地网络环境决定远端流量最终应该访问哪个 IP。
九、MetaCubeX v5 仍然坚持最小修改
这次我没有重新设计整套 DNS 配置。
v5 仍然是在之前 v4 基础上的一个最小增量版本。
没有调整:
MTU
Wstunnel 结构
WireGuard 其他参数
GEOSITE / GEOIP 整体结构
Google 分流规则
现有 fallback 体系真正新增的核心只有:
remote-dns-resolve: true
dns:
- 1.1.1.1
- 8.8.8.8
这次 v5 已经同步提交到 GitHub:
shuijingwan/clash-config对应 Commit:
2448c55f800ea8d58b7b3562d341dae6c3d5a6d6Commit message:
feat: 增加 WireGuard 远程 DNS 解析仓库中继续保留:
metacubex-v1.yaml
metacubex-v2.yaml
metacubex-v3.yaml
metacubex-v4.yaml
metacubex-v5.yaml因此之前的历史版本也不会受到影响。
十、修改以后 Google Analytics 恢复正常
更新配置并重新加载 Mihomo 后,再次执行:
curl -v \
--proxy http://127.0.0.1:7897 \
--connect-timeout 10 \
'https://fonts.googleapis.com/css2?family=Roboto' \
-o /dev/null已经可以正常完成:
TLSv1.3
SSL certificate verified
HTTP/2 200随后重新打开 Google Analytics。
之前那些:
arrow_drop_down
check_circle全部重新恢复成正常图标。
Firefox Network 中:
fonts.googleapis.com相关请求全部返回:
200实际字体文件:
fonts.gstatic.com也全部正常返回:
200
至此,这次问题形成了完整的验证闭环。
十一、这个方案并不依赖服务器必须位于美国
这次实际使用的是美国服务器。
但是:
remote-dns-resolve: true并不依赖服务器必须位于某一个具体国家或地区。
真正重要的是:
DNS 解析所处的网络环境,应尽量与实际发出请求的网络出口保持一致。
假设以后远端服务器调整到其他地区:
本机
↓
WireGuard
↓
新的远端出口
↓
由远端网络环境解析目标域名
↓
访问更适合当前出口的目标地址逻辑依然成立。
因此,与不断为某一个具体服务增加单独 DNS 规则相比,这种方式更符合我目前维护这套配置的原则:
尽量处理底层的一致性问题,而不是不断累积单个网站的特殊兼容规则。
十二、这次排查留下的几个经验
这次问题表面上只是:
Google Analytics 图标显示异常但是完整排查以后,实际链路是:
Google Analytics 图标异常
↓
Firefox Network
↓
fonts.googleapis.com NS_ERROR_NET_RESET
↓
Clash 日志
↓
GeoSite/google 已正确命中 Proxy
↓
远端服务器直接访问 Google Fonts 正常
↓
指定远端服务器解析得到的 Google IP 后也正常
↓
tcpdump
↓
发现 WireGuard 实际连接的是另一个目标地址
↓
确认 DNS 解析位置与实际网络出口存在差异
↓
WireGuard 开启 remote-dns-resolve
↓
Google Fonts 恢复 HTTP/2 200
↓
Google Analytics 完全恢复正常这次还有一个比较值得记录的经验:
当出现:
网站主体能够打开
+
部分资源持续超时
+
分流规则已经正确命中时,不一定首先就要怀疑:
MTU
浏览器缓存
网站服务器
远端服务器整体故障还应该检查一个经常容易被忽略的问题:
最终目标域名究竟在哪里完成 DNS 解析,以及解析所在的网络环境是否与实际请求出口一致。
对于带有 GeoDNS、CDN 和区域调度能力的服务,这一点尤其值得注意。
十三、总结
MetaCubeX v4 在之前的实际使用中已经比较稳定。
这一次升级到 v5,并不是因为原有架构需要重新设计,而是在一个新的实际故障中发现:
本地 DNS 解析
+
远端网络出口之间仍然存在一个低概率、但真实可能出现的边界问题。
最终增加:
remote-dns-resolve: true
dns:
- 1.1.1.1
- 8.8.8.8以后,WireGuard 目标域名可以由远端网络环境完成解析。
这次实测已经解决:
fonts.googleapis.com 连接超时
Google Analytics 字体加载失败
Material Icons 显示成普通文字同时,也没有为了这一个问题重新设计整套 DNS 或分流体系。
目前这份配置已经整理为:
metacubex-v5.yaml并同步维护到 GitHub。
后续如果继续遇到新的实际网络问题,我仍然会优先保持现在的处理思路:
先确认真实故障链路,再进行尽可能小、同时具有通用性的调整。
🚀 推荐 VPS(WireGuard / Clash / 自建 VPN 专用)
本系列方案推荐使用 Vultr VPS 作为基础服务器环境:
✔ 支持 WireGuard / Clash / VPS 架构部署
✔ 全球多机房节点可选
✔ 稳定适合长期运行的网络服务
👉 点击访问 Vultr(推荐注册入口)
💡 新用户优惠说明
Vultr 官方可能会针对新用户提供一定的试用额度或促销活动,例如:
– 最高可能获得 $300 新用户测试额度
– 用于 VPS 部署与测试用途
– 是否生效取决于 Vultr 官方活动规则及账户条件
⚠️ 不同地区、时间或账户类型可能存在差异。
⚠️ 重要说明
本站提供的链接为 Vultr 官方联盟推广链接,用于推荐 VPS 服务。
所有优惠活动均由 Vultr 官方提供与解释,本网站不保证所有用户均可获得相同促销权益。
拒绝反复折腾|专属 WireGuard VPN 远程部署与优化服务
本系列长期记录 WireGuard、Clash、VPS、DNS、Linux 网络环境和 AI 工具访问优化等实践。如果你不想反复踩坑、折腾服务器与协议配置,可以联系我做一次远程排查或专属方案部署。
适合以下用户:
✅ ChatGPT、Claude、Gemini 等 AI 工具使用者
✅ 海外远程办公用户
✅ 技术学习与开发环境访问需求
✅ 不想长期折腾 VPS 与代理配置的用户
✅ 希望拥有专属节点而非公共机场的用户
服务内容:
✅ 远程代搭建:在你自己的服务器上部署专属 WireGuard VPN,数据完全掌控。
✅ 免费试用:可申请免费试用我的自建节点,再决定是否继续。
✅ 分流优化:针对 AI 工具、开发环境及日常使用进行优化。
✅ 问题排查:协助排查连接失败、速度慢、DNS 异常、规则配置等常见问题。
如需了解方案或申请试用,请直接联系我,并注明:VPN 咨询。
联系方式:
Telegram:@shuijingwan
微信:13980074657
邮箱:shuijingwanwq@gmail.com

