没有不值得去解决的问题,也没有不值得去学习的技术!

Google Analytics 图标变成文字:从 Google Fonts 超时定位到 WireGuard 远程 DNS

【图 1:Google Analytics 页面中的 Material Icons 没有正常渲染,图标名称直接显示成文字】

作者:

自建网络服务

图1:收到需要处理相关链接的通知。

(1) 根据网信办相关要求下线 8 篇自建 VPN 中文文章:保留系列标题并返回 404 的处理记录

图15:电脑VPN连接成功截图

(2) 从 LetsVPN 停用至自建 WireGuard VPN 全流程复盘(附避坑指南)

手机端优化配置(表单字段编辑专用,仅改2个字段)如图1

(3) WireGuard VPN 配置优化:国内网站直连,国外流量走VPN(实测有效)

ChatGPT(https://chatgpt.com/)、 YouTube(https://www.youtube.com/)、 V2EX(https://v2ex.com/) 始终打不开,提示无法访问。如图1

(4) WireGuard 国内直连+国外走隧道 配置踩坑与完美解决(实测可用)

客户端无「上次握手时间」,一直处于等待连接状态。客户端显示看似连接,但实际无握手、无流量转发,接收一直为 0。

(5) WireGuard 自建 VPN 偶发不可用 全程复盘:从正常使用→突然无握手→端口被封→换端口+智能分流 完整解决流程

Speedtest 出口带宽测速,打开:https://www.speedtest.net/ 。结果如图2

(6) 从 LetsVPN 停用自建 WireGuard 后:成都移动宽带+ Vultr 新加坡节点 实测网速很慢复盘+避坑干货

2. VPS 通过 iptables 做端口段转发:20000~60000 全部UDP端口,统一转发到本机 51820; 3. Vultr 防火墙只需放行 20000~60000 端口段 ,不用逐个添加单端口规则;

(7) 自建WireGuard解决端口频繁被封终极极简方案(保姆级可复现)

洛杉矶节点:Premium、Eyeball、Tier 1 三种网络类型下所有实例均处于缺货状态,包括我能勉强接受的 LAX.AN5.Pro.TINY(Premium 网络,12.98美元/月),该节点 AN5 系列已告罄(如图6);

(8) WireGuard 握手正常但打不开网?我们为什么非要 CN2 GIA,附 DMIT 部署 & 缺货替代方案

需要确保首页 - 当前节点 - ZgoCloud-VPN 是 绿色状态(如图25)。

(9) ZgoCloud + Wstunnel + WireGuard 提速 4 倍,Clash Verge Rev 自动分流与 443 端口防封实战

不可访问:`www.google.com` 提示 `ERR_CONNECTION_CLOSED`;`chatgpt.com`、`v2ex.com` 提示 `ERR_CERT_COMMON_NAME_INVALID`(HSTS 导致的证书错误)

(10) 排查实录:解决Clash Verge + Wstunnel + WireGuard下“部分网站无法访问”的DNS死锁问题

图12:开机后网站测试全部通过

(11) Ubuntu 26.04 下 ZgoCloud + Wstunnel + Clash Verge Rev 开机自启 VPN 配置

分析:第三次测试依然稳健,上传甚至回升到了 81 Mbps。这证明了 CN2 GIA + 9929 线路在下午时段(非深夜)的优异表现。 (图7:VPN 测速 #3 详细数据截图)

(12) Ubuntu 26.04 下 自建 VPN 速度实测报告:ZgoCloud + Wstunnel + WireGuard 方案体验与对比指南

【截图位置:图17 展示了启动后的仪表盘界面】

(13) Android 下 ZgoCloud + Wstunnel + FlClash VPN 配置

📷(图1:Play 商店无法更新)

(14) 自建 WireGuard + Wstunnel 在 Android 上 Google Play 更新异常的完整排查与架构优化

[截图 5:Clash 规则片段,突出显示新增的两行 DST-PORT 规则]

(15) 自建 VPN 后 Thunderbird 无法发送 Gmail 邮件:原因与解决方法

[截图 2:Play 商店更新界面,显示两个应用正常下载]

(16) 自建 VPN 后 Play 商店应用无法更新?别折腾 Wstunnel 了,问题在 Clash 分流规则里

关键信息是 code=exited, status=203/EXEC。这个退出码意味着 systemd 无法执行指定的程序。

(17) systemd 用户服务 203/EXEC 错误排查:wstunnel 自启动配置实录

Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(一):极简原则与初版构建

(18) Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(一):极简原则与初版构建

使用 Clash Verge Rev 内置的连接测试,对常用 13 个目标进行检测:

(19) Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(二):Google 污染的 DNS 最小修正

你好,我按照你博客文章按流程操作了一下服务器,服务器防火墙也开了,但是手机修改端口还是没有握手提示,也上不了网,这是哪里出问题了吗?

(20) 帮客户远程排查 Vultr WireGuard 无握手无法上网问题(完整实录)

Thunderbird 无法与 imap.gmail.com 连接,请稍后再试。如果问题依然存在,则可能是您超出了此服务器允许的最大连接数量。可在IMAP服务器设置中减少缓存的连接数量。

(21) 从 Thunderbird 连接失败到换用 Gmail API 客户端的完整排查记录

查看服务器上的 client.conf(截图8)

(22) 客户 Android 下 Wstunnel + FIClash 远程排障全记录:从脚本创建到 IP 错配的坑

在 FlClash 中查看实时请求日志,所有 Play 商店相关的请求全部走代理

(23) FlClash + WireGuard + Wstunnel 稳定配置实践(三):Google Play 下载问题解决

🚀 WireGuard + Clash Verge Rev 实现国内直连 / 国外分流(Vultr & ZgoCloud 实战演进版)

(24) 🚀 WireGuard + Clash Verge Rev 实现国内直连 / 国外分流(Vultr & ZgoCloud 实战演进版)

Clash Verge 内存占用过高

(25) 🚀 Clash Verge 从 500MB 到 200MB:Ubuntu VPN 客户端轻量化优化实战

LetsVPN 已经无法继续为中国大陆用户提供 VPN 服务

(26) 自建 VPN 与商业 VPN 怎么选:从 LetsVPN 停用到 WireGuard 自建的真实迁移复盘

【截图 2:Clash Verge Rev 日志中出现 dns resolve failed】

(27) Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(四):DNS 偶发超时的极简兜底修正

图 6:CoinPayments 生成的 USDT.TRC20 收款地址和二维码

(28) ZgoCloud 自建网络服务续费实测:使用 USDT.TRC20 支付后,账单为何仍显示 Unpaid

【图 2:Clash Verge 日志显示 admin.shuijingwanwq.com 被 MATCH 规则发送到 Proxy】

(29) Clash Verge 国内直连突然失效:从 PR_END_OF_FILE_ERROR 到更新 GeoData 后恢复的完整排查

【图 2:GitHub 仓库已经增加 metacubex-v4.yaml,并在 README 中记录 v4 更新】

(30) Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(四):DNS 偶发超时的极简兜底与长期验证

【图 1:Google Analytics 页面中的 Material Icons 没有正常渲染,图标名称直接显示成文字】

(31) Google Analytics 图标变成文字:从 Google Fonts 超时定位到 WireGuard 远程 DNS

最近在使用 Google Analytics 时,我遇到了一个一开始看起来很奇怪的问题。

页面可以正常打开,统计数据也能够显示,但是很多本来应该显示为图标的位置,却直接出现了文字,例如:

Plaintext
arrow_drop_down
check_circle

最开始,我还怀疑过 Google Analytics 本身、浏览器缓存,甚至服务器端是否出现了异常。

继续排查以后发现,这次问题最终并不在 Google Analytics,也不在网站服务器,而是与我目前使用的:

Plaintext
Clash Verge
+
Mihomo
+
Wstunnel
+
WireGuard

这套网络链路中的 DNS 解析位置与实际远端出口位置不一致有关。

最终,我在原有 MetaCubeX v4 配置基础上只做了一个很小的调整:

YAML
remote-dns-resolve: true

dns:
  - 1.1.1.1
  - 8.8.8.8

问题随即恢复正常。

这次调整也形成了目前新的:

Plaintext
MetaCubeX 极简稳定版 v5

一、Google Analytics 页面首先出现异常

最开始看到的问题是在 Google Analytics。

页面本身能够打开,数据也正常显示,但是很多图标都变成了普通文字。

例如页面中直接出现:

Plaintext
arrow_drop_down
check_circle

正常情况下,这些内容应该通过 Material Icons 字体渲染成对应图标。

【图 1:Google Analytics 页面中的 Material Icons 没有正常渲染,图标名称直接显示成文字】
【图 1:Google Analytics 页面中的 Material Icons 没有正常渲染,图标名称直接显示成文字】

因此,问题很快就可以缩小到:

页面主体能够加载,但是 Google Analytics 使用的某些字体或静态资源没有成功加载。


二、Firefox Network 显示 Google Fonts 请求失败

接下来打开 Firefox 开发者工具:

Plaintext
F12
→ Network

过滤:

Plaintext
font

马上可以看到多个:

Plaintext
fonts.googleapis.com

请求失败。

错误是:

Plaintext
NS_ERROR_NET_RESET

而且传输大小都是:

Plaintext
0 字节
【图 2:Firefox Network 中多个 fonts.googleapis.com 请求出现 NS_ERROR_NET_RESET】
【图 2:Firefox Network 中多个 fonts.googleapis.com 请求出现 NS_ERROR_NET_RESET】

这里基本已经可以确认:

Google Analytics 页面本身没有损坏,真正的问题是 Google Fonts 相关资源没有成功加载。

由于 Material Icons、Google Sans、Roboto 等资源都依赖这些请求,因此字体 CSS 一旦加载失败,图标名称就可能直接作为普通文字显示出来。


三、Clash 日志证明 Google 流量已经命中正确规则

接下来,我查看 Clash Verge 日志,并搜索:

Plaintext
fonts.googleapis.com

日志中持续出现:

Plaintext
[TCP] dial Proxy (match GeoSite/google)
127.0.0.1:xxxxx --> fonts.googleapis.com:443
error: context deadline exceeded
【图 3:Clash Verge 已经通过 GeoSite/google 命中 Proxy,但连接 fonts.googleapis.com:443 持续超时】
【图 3:Clash Verge 已经通过 GeoSite/google 命中 Proxy,但连接 fonts.googleapis.com:443 持续超时】

这一点非常重要。

因为它证明:

Plaintext
GEOSITE,google,Proxy

规则实际上已经正确命中。

也就是说,这次问题并不是:

Plaintext
fonts.googleapis.com 没有匹配到 Google 规则

而是:

Plaintext
已经命中 Proxy

但连接目标地址时超时

所以继续调整 Google 规则顺序,已经不是主要排查方向。


四、美国服务器直接访问 Google Fonts 正常

由于这套环境中的 WireGuard 服务端由我自己维护,因此下一步可以直接登录远端服务器测试。

执行:

Bash
curl -4 -I --connect-timeout 10 \
  'https://fonts.googleapis.com/css2?family=Roboto'

正常返回:

Plaintext
HTTP/2 200

随后测试:

Bash
curl -4 -I --connect-timeout 10 https://www.google.com/

同样返回:

Plaintext
HTTP/2 200
【图 4:美国服务器通过 IPv4 直接访问 fonts.googleapis.com 和 Google 均正常】
【图 4:美国服务器通过 IPv4 直接访问 fonts.googleapis.com 和 Google 均正常】

当时 IPv6 测试失败:

Plaintext
curl: (7) Couldn't connect to server

一开始我也考虑过 IPv6 是否参与了这次异常。

不过后续测试证明,它并不是本次问题的核心原因。

真正有价值的结论是:

美国服务器自身通过 IPv4 访问 Google Fonts 完全正常。

因此可以排除:

Plaintext
Google Fonts 本身整体不可访问

以及:

Plaintext
服务器到 Google 的 IPv4 网络整体异常

五、远端服务器解析到了正常可访问的 Google IP

继续在服务器执行:

Bash
getent ahostsv4 fonts.googleapis.com

当时解析结果是:

Plaintext
142.251.40.106
【图 5:美国服务器将 fonts.googleapis.com 解析为 142.251.40.106】
【图 5:美国服务器将 fonts.googleapis.com 解析为 142.251.40.106】

这个地址从服务器能够正常访问。

后续我还在本机通过 Clash,强制让:

Plaintext
fonts.googleapis.com

连接这个 IP。

结果 TLS 握手和 HTTP 请求全部成功:

Plaintext
TLSv1.3
HTTP/2 200

这一步非常关键。

因为此时仍然使用同一套:

Plaintext
Clash
→ Wstunnel
→ WireGuard
→ 美国服务器

网络链路。

唯一发生变化的只是:

明确指定了目标 IP。

请求就恢复了正常。

因此,到这里 WireGuard、Wstunnel、MTU 等问题的可能性已经大幅下降。

真正需要继续确认的是:

未手动指定 IP 时,WireGuard 实际访问的究竟是哪一个目标地址?


六、tcpdump 抓到了实际访问的另一个目标地址

为了确认这一点,我直接在 WireGuard 服务端的:

Plaintext
wg0

接口抓包。

执行:

Bash
sudo tcpdump -ni wg0 -nn \
  'tcp dst port 443 and tcp[tcpflags] & tcp-syn != 0'

然后重新从本机访问:

Plaintext
fonts.googleapis.com

结果抓到了:

Plaintext
10.7.0.2:34156 > 120.232.233.161:443 Flags [S]

随后连续重试:

Plaintext
SYN
SYN
SYN

但是一直没有建立连接。

【图 6:WireGuard 服务端 tcpdump 抓到客户端实际连接 120.232.233.161:443,并连续发送 SYN】
【图 6:WireGuard 服务端 tcpdump 抓到客户端实际连接 120.232.233.161:443,并连续发送 SYN】

这张图基本让问题方向变得非常清楚。

服务器自己解析:

Plaintext
fonts.googleapis.com

142.251.40.106

并且可以正常访问。

但是通过现有链路访问原始域名时,实际却连接到了:

Plaintext
120.232.233.161

而这个地址从当前远端出口没有成功建立连接。

这里更准确的理解并不是简单地说:

DNS 返回了一个错误 IP。

因为 GeoDNS、CDN 和区域调度本来就可能根据查询来源返回不同地址。

真正的问题更接近:

DNS 解析所在的网络环境,与最终发起 HTTPS 请求的网络出口不一致。


七、DNS 解析位置与实际网络出口不一致

原来的访问逻辑实际上接近:

Plaintext
本地网络环境

解析 fonts.googleapis.com

得到一个目标地址

Mihomo 判断该流量需要经过远端链路

WireGuard

美国服务器出口

访问前面已经解析好的地址

这里存在一个潜在问题。

DNS 查询是在:

Plaintext
本地网络环境

完成的。

而最终 HTTPS 请求却从:

Plaintext
美国远端出口

发出。

对于普通域名,这种差异很多时候并不会造成明显影响。

但是对于使用:

Plaintext
GeoDNS
CDN
区域调度
边缘节点

的服务,DNS 查询来源有时会影响最终得到的目标地址。

于是就有可能出现:

Plaintext
DNS 返回的地址适合本地网络环境

但是:

Plaintext
实际请求却从另一个地区的网络出口发出

最终造成连接异常。

这也解释了为什么这套配置以前使用了很长时间,一直没有明显问题。

之前即使 DNS 与实际出口不在同一个位置,只要解析得到的目标地址从远端服务器仍然能够正常访问,就完全感觉不到这个潜在问题。

这一次:

Plaintext
fonts.googleapis.com

恰好把这个边界情况暴露了出来。


八、没有增加 Google 特殊兼容,而是启用 WireGuard 远程 DNS

排查过程中,我最初也考虑过另一种处理方式:

针对:

Plaintext
geosite:google

单独增加:

Plaintext
nameserver-policy

让 Google 域名使用单独的境外 DNS。

这种方式可以针对当前问题进行处理。

不过继续检查 Mihomo 的 WireGuard 配置以后,我发现了一个更直接、也更加通用的配置:

YAML
remote-dns-resolve: true

因此最终没有继续为 Google 增加新的 DNS 特殊规则。

而是在 WireGuard 节点中增加:

YAML
remote-dns-resolve: true

dns:
  - 1.1.1.1
  - 8.8.8.8

完整新增部分是:

YAML
# 【关键】强制由 WireGuard 远端解析代理目标域名,避免本地 DNS 解析位置与实际出口位置不一致
remote-dns-resolve: true

# 远端 DNS:仅在 remote-dns-resolve: true 时用于代理目标域名解析
# 使用 Cloudflare DNS,并增加 Google DNS 作为兜底
dns:
  - 1.1.1.1
  - 8.8.8.8

这样,整体逻辑就变成:

Plaintext
本机

Mihomo 判断域名需要经过 WireGuard

WireGuard

由远端网络环境解析目标域名

取得更适合实际出口的目标地址

建立 HTTPS 连接

与之前最大的区别就是:

不再提前由本地网络环境决定远端流量最终应该访问哪个 IP。


九、MetaCubeX v5 仍然坚持最小修改

这次我没有重新设计整套 DNS 配置。

v5 仍然是在之前 v4 基础上的一个最小增量版本。

没有调整:

Plaintext
MTU
Wstunnel 结构
WireGuard 其他参数
GEOSITE / GEOIP 整体结构
Google 分流规则
现有 fallback 体系

真正新增的核心只有:

YAML
remote-dns-resolve: true

dns:
  - 1.1.1.1
  - 8.8.8.8
【图 7:MetaCubeX v5 Git commit 以及新增的 WireGuard remote-dns-resolve 配置】
【图 7:MetaCubeX v5 Git commit 以及新增的 WireGuard remote-dns-resolve 配置】

这次 v5 已经同步提交到 GitHub:

Plaintext
shuijingwan/clash-config

对应 Commit:

Plaintext
2448c55f800ea8d58b7b3562d341dae6c3d5a6d6

Commit message:

Plaintext
feat: 增加 WireGuard 远程 DNS 解析

仓库中继续保留:

Plaintext
metacubex-v1.yaml
metacubex-v2.yaml
metacubex-v3.yaml
metacubex-v4.yaml
metacubex-v5.yaml

因此之前的历史版本也不会受到影响。


十、修改以后 Google Analytics 恢复正常

更新配置并重新加载 Mihomo 后,再次执行:

Bash
curl -v \
  --proxy http://127.0.0.1:7897 \
  --connect-timeout 10 \
  'https://fonts.googleapis.com/css2?family=Roboto' \
  -o /dev/null

已经可以正常完成:

Plaintext
TLSv1.3
SSL certificate verified
HTTP/2 200

随后重新打开 Google Analytics。

之前那些:

Plaintext
arrow_drop_down
check_circle

全部重新恢复成正常图标。

Firefox Network 中:

Plaintext
fonts.googleapis.com

相关请求全部返回:

Plaintext
200

实际字体文件:

Plaintext
fonts.gstatic.com

也全部正常返回:

Plaintext
200
【图 8:启用 WireGuard remote-dns-resolve 后,Google Analytics 页面恢复正常,Google Fonts 相关请求全部返回 200】
【图 8:启用 WireGuard remote-dns-resolve 后,Google Analytics 页面恢复正常,Google Fonts 相关请求全部返回 200】

至此,这次问题形成了完整的验证闭环。


十一、这个方案并不依赖服务器必须位于美国

这次实际使用的是美国服务器。

但是:

YAML
remote-dns-resolve: true

并不依赖服务器必须位于某一个具体国家或地区。

真正重要的是:

DNS 解析所处的网络环境,应尽量与实际发出请求的网络出口保持一致。

假设以后远端服务器调整到其他地区:

Plaintext
本机

WireGuard

新的远端出口

由远端网络环境解析目标域名

访问更适合当前出口的目标地址

逻辑依然成立。

因此,与不断为某一个具体服务增加单独 DNS 规则相比,这种方式更符合我目前维护这套配置的原则:

尽量处理底层的一致性问题,而不是不断累积单个网站的特殊兼容规则。


十二、这次排查留下的几个经验

这次问题表面上只是:

Plaintext
Google Analytics 图标显示异常

但是完整排查以后,实际链路是:

Plaintext
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 完全恢复正常

这次还有一个比较值得记录的经验:

当出现:

Plaintext
网站主体能够打开
+
部分资源持续超时
+
分流规则已经正确命中

时,不一定首先就要怀疑:

Plaintext
MTU
浏览器缓存
网站服务器
远端服务器整体故障

还应该检查一个经常容易被忽略的问题:

最终目标域名究竟在哪里完成 DNS 解析,以及解析所在的网络环境是否与实际请求出口一致。

对于带有 GeoDNS、CDN 和区域调度能力的服务,这一点尤其值得注意。


十三、总结

MetaCubeX v4 在之前的实际使用中已经比较稳定。

这一次升级到 v5,并不是因为原有架构需要重新设计,而是在一个新的实际故障中发现:

Plaintext
本地 DNS 解析
+
远端网络出口

之间仍然存在一个低概率、但真实可能出现的边界问题。

最终增加:

YAML
remote-dns-resolve: true

dns:
  - 1.1.1.1
  - 8.8.8.8

以后,WireGuard 目标域名可以由远端网络环境完成解析。

这次实测已经解决:

Plaintext
fonts.googleapis.com 连接超时
Google Analytics 字体加载失败
Material Icons 显示成普通文字

同时,也没有为了这一个问题重新设计整套 DNS 或分流体系。

目前这份配置已经整理为:

Plaintext
metacubex-v5.yaml

并同步维护到 GitHub。

后续如果继续遇到新的实际网络问题,我仍然会优先保持现在的处理思路:

先确认真实故障链路,再进行尽可能小、同时具有通用性的调整。

Clash Verge Rev + WireGuard + Wstunnel 稳定配置实践(四):DNS 偶发超时的极简兜底与长期验证

🚀 推荐 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