DNS解析故障排查:从现象到修复的完整命令清单
域名解析出问题时,最忌讳直接去域名后台乱改记录。
正确的顺序是:先确认故障范围,再从本地到权威服务器逐层缩小,最后才动配置。
本文按这个顺序给出可执行的命令和判断标准,适用于 Linux、Windows 和常见 DNS 服务商后台。
先分清是本地问题还是全网问题
这一步决定后面要不要改域名记录。
- 用手机 4G/5G 流量打开同一域名,如果手机正常、电脑异常,大概率是本地 DNS 缓存或本机 hosts 文件问题。
- 用多个在线 DNS 检测工具查询同一域名,如果多个地区结果不一致,说明解析记录或 NS 配置可能有问题。
- 让异地朋友帮忙访问,如果只有你所在网络异常,优先怀疑本地运营商 DNS 或公司内网 DNS。
判断标准很简单:只有你异常,查本地;
多地都异常,查域名配置。
用命令验证本地解析结果
在动手改任何配置前,先记录当前解析结果,方便后续对比。
Linux 或 macOS 终端执行:
dig example.com A +short
dig example.com NS +short
Windows 在 CMD 或 PowerShell 执行:
nslookup example.com
nslookup example.com 8.8.8.8
第一条命令走你本机默认 DNS,第二条强制走公共 DNS。
如果两者结果不同,说明本地缓存或本地 DNS 服务器返回了旧数据。
此时可以清理缓存:
Windows 清理 DNS 缓存:
ipconfig /flushdns
Linux 根据发行版不同,常见方式:
sudo systemd-resolve --flush-caches
# 或
sudo resolvectl flush-caches
macOS 可尝试:
sudo dscacheutil -flushcache
清完缓存再查一次,如果结果和公共 DNS 一致,问题基本解决。
检查域名解析记录和 NS 配置
如果公共 DNS 也查不到正确结果,说明问题在域名侧。
登录域名注册商或 DNS 服务商后台,检查这几项:
- A 记录:主机记录是否写对,比如
@、www,记录值是否为服务器真实 IP。 - CNAME 记录:目标域名是否拼写正确,末尾是否多写或少写点号。
- NS 记录:是否指向你实际使用的 DNS 服务商,比如
ns1.xxx.com、ns2.xxx.com。 - TTL 值:改记录前记录原 TTL。TTL 越长,旧记录在全球缓存里停留越久。
修改记录后,用下面的命令指定权威 NS 查询,绕过公共缓存:
dig @ns1.xxx.com example.com A +short
把 ns1.xxx.com 换成你实际的 NS 地址。
如果权威服务器返回的是新 IP,说明记录已经生效,只是公共 DNS 还在缓存。
常见报错和对应处理
NXDOMAIN:域名不存在或子域名写错。
检查主机记录拼写,确认域名没有过期。
SERVFAIL:权威服务器拒绝响应或配置异常。
检查 NS 是否可达,域名是否被暂停解析。
解析到旧 IP:优先怀疑 TTL 缓存。
等待 TTL 过期,或临时用 dig @8.8.8.8 验证新记录是否已推送到公共 DNS。
部分地区无法访问:可能是智能解析或线路问题。
检查 DNS 服务商是否配置了分线路解析,确认各线路记录值是否正确。
修改后长时间不生效:先确认 NS 是否已切换成功,再检查 TTL 设置。
如果 NS 切换后 24 小时内仍异常,联系 DNS 服务商确认域名状态。
改完记录后的验证清单
完成修改后,按下面顺序复查:
- 用
dig example.com A +short确认本机解析结果。 - 用
dig @8.8.8.8 example.com A +short确认公共 DNS 结果。 - 用
dig @ns1.xxx.com example.com A +short确认权威服务器结果。 - 用在线多地 ping 或 DNS 检测工具确认不同地区结果一致。
- 浏览器无痕模式或换设备访问,排除本地缓存干扰。
三个结果一致,才算解析真正生效。 如果权威服务器正确、公共 DNS 未更新,等待 TTL 过期即可,不需要反复修改记录。
排查 DNS 解析故障的核心不是记住所有命令,而是建立从本地到权威的检查顺序。
先确认范围,再逐层验证,最后才改配置,能避免大部分误操作。
遇到异常时,优先回看本文的报错对照和验证清单,通常能快速定位问题环节。