一次 CDN 网络故障的完整排查
2026/6/25 17:34:30 网站建设 项目流程

一次 CDN 网络故障的完整排查

问题现象

某天突然发现:虎牙直播(huya.com)和力扣(leetcode.cn)在浏览器里打不开了,但 B 站、GitHub 等网站一切正常。不是彻底打不开,而是一直加载,页面始终没有内容显示出来

之前这些网站都是可以正常访问的,排除被墙的可能性,也不是浏览器缓存的问题(无痕模式同样复现)。

排查过程

第一步:网络连通性测试

怀疑是 DNS 解析问题或者 IP 不通,先 ping 一下:

pingwww.huya.compingleetcode.cnpingwww.bilibili.com

三个域名都 ping 得通,虎牙 7ms、力扣 10ms、B 站 25ms,延迟都正常。排除物理断网。

第二步:HTTP 层面测试

再用 curl 模拟浏览器请求试试:

curl-Ihttps://www.huya.comcurl-Ihttps://leetcode.cn

结果两个都返回HTTP/1.1 200 OK,HTML 内容完整返回。说明服务器是活的,HTTPS 握手也没问题。

这就很奇怪了——ping 通、curl 通,为什么浏览器就是打不开?

第三步:对比正常网站

看看 B 站为什么是好的。B 站的 CDN 域名(a.w.bilicdn1.com)解析到了121.194.11.73,这个 IP 段路由正常。

再看看虎牙和力扣引用了哪些外部资源:

curl-shttps://leetcode.cn|grep-oP'src|href'|...

发现力扣页面加载了大量来自static.leetcode.cnassets.leetcode.cn的 JS 和 CSS 文件。测试这些子域名:

curl--connect-timeout3https://static.leetcode.cn# 结果:超时,000 状态码curl--connect-timeout3https://a.msstatic.com# 结果:同样超时

突破口出现了:主页面 HTML 能拿到,但页面渲染需要的 JS/CSS 文件所在的 CDN 域名超时了

第四步:定位根因

查一下这些超时的 CDN 域名解析到了哪里:

nslookupstatic.leetcode.cn# 结果:43.137.171.248(腾讯云 CDN)nslookupa.msstatic.com# 结果:43.137.171.248(腾讯云 CDN)

追溯路由:

tracert-d43.137.171.248

结果在第 5 跳之后全部超时——校园网出口路由器无法到达腾讯云43.x.x.x网段。

对比 B 站 CDN:

tracert-d121.194.11.73

路由正常,3 跳出境。

根因找到了:力扣和虎牙的静态资源都托管在腾讯云 CDN 的43.x网段,而当前网络环境(校园网)无法路由到该网段。主页面 HTML 能加载(因为主站不在那个网段),但没有 JS 和 CSS 文件,浏览器就只能一直白屏"加载中"。

第五步:为什么会这样?

排查 DNS 配置:

nslookupstatic.leetcode.cn

DNS 服务器是202.38.64.18(校园网默认 DNS),它把这两个 CDN 域名解析到了43.137.171.248

这是 CDN 智能调度的结果——腾讯云 CDN 在全国有大量节点,不同 DNS 会解析到不同节点。校园 DNS 给指的这个节点,恰好路由不可达。

第六步:修复

把 DNS 从自动获取改成手动指定:

  • 首选:114.114.114.114
  • 备用:223.5.5.5

改完后验证:

nslookupstatic.leetcode.cn# 结果变成了:116.196.148.192ping116.196.148.192# 23ms,通了!

再清一下浏览器 DNS 缓存(chrome://net-internals/#dns→ Clear host cache),虎牙和力扣恢复正常。

原理总结

浏览器打开 leetcode.cn │ ▼ 拿到主页面 HTML ───────────── ✅ 主站在阿里云,路由可达 │ ▼ 解析 static.leetcode.cn │ ├── 校园 DNS (202.38.64.18) → 43.137.171.248 → ❌ 路由不可达 │ └── 114 DNS (114.114.114.114) → 116.196.148.192 → ✅ 正常
  • CDN(内容分发网络)把网站的 JS/CSS/图片缓存在全国各地的节点上,用户就近访问,所以同一个域名在不同 DNS 下会解析到不同 IP
  • 这个案例中,不是网站挂了,也不是网络断了,而是 CDN 调度把你指到了一个你网络环境到不了的节点
  • 主页面 HTML 是服务器动态生成的,所以 curl 能拿到;但静态资源走 CDN,CDN 节点不可达就白屏

排查工具清单

工具用途
ping测 IP 连通性
nslookup查 DNS 解析结果
curl -I测 HTTP/HTTPS 可达性
tracert -d追踪路由路径
chrome://net-internals/#dns清浏览器 DNS 缓存

一句话总结

以后遇到"浏览器一直转圈加载但不显示内容",先看主页面能不能拿到(curl),再看页面上引用的 CDN 子域名能不能通——大概率是 CDN 调度烂了,改 DNS 绕过去就行。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询