DNS配置错误怎么排查:从本机到域名解析逐层定位
简答:DNS配置错误先区分本机、域名解析和网站服务三层:检查IP与DNS地址,再用nslookup或dig对比递归DNS和权威DNS,最后核对域名状态、NS。
定义:DNS配置错误,是设备、路由器、递归DNS、权威DNS或域名记录之间的配置不一致,导致域名无法解析、解析到错误地址或解析正常但网页仍打不开。
先用错误提示判断故障层级
如果你看到“无法访问此网站”“DNS服务器未响应”“DNS_PROBE_FINISHED_NXDOMAIN”,不要先反复修改DNS地址。先判断问题发生在本机、域名解析,还是网站服务本身。DNS只负责把域名转换成IP;解析已经得到IP后,后续还要经过TCP、TLS和HTTP,网页返回403、404或500时,通常不再是单纯的DNS配置错误。
| 现象 | 优先判断 | 第一步验证 | 处理方向 |
|---|---|---|---|
| DNS服务器未响应、请求超时 | 本机到DNS服务器的连接、路由器或DNS服务 | ipconfig /all、ping DNS服务器IP、nslookup example.com | 检查网关、DNS地址、防火墙,以及UDP/TCP 53端口 |
| NXDOMAIN、找不到域名 | 域名不存在、NS委派错误、域名处于暂停解析状态,或负缓存 | nslookup example.com,再查询权威DNS | 核对域名状态、NS、权威区域和负缓存 |
| 解析不生效,仍返回旧IP | 缓存、TTL、查询的DNS线路或记录未保存 | 分别查询本地DNS、其他递归DNS和权威DNS | 先确认权威DNS是否已更新,再处理本地和路由器缓存 |
| 解析得到IP但网页打不开 | TCP、TLS、HTTP、IPv4/IPv6或网站服务 | curl -I https://example.com或浏览器开发者工具 | 转到连接、证书、HTTP状态码和服务器日志排查 |
| 只有一个设备打不开 | 设备DNS、hosts、浏览器或本地网络 | 用另一台设备或移动数据对照 | 检查设备DNS、缓存、hosts和浏览器设置 |
Microsoft的客户端排查顺序也是先看IP配置、网关和DNS服务器,再用nslookup验证名称解析;如果缓存中显示“名称不存在”,可清理客户端DNS缓存。可参考对 DNS 客户端进行故障排除。
第一步:核对设备、路由器和系统DNS地址
先不要修改域名解析后台。假如所有网站都打不开,或者同一个Wi-Fi下多台设备同时提示DNS错误,优先检查本地网络。假如只有一个域名异常,而其他网站正常,再进入域名状态和权威DNS检查。
Windows
- 打开“命令提示符”,执行
ipconfig /all。 - 确认当前网卡有有效的IPv4地址、子网掩码、默认网关,并记录“DNS服务器”地址。
- 执行
ping 你的DNS服务器IP。不通时,先检查设备与路由器的连接;但要注意,禁用ICMP时,ping失败不等于DNS服务一定不可用。 - 执行
nslookup example.com,观察使用的是哪个DNS服务器,以及是否返回地址。 - 确认是缓存问题后,再执行
ipconfig /flushdns,然后重新查询。
macOS
打开“苹果菜单”→“系统设置”→“网络”→选择当前网络服务→“详细信息”→“DNS”,检查DNS服务器列表和搜索域。菜单名称以当前界面为准。Apple官方路径见在 Mac 上更改 DNS 设置。
终端中可执行scutil --dns查看系统当前使用的解析器;如果系统使用systemd-resolved的Linux环境,可执行resolvectl status查看DNS服务器,必要时用sudo resolvectl flush-caches清理缓存。
Android和iPhone
Android设备可打开“设置”→“网络和互联网”→“专用DNS”,选择“自动”或核对“专用DNS提供商主机名”。不同品牌菜单可能放在“连接与共享”“更多连接设置”中,优先在设置中搜索“专用DNS”。Google官方说明指出,专用DNS只保护DNS问答,不能替代其他网络安全措施,详见控制专用 DNS 和其他网络设置。
iPhone可打开“设置”→“无线局域网”→当前网络右侧的“信息”按钮→“配置DNS”,检查是否使用了手动DNS。若设备只在某个Wi-Fi下异常,可先点“忽略此网络”,重新加入后再测试;菜单名称以当前界面为准。Apple的无线局域网设置说明见在 iPhone 上管理无线局域网设置。
家用路由器
登录路由器管理页面,依次检查“网络设置”“WAN口设置”或“LAN/DHCP设置”中的DNS服务器。确认没有把一个不可访问的地址填写为首选DNS,也没有在多台设备上同时启用DHCP。Apple的路由器设置文档提醒,同一网络通常只应有一个DHCP服务器,多个DHCP服务器可能造成地址冲突;可参考Wi-Fi 路由器和接入点的推荐设置。
第二步:用nslookup或dig区分递归DNS与权威DNS
本机查询成功,不代表域名的权威数据正确;本机查询失败,也不一定代表域名记录不存在。要缩短判断路径,至少做“当前DNS”和“权威DNS”两次查询。
Windows命令
- 查询当前配置的DNS:
nslookup example.com。 - 查询指定DNS:
nslookup example.com DNS服务器IP。 - 查询NS记录:
nslookup -type=NS example.com。 - 分别检查记录类型:
nslookup -type=A example.com、nslookup -type=AAAA example.com、nslookup -type=CNAME www.example.com、nslookup -type=MX example.com、nslookup -type=TXT example.com。
macOS或Linux命令
- 查询A记录:
dig example.com A。 - 指定DNS服务器:
dig @DNS服务器IP example.com A。 - 查询NS:
dig example.com NS。 - 查询权威服务器返回的结果:先从NS结果得到权威DNS地址,再执行
dig @权威DNSIP example.com A。 - 需要检查委派链时执行
dig +trace example.com A。
不要把dig ... +noall +answer +authority当作唯一排查命令:+noall会隐藏头部状态,读者可能看不到status: NXDOMAIN或status: NOERROR。排查时先使用完整输出的dig @DNS服务器IP example.com A,再根据ANSWER和AUTHORITY判断结果。Microsoft的DNS查询文档说明,A、AAAA、SOA等记录类型对应不同查询目标,DNS服务器还可能通过递归查询其他服务器取得答案,详见Windows 和 Windows Server 中的 DNS 查询和查找。
| 对比项 | 当前配置的递归DNS | 域名权威DNS |
|---|---|---|
| 查询方式 | nslookup example.com或dig example.com A | dig @权威DNSIP example.com A |
| 返回旧IP | 可能仍在缓存中 | 如果也返回旧IP,优先检查权威区域或记录保存状态 |
| 返回NXDOMAIN | 可能是负缓存,也可能是上游真实返回 | 权威DNS返回NXDOMAIN时,检查域名、区域和记录名称 |
| 权威DNS正常、递归DNS异常 | 缓存、线路、递归服务或委派更新路径存在差异 | 不宜继续修改权威记录,先换查询位置复核 |
第三步:核对域名状态、NS和记录内容
如果多个DNS服务器都无法得到正确结果,进入域名管理和权威区域检查。先看域名是否过期、是否被暂停解析、是否完成必要的注册信息流程,再确认当前生效的NS是否就是你正在修改的那组DNS服务器。ICANN说明,clientHold会使域名不在DNS中激活,因此域名不会解析;可参考ICANN EPP Status Codes。
| 记录 | 作用 | 常见核对点 |
|---|---|---|
| A | 把主机名指向IPv4地址 | 记录值是否为正确IPv4;根域名和www是否分别配置 |
| AAAA | 把主机名指向IPv6地址 | IPv6地址是否真实可达;IPv6失败而IPv4正常时单独测试 |
| CNAME | 把别名指向另一个域名 | 目标域名是否存在;同一主机名是否又配置了冲突记录 |
| MX | 指定邮件接收服务器 | 目标通常应是域名;邮件故障不能只检查A记录 |
| TXT | 保存验证或策略文本 | 主机名、引号、空格和多条记录是否按要求填写 |
根域名通常在控制台中用“@”表示,www则是独立的子域名。例如,给根域名配置A记录不一定会自动生成www记录;应分别查询example.com和www.example.com。如果控制台使用完整域名填写主机记录,要避免把后缀重复写成类似www.example.com.example.com的名称。
修改记录后,不要只看管理后台的“已保存”。应直接查询权威DNS确认结果,再查询本地DNS和其他网络位置。TTL只决定缓存答案可保留多久,不能证明记录已经写入权威区域。RFC 2308明确规定,NXDOMAIN或没有所请求类型数据的NODATA响应会携带SOA信息用于负缓存;SOA的MINIMUM在现代语义下主要用于负响应缓存时间,不是整个区域记录的默认TTL,详见RFC 2308:DNS负缓存。
第四步:处理缓存、IPv6和后续网站错误
当权威DNS已经返回新记录,而本机仍返回旧结果时,按“浏览器→系统→路由器→递归DNS”顺序清理或更换查询位置,不要连续修改多项配置。Windows可执行ipconfig /flushdns;Linux使用systemd-resolved时可执行sudo resolvectl flush-caches;浏览器则先关闭页面、重新打开隐私窗口或重启浏览器。DNS缓存清理后仍旧不一致,应再次使用dig @权威DNSIP 域名 A与dig @当前DNSIP 域名 A对比。
如果A记录正常、AAAA记录也存在,但部分设备打不开,分别测试IPv4和IPv6。Windows可用ping -4 example.com和ping -6 example.com做基础对照;Linux或macOS可用curl -4 -I https://example.com和curl -6 -I https://example.com。只有IPv6失败时,重点检查AAAA记录、路由器IPv6、终端IPv6地址和上游链路,不要直接删除A记录。
如果DNS查询已经得到正确IP,但浏览器显示403、404、500、证书错误或连接超时,说明排查重点应转移到HTTP、TLS、TCP或网站服务器。此时可执行curl -I https://example.com查看HTTP响应头;若连不上,再根据“拒绝、重置、超时、TLS警报”的差异继续分层定位。本站的五层连接路线:DNS、TCP、TLS、HTTP、浏览器可用于继续排查。
一条可复现的最短排查路径

