DNS 改了还没生效:用 dig 分开看权威记录和缓存
文章目录
控制台里把地址改了,电脑却还解析到旧 IP。先分清你改的是哪家权威 DNS,以及当前查询经过哪个递归解析器。网页控制台、权威服务器、运营商缓存和应用缓存,可能正处于不同状态。
不要先隐藏所有响应信息
dig site.example A
dig site.example AAAA
dig site.example NS
域名需要换成实际目标。先保留完整输出,查看状态、ANSWER、AUTHORITY 和最后显示的查询服务器。+short 很方便,但会隐藏 NXDOMAIN、SERVFAIL、权威标记等诊断线索。
顶级域名委派、子域名委派和 CNAME 还可能引向其他区域。不能只看一个域名控制台就认为记录由它提供;复杂情况可用 dig +trace site.example A 检查委派路径。trace 需要直接访问沿途 DNS,网络限制会影响结果,不等于网站本身故障。
向实际权威服务器直接查询
确认权威 NS 后,把示例服务器名称换掉:
dig @ns1.provider.example site.example A +norecurse
dig @ns2.provider.example site.example A +norecurse
关注回答是否权威以及多个 NS 是否一致。权威端本身还是旧值,继续等本地缓存没有意义;先核对修改的区域、主机名、记录类型与是否保存成功。
如果权威端正确,再查询当前使用的递归服务器:
dig @resolver.example site.example A
这不是要求使用一个固定公共 DNS,填入你要比较的真实解析器地址。对比记录和剩余 TTL;已有缓存按它当时获得的 TTL 过期,不会因为现在把控制台 TTL 调小就立即全部失效。
空回答与代理地址分别理解
NXDOMAIN 的否定结果也可能被缓存。先前不存在的名字刚被创建,仍可能在一段时间内得到旧的否定回答。状态与 AUTHORITY 中的 SOA 信息能帮助判断,不能把空输出直接写成“没有配置”。
使用 CDN 代理的记录,公开查询可能返回代理网络的地址,而不是控制台里填的源站 IP。此时还要看代理是否开启,以及源站访问路径;不能按 IP 不同就认定改错了。
某些递归解析器有策略、分区或不同出口,应用还可能自带解析缓存。系统工具查到新值,浏览器仍访问旧连接时,继续看客户端实际连接地址,而不是重复改 DNS。
给结论划定范围
记录查询时间、查询服务器、类型、状态、答案与 TTL。一个解析器返回新值,只能证明这次在它上的查询结果;“全球都生效了”需要更广的证据,也很难由一次命令确认。
dig 参数与响应检查见 BIND 官方手册。如果 A 正常而部分用户仍连不上,接着检查 AAAA 与 IPv6 HTTPS 路径。