网站打不开怎么做DNS查询?域名解析故障排查指南
网站打不开不一定是服务器故障,也可能与 DNS 解析异常有关。本文介绍如何通过 DNS 查询检查 A 记录、CNAME、TTL 与多地区解析结果,并结合 Ping、HTTP 和 CDN 回源快速定位故障。
网站突然打不开时,很多人的第一反应都是先看服务器:CPU 有没有跑满、Nginx 是否正常、数据库是不是挂了,或者干脆先把服务器重启一遍。很多时候你会看到服务器本身没有任何异常,直接访问源站 IP 也能正常响应,可一换成域名就打不开;又或者自己电脑访问一切正常,客户却反馈某些地区一直提示找不到服务器。这时大多是在 DNS 解析出了问题。
域名访问网站之前,需要先通过 DNS 找到对应的服务器 IP。如果 A 记录仍然指向旧服务器、CNAME 配置错误、本地 DNS 缓存没有刷新,或者不同运营商的递归 DNS 返回结果不一致,最终表现出来都可能是“网站打不开”。
所以,碰到域名突然无法访问时,与其一上来就折腾服务器,不如先查清楚:这个域名现在到底被解析到了哪里?下面就按照实际网站运维中的排查顺序,看看如何通过 DNS 查询快速判断故障究竟出在域名解析、CDN、网络线路还是源站服务器。