- 确认范围:记录是所有网站异常、一个域名异常,还是只有一台设备异常。
- 检查本机:Windows执行
ipconfig /all,macOS/Linux查看当前DNS和网关,手机检查当前Wi-Fi与DNS设置。 - 测试当前DNS:执行
nslookup example.com或dig example.com A,记录服务器地址、状态和返回IP。 - 查询NS:执行
nslookup -type=NS example.com或dig example.com NS,确认委派是否指向正在维护的权威DNS。 - 查询权威结果:执行
dig @权威DNSIP example.com A,同时检查AAAA、CNAME、MX或TXT等实际需要的记录类型。 - 检查域名状态:确认域名没有过期、暂停解析或其他注册状态限制。
- 处理缓存:清理系统和浏览器缓存,必要时重启路由器,再从另一台设备或另一条网络复核。
- 转交下一层:解析得到正确IP后,使用
curl -I、IPv4/IPv6对照和浏览器开发者工具继续检查TCP、TLS与HTTP。
如果你担心改错配置,先保存原DNS地址、网关、NS和现有记录,再一次只改一个变量。修改后保留查询输出,便于判断是记录内容变化、缓存过期,还是网络位置不同造成的结果差异。
相关排查入口
如果本文确认问题不止是DNS配置错误,可以按下面顺序继续:先看域名解析失败:区分超时、无记录与错误地址,再看DNS缓存异常:按浏览器、系统、路由器顺序清理;若记录已经修改但仍返回旧IP,可进入DNS记录修改后仍解析旧IP或NXDOMAIN。如果只有浏览器打不开而命令查询正常,再检查系统代理与浏览器代理冲突排查。
常见问题
DNS配置错误和网站服务器故障有什么区别?
DNS配置错误通常表现为域名无法解析、NXDOMAIN、DNS超时或返回错误IP;服务器故障则可能已经解析出正确IP,但出现连接超时、证书错误、403、404或500。先用nslookup或dig确认是否有正确IP,再决定排查DNS还是网站服务。
为什么DNS记录改了,电脑上还是旧IP?
先查询权威DNS。如果权威DNS已经返回新IP,旧结果通常来自本机、路由器或递归DNS缓存;如果权威DNS仍返回旧IP,应检查是否改错了NS、区域或主机记录。TTL影响缓存保留时间,但不存在所有DNS修改都固定等待同样时长的规则。
NXDOMAIN是不是一定说明域名不存在?
不一定。NXDOMAIN表示查询的名称不存在,但用户看到的结果也可能来自负缓存、错误的NS委派、域名暂停解析或查询名称拼写错误。应直接查询权威DNS,并检查域名状态和SOA负缓存信息。
A记录、AAAA记录和CNAME记录怎么选?
A记录用于IPv4地址,AAAA记录用于IPv6地址,CNAME用于把别名指向另一个域名。根域名和www通常需要分别核对;如果配置了AAAA但IPv6链路不可用,可能出现IPv4正常而部分设备访问失败的现象。
手机显示DNS异常,应该改哪里?
先确认是所有Wi-Fi都异常,还是某一个无线网络异常。Android可在“设置→网络和互联网→专用DNS”检查;iPhone可在“设置→无线局域网→信息→配置DNS”检查。不同品牌和系统版本菜单可能不同,以当前界面为准。
清理DNS缓存后仍然打不开网站怎么办?
重新查询A和AAAA记录,确认返回IP是否正确;如果解析正常,再用curl或浏览器检查TCP、TLS和HTTP。若只有浏览器异常,继续排查hosts、浏览器扩展、代理设置和Service Worker,而不是继续修改DNS记录。
相关阅读
- 域名解析失败:区分超时、无记录与错误地址
- DNS缓存异常:按浏览器、系统、路由器顺序清理
- DNS记录修改后仍解析旧IP或NXDOMAIN
- 系统代理与浏览器代理冲突排查
- 五层连接路线:DNS、TCP、TLS、HTTP、浏览器