四个层级,按顺序排查
DNS
解析域名
传输层
TCP 连接
TLS
证书验证
应用层
HTTP 响应
如何诊断“无法访问此网站”错误
“无法访问此网站”(或您的浏览器中的类似提示)有意写得很含糊,它涵盖了从 URL 拼写错误,到服务器完全宕机,再到您自己网络中断的各种情况。要高效地排查,就应当先检查最便宜、最快的那些项目。
先做一次单纯的 DNS 查询
在断定服务器宕机之前,先脱离浏览器,单独解析一下这个域名。如果返回了一个正常的 IP 地址,说明问题不在 DNS,您可以接着检查连接本身(端口是否开放、TLS 是否协商成功、服务器是否真的在响应)。如果返回的是 NXDOMAIN、超时,或者一个看起来属于私有或不可达的地址,那就说明问题被锁定在 DNS 上,这立刻排除了一大类其他的排查方向。
每种结果说明什么
| 查询显示的结果 | 可能的层 | 下一步 |
|---|---|---|
| NXDOMAIN | 域名本身 | 检查注册情况和拼写,这不是服务器问题 |
| 超时或 SERVFAIL | DNS,可能是暂时性的 | 重试,然后换一个解析器再检查 |
| IP 正常,但网站仍然打不开 | 网络、TLS 或应用层 | 先检查端口连通性,再检查 TLS,最后检查 HTTP 状态 |
| IP 正常,但解析到了意料之外的地方 | 可能是配置错误或被入侵 | 核实该 DNS 记录是否确为有意设置 |
这也是为什么一个快速、无需注册的查询工具在故障处理期间格外有用:它能在几秒钟内给出 DNS 层的答案,无需打开终端或记住 dig/nslookup 的语法,让您可以立刻判断自己面对的是不是 DNS 问题,然后再决定把时间花在别处。
DNS 之后:接下来按顺序要检查的事项
- 到已解析 IP 的预期端口(通常是 443)的 TCP 连通性:即使 DNS 完全正常,防火墙或完全宕机的服务器也会在这一步拒绝连接或一直挂起。
- TLS 证书有效性:证书过期或与域名不匹配会让浏览器弹出看起来很吓人的安全警告,但这与 DNS 或服务器是否可达毫无关系。
- HTTP 层的响应:如果服务器接受了连接,却返回 5xx 错误,说明它已启动且可达,只是在应用层出了问题,这离 DNS 能造成的任何问题已经相差好几步了。
按顺序逐一排查,即 DNS,然后是传输层,然后是 TLS,最后是应用层,每排除一步,剩下的可能性就会明显缩小,而不是一下子对整个技术栈盲目猜测。
为什么偏偏是这个顺序
这个序列中的每一层都完全依赖于前一层的成功,所以按顺序检查(而不是直接跳到看起来最可能的那一层)才是高效的做法。如果 TCP 连接根本就没有建立,检查 TLS 证书就毫无意义;如果 TLS 协商失败,检查 HTTP 响应码同样没有意义。从 DNS 开始(它是其他一切得以进行之前必须先发生的第一件事),然后一层一层向外推进,您就永远不会白白去调查一个症状,而它其实一直是由更早、更简单的某一层的问题造成的。
需要查看某个域名的公网 DNS 地址?使用 Domain IP Lookup 工具。
相关阅读
“传播”其实只是缓存过期
0 分钟
您保存了更改
0-5 分钟
您的 DNS 托管商完成更新
最长到 TTL
旧答案仍在缓存中
TTL 之后
所有人都看到新答案
没有任何内容被推送出去,只是各个缓存不再复用自己的副本
DNS 修改没有生效时该怎么办
您更新了记录,等了一阵,看起来还是不对。在断定出了故障之前,请按顺序逐项排查。
一次查询通常应耗时多少
排查 DNS 解析缓慢的问题
网站加载缓慢,有时其实是 DNS 查询慢在作怪。本文教您如何分辨二者,并说明常见的成因。
同一个域名返回不同答案的三个原因
地理路由
每个地区对应不同的边缘服务器
缓存
TTL 各自独立,缓存各自独立
分割视图
刻意设计的不同答案
为什么我的域名在不同网络上解析结果不同?
在家里、办公室或手机蜂窝网络下看到不同的 IP,未必是故障。本文说明背后究竟发生了什么,以及如何区分正常差异与真正的问题。