一、网站打不开,为什么要先检查DNS?
用户在浏览器中输入一个域名之后,并不会直接连接网站服务器。正常的访问过程大致是:
用户输入域名
↓
本地 DNS 缓存
↓
递归 DNS 服务器
↓
权威 DNS 服务器
↓
A / AAAA / CNAME 解析记录
↓
CDN 节点或源站 IP
↓
网站服务器也就是说,在浏览器真正建立 HTTP 或 HTTPS 连接之前,首先要完成 DNS 查询。如果 DNS 没有返回正确地址,后面的服务器即使完全正常,用户一样打不开网站。
例如网站原本部署在:
103.10.1.10后来服务器迁移到了:
103.20.2.20但 DNS 记录仍然返回旧 IP:
example.com → 103.10.1.10这时候新服务器配置得再完善也没有意义,因为用户请求压根没有到达新服务器。实际排障时,可以先通过几个现象快速判断是否值得优先检查 DNS:
网站现象 | 优先怀疑的问题 |
|---|---|
IP 可以访问,域名打不开 | DNS 解析、虚拟主机或 CDN |
刚修改解析后部分用户打不开 | TTL、DNS 缓存 |
只有某些地区打不开 | 地区 DNS、运营商线路或 CDN 调度 |
浏览器提示找不到服务器 | DNS 解析异常 |
换公共 DNS 后恢复正常 | 本地或运营商 DNS |
接入 CDN 后立即无法访问 | CNAME、CDN 域名配置 |
因此,网站打不开时,DNS 查询通常是成本最低、定位速度最快的一步。
二、网站打不开怎么做DNS查询?
排查 DNS 时,不需要一开始就研究大量复杂记录。
对于普通网站无法访问的问题,首先看三个东西就够了:
A 记录
AAAA 记录
CNAME 记录
其中最关键的问题是:
当前查询到的 IP 或 CNAME,是否和你实际配置的一致?
1. 使用在线DNS查询工具
如果不习惯使用命令行,可以直接通过在线 DNS 查询工具检查。
例如使用 Chahu DNS 查询,输入需要排查的域名后,可以查看当前返回的 A、AAAA、CNAME 等记录。
假设查询:
www.example.com得到:
A → 203.0.113.20这时候首先去服务器或 CDN 控制台确认:
203.0.113.20是不是你现在真正使用的服务器地址。
如果后台已经换成:
203.0.113.80而 DNS 仍然返回.20,问题基本已经定位到了 DNS 记录或缓存这一层。在线查询还有一个好处,就是可以避免只看自己电脑里的 DNS 缓存结果。
2. 使用nslookup查询
Windows、macOS 和 Linux 都可以通过命令行查询 DNS。
Windows 中可以使用:
nslookup example.com正常情况下会返回类似:
Name: example.com
Address: 203.0.113.20如果出现:
Non-existent domain或者完全查不到有效地址,就需要检查域名本身和 DNS 配置。
也可以指定公共 DNS,例如:
nslookup example.com 8.8.8.8然后再换一个 DNS:
nslookup example.com 1.1.1.1如果不同 DNS 返回的结果不同,就说明问题可能和 DNS 缓存或同步有关。
3. 使用dig进一步检查
Linux、macOS 或安装了相关工具的环境,可以使用:
dig example.com只想查看 A 记录时:
dig example.com A查询 CNAME:
dig www.example.com CNAME查看指定 DNS:
dig @8.8.8.8 example.comdig相比nslookup能看到的信息更多,特别适合排查 TTL、权威 DNS、CNAME 链路等问题。
不过对于普通站长来说,核心仍然不是工具本身,而是确认:
不同查询方式得到的解析结果,到底是不是你预期的结果。
三、A记录和CNAME最常见的4种解析故障
DNS 能查到结果,并不代表解析配置一定没有问题。
很多网站打不开,恰恰是因为 DNS “有结果,但结果错了”。
1. A记录还指向旧服务器
这是服务器迁移以后非常常见的问题。
例如旧服务器:
198.51.100.10新服务器:
198.51.100.50结果 DNS 查询仍然是:
example.com → 198.51.100.10这时候要检查:
DNS 控制台中的 A 记录是否真的修改成功;
是否修改错了域名;
@和www是否分别配置;
是否存在多个 A 记录;
旧记录是否仍然保留。
不少网站迁移后会出现一种情况:
example.com → 新服务器
www.example.com → 旧服务器于是访问不带www的域名正常,访问www却打不开。
因此排查时不要只查一个地址,至少同时检查:
example.com
www.example.com2. CNAME配置错误
如果网站接入了 CDN,通常不会直接把域名解析到某个固定 IP,而是使用 CNAME。
例如 CDN 服务商提供:
abc123.cdn-provider.comDNS 中应该配置:
www.example.com
↓
CNAME
↓
abc123.cdn-provider.com如果 CNAME 拼写错误、记录没有保存成功,或者仍然指向旧 CDN 地址,网站就可能出现访问失败。
所以接入 CDN 后打不开网站,第一件事应该检查:
www.example.com 的 CNAME是否和 CDN 控制台提供的目标域名完全一致。
这里尤其要注意复制过程中多出来的字符、错误的主机记录以及旧配置没有删除等问题。
3. A记录和CNAME发生冲突
同一个主机名通常不应该同时存在 A 和 CNAME。
例如:
www.example.com → A → 203.0.113.20同时又配置:
www.example.com → CNAME → abc.cdn.com这类冲突配置可能导致 DNS 服务商直接不允许保存,也可能在迁移或历史配置中留下异常记录。
如果网站刚接入 CDN,建议重新检查原有 A 记录是否已经按照服务商要求处理。
尤其不要看到“以前网站就是这样配置的”,就默认旧记录可以继续留着。
4. AAAA记录指向了错误的IPv6服务器
这是一个非常容易被忽略的问题。
假设网站的 A 记录正常:
A → 203.0.113.20但同时存在:
AAAA → 2001:db8::1234而这个 IPv6 地址已经失效。
部分支持 IPv6 的用户设备可能会优先访问 AAAA 记录,于是就出现一种很奇怪的现象:
有些人访问完全正常,有些人却一直打不开。
如果服务器并没有正常部署 IPv6,而 DNS 中还保留着旧 AAAA 记录,可以重点检查这一项。
四、为什么自己能打开,其他地区却打不开?
网站故障中最麻烦的一类情况,不是所有人都打不开,而是:
自己这里秒开,客户那里却始终访问失败。
这种情况很容易让运维误以为“网站明明没问题”。
实际上,DNS 并不是全球所有用户同时拿到同一个缓存结果。
DNS缓存和TTL会造成解析不同步
假设网站之前的解析为:
example.com → 103.10.10.10
TTL = 3600现在修改成:
example.com → 103.20.20.20权威 DNS 上的记录虽然已经修改,但不同地区的递归 DNS 可能仍然缓存旧结果。
于是短时间内可能出现:
上海电信 → 103.20.20.20
北京联通 → 103.10.10.10
广州移动 → 103.10.10.10
海外 DNS → 103.20.20.20这样一来,访问体验自然就不一样。
如果旧服务器已经关闭,那么仍然拿到旧 IP 的用户就会直接打不开网站。
这时候不要只查自己电脑
本地运行一次:
nslookup example.com只能说明你当前使用的 DNS 返回了什么。
并不能代表其他省份、运营商或海外网络看到的解析结果。
更有效的方法是使用多节点 DNS 查询,例如通过 Chahu 查看不同地区、不同运营商对同一个域名的解析结果。
如果绝大多数节点已经返回新 IP,而少部分节点仍然是旧 IP,那么问题通常更接近:
TTL 尚未完全过期;
部分递归 DNS 仍有缓存;
运营商 DNS 更新较慢。
如果出现完全不相关的 IP,则需要进一步排查 DNS 污染、解析线路配置或 CDN 调度。
五、DNS正常但网站仍打不开,该查哪里?
如果查询结果已经确认:
example.com → 正确 IP这只能说明 DNS 这一关基本通过了。
后面还有 TCP、TLS、HTTP、CDN 和源站等多个环节。
这时候就不要继续围着 DNS 转,而应该往下一层检查。
1. 先做Ping测试
可以先尝试:
ping example.com重点看两件事:
第一,Ping 时解析出来的 IP 是否仍然正确。
第二,目标网络是否存在明显丢包或延迟异常。
如果需要看多个地区,可以继续使用 Chahu 的多节点 Ping 测试,对比不同网络下的连通情况。不过这里要注意:
Ping 不通不等于网站一定打不开。
很多 CDN、云服务器或者防火墙会主动禁用 ICMP,因此 Ping 超时只能作为参考,不能直接认定服务器故障。
2. 检查80和443端口
对于普通网站,最重要的通常是:
TCP 80
TCP 443假设 DNS 查询正常:
example.com → 203.0.113.20但 443 端口无法建立连接,那么问题已经不再是 DNS。可能原因包括:
Nginx 或 Apache 没有启动;
云服务器安全组未开放 443;
系统防火墙拦截;
CDN 节点无法连接源站;
Web 服务监听地址错误。
尤其是 HTTPS 网站,如果 443 不通,浏览器基本无法正常访问。
3. 再做HTTP/HTTPS测试
网站真正提供服务使用的是 HTTP/HTTPS。所以 DNS 和 Ping 都正常后,最好继续测试 HTTP 响应。重点观察:
HTTP 状态码;
TCP 建连;
TLS 握手;
TTFB;
页面是否成功返回。
不同状态码对应的问题方向也不同:
HTTP状态 | 常见原因 |
200 | 页面正常返回 |
301/302 | 跳转配置 |
403 | 权限、WAF或访问策略 |
404 | 页面路径或回源路径错误 |
502 | CDN/反向代理无法连接源站 |
503 | 网站服务不可用 |
504 | CDN或代理回源超时 |
例如:
DNS 正常
Ping 正常
HTTPS 返回 502这种情况继续修改 DNS 基本没有意义,应该重点排查 CDN 回源或者源站 Web 服务。
六、浏览器常见错误分别代表什么问题?
其实排查网站打不开的问题,最忌讳的就是一句大而无当的“网页报错了”。浏览器弹出的那行英文字母,往往已经把最直接的线索甩到了我们脸上。遇到问题时,第一步先把那行错误代码复制下来,然后再对着下面的几种常见情况去逐一排查:
1. DNS_PROBE_FINISHED_NXDOMAIN
这句话通俗点说,就是“网络上的导航仪根本找不到这个域名”。
如果你的用户看到这个,大概率是域名解析层直接断了。可以顺着这个思路查:
域名本身: 看看域名是不是欠费过期了,或者域名状态被注册商锁了。
解析记录: 检查 DNS 的 NS( Name Server )配置有没有乱,A 记录或者 CNAME 记录是不是被误删了,或者刚改完解析还没生效。
安全配置: 如果开过 DNSSEC,瞅瞅是不是签名配错了导致解析校验失败。
排查建议: 先用站长工具或者终端查一下公开 DNS。如果连第三方工具都什么也查不到,那就不用折腾服务器了,赶紧去域名控制台看解析。
2. ERR_NAME_NOT_RESOLVED
这个也是 DNS 报错,但跟上边的 NXDOMAIN 有点区别,它往往更偏向于客户端(也就是你自己电脑/网络)查不到解析。
排查建议: 直接在命令行打nslookup 你的域名。
如果外网和公共 DNS(比如 114 或 8.8.8.8)能查到 IP,但你本地电脑查不到,问题肯定在本地:
检查电脑手动设的 DNS 是不是挂了。
清一下本地 DNS 缓存( Windows 执行ipconfig /flushdns)。
重启下路由器,或者怀疑是不是运营商 ISP 的 DNS 在抽风。
3. ERR_CONNECTION_TIMED_OUT
这个报错意味着:域名已经成功找到了 IP,但你的电脑发过去请求,对方迟迟没有给你任何回应,直到超时。
既然 IP 能拿到,说明 DNS 没大问题,这时候就要往网络链路和服务器方向去想了:
服务器状态: 机子是不是死机了?或者 CPU/内存爆了导致响应不过来?
网络与线路: 中间的网络线路是不是断了,或者丢包极其严重?
安全防护: 检查云服务器的安全组有没有放行端口,服务器内部的防火墙(如 iptables/ufw)是不是把请求拦截了。
CDN 与源站: 如果用了 CDN,看下是节点没连上源站,还是源站本身网路堵死了。
4. ERR_CONNECTION_REFUSED
超时( TIMED_OUT )是“压根没回应”,而拒绝连接( REFUSED )则是“目标服务器收到了请求,但明确把你弹回来了”。
这说明网络通路是顺畅的,IP 和端口也找到了,但目标端口根本没有程序在监听,或者被直接拒绝了。
比如 DNS 和 IP 都正常,但请求https时报这个错,通常排查:
服务有没有开: Nginx、Apache 或者你的 Node/Java 程序到底跑起来没有?
端口监听: Web 服务是不是漏配了 443 端口?或者只监听了127.0.0.1而没监听0.0.0.0?
容器映射: 如果用 Docker 跑的服务,检查-p端口映射有没有漏写或者写错。
5. SSL 证书错误
SSL 报错看着是加密问题,但很多时候它的根子其实在 DNS 解析不一致上。
最典型的场景:你刚给网站换了新服务器、切了新 IP,或者重新部署了证书。但因为各地的 DNS 刷新有延迟,一部分地区访问的是新服务器(证书正常),另一部分地区还在请求旧服务器(证书已过期或未配置),这就导致“有人访问正常,有人提示证书不安全”。
排查建议: 遇到这种报错,别急着重跑证书脚本,先看报错用户的实际访问情况:
让他们 ping 一下域名,看解析出来的 IP 到底是新站还是旧站。
检查 CDN 上面部署的证书状态,看是不是只更新了源站,忘更新 CDN 了。
确认一下证书的域名匹配范围,看看是不是漏掉了www子域名或者根域名。
七、怎么区分DNS、CDN和源站故障?
网站访问涉及很多环节,真正高效的排障方式并不是一次把所有配置翻一遍,而是逐层排除。可以参考下面这张表:
测试结果 | 更可能的问题 |
DNS完全查不到IP | 域名或DNS解析 |
DNS返回旧IP | TTL、DNS缓存、记录未修改 |
不同地区返回不同旧IP | 递归DNS缓存或线路解析 |
DNS正确,Ping异常 | 网络线路、目标主机 |
DNS正确,443不通 | 防火墙、安全组或Web服务 |
CNAME正确,HTTP 502 | CDN回源或源站 |
CNAME正确,HTTP 504 | 回源超时 |
IP能访问,域名打不开 | DNS、Host、SSL或CDN |
部分地区正常 | DNS、运营商线路、CDN节点 |
所有地区同时异常 | 源站、CDN或全局配置 |
八、网站打不开时,推荐按照这个顺序排查
如果不确定从哪里开始,可以直接按照下面这套顺序执行:
网站打不开
↓
① 查询DNS
↓
能否获得IP或CNAME?
├─ 否 → 检查域名、NS、A/CNAME
└─ 是
↓
② 返回结果是否正确?
├─ 否 → 检查DNS记录、TTL、缓存
└─ 是
↓
③ 多地区DNS结果是否一致?
├─ 否 → 检查区域DNS缓存、线路解析
└─ 是
↓
④ 测试Ping / TCP 80 / 443
↓
⑤ 测试HTTP/HTTPS
↓
⑥ 检查CDN节点与回源
↓
⑦ 检查源站服务器这套顺序最大的好处,是可以先把不同故障层分开。例如 DNS 都没有解析成功,就没有必要先去调 Nginx;如果 DNS 已经正确,而网站返回的是 502,也没有必要不停刷新 DNS 缓存。
实际排障中,最浪费时间的往往不是问题有多复杂,而是一开始就在错误的层级反复修改配置。
九、修改DNS以后多久才能恢复?
不少站长修改完 A 记录或者 CNAME 后,会不断刷新网页,发现十几分钟过去还没恢复,就以为 DNS 配置错了。
实际上,DNS 修改并不代表所有用户会在同一秒拿到新记录。
影响更新时间的主要因素是 TTL(Time To Live)。
例如原解析记录:
TTL = 3600代表递归 DNS 理论上可以缓存这条记录 3600 秒,也就是约 1 小时。
如果在缓存尚未过期时修改 IP,那么部分 DNS 服务器可能仍然继续返回旧地址。
除此之外,还可能受到:
本地操作系统 DNS 缓存;
浏览器缓存;
路由器 DNS 缓存;
ISP 递归 DNS;
公共 DNS 更新状态;
等因素影响。因此修改 DNS 后,最好不要只在一台电脑上反复测试,而是通过多个 DNS 节点确认新的解析结果是否已经逐步生效。
服务器迁移前可以提前降低TTL
如果提前知道要更换服务器或 CDN,可以在正式切换之前把 TTL 调低。比如原来是:
3600可以提前调整为:
300等旧 TTL 基本失效以后再迁移服务器。这样切换时,新旧 IP 同时存在的时间通常会明显缩短。迁移完成并确认业务稳定以后,再根据实际情况恢复正常 TTL。
网站打不开只是最终表现,背后的原因可能完全不同。有时候只是 A 记录还指向旧 IP,有时候是 CNAME 没有正确接入 CDN,有时候则是 DNS 已经完全正常,真正的问题出在 443 端口、SSL、CDN 回源或者源站服务。所以实际排查时,可以先从 DNS 开始。
先确认域名能不能正常解析,再确认解析出来的 IP 或 CNAME 是否正确;如果只是部分地区异常,再通过 Chahu 这类多节点查询工具对比不同运营商的 DNS 返回结果。DNS 确认正常以后,再继续往 Ping、TCP、HTTP、CDN 和源站方向检查。
按照这种从前往后的方式逐层排除,通常比一看到网站打不开就反复重启服务器,更容易找到真正的问题所在。DNS 查询并不是一个单独的测速动作,它更像是整个网站故障排查流程的第一道分界线:DNS 都没走通,就先别碰服务器;DNS 已经正确,就继续往下一层查。



