先给结论:不要反复手动刷新,而是把“域名查询”变成按固定间隔自动执行、带时间戳落盘的记录任务,再拿这份记录去对齐解析、注册和网络三个层面的日志。手动查询只能证明你当时看到了什么,无法证明错误在哪个时段出现、持续多久、是否与某个动作同步。自动记录能把偶发错误从“传闻”变成可复查的时间序列。
你已经换过网络、换过查询工具、清过本地缓存,白天查一切正常,但每天某个固定时段或每次某个动作之后,解析结果就不对。这类问题的难点不在“查不到”,而在“查得到的时候是对的,错的时候你没在场”。
此时有两个都成立、但方向相反的解释:
这两种解释对应的处理动作完全不同:前者要改配置或找上游,后者要改观察方式。如果分不清,很容易在错误的时间点改了对的东西,第二天问题照旧。
关键证据不是“我看到了错误”,而是“在什么时间、从什么路径、用什么方式查询,得到了什么结果”。至少要固定三样东西:
当记录连续覆盖了错误时段和正常时段,就能做一次简单对照:如果同一路径在错误时段返回异常、在正常时段返回正常,支持解释一;如果不同路径在同一时刻返回不同结果,而每条路径自身是稳定的,支持解释二。
假设某站点每天 02:00 前后出现解析异常,其他时间正常。你可以安排两台机器,一台走公司出口,一台走独立网络出口,每 5 分钟各执行一次查询并记录时间、出口、返回结果。连续跑三天后可能出现三种结果:
这个例子的数字只用于说明比较方法,不代表任何真实环境的实际表现。
手动翻看终端输出,错误时段一过就找不回来了。把每次查询的时间、路径和原始返回追加写入同一个文件,是让证据可复查的最低成本动作。例如在计划任务里调用查询命令,把输出重定向到按天分割的日志文件:
date -u +"%Y-%m-%dT%H:%M:%SZ" >> dns-watch.log && dig +noall +answer example.com A >> dns-watch.log
这一步的结果直接影响下一步:有了按天落盘的记录,你才能把错误时段和配置变更、发布记录、上游通知放在同一条时间轴上比对;没有记录,只能凭印象争论“是不是又坏了”。
短暂错误很容易被归因到错误的地方。做判断前先确认这几点:
如果记录显示错误只出现在你手动查询时、自动任务从未复现,那么优先怀疑的是查询动作本身触发的条件差异,而不是域名状态。下一步应当把自动任务的间隔缩到比错误持续时间更短,再观察一轮,确认错误是否真的存在,再决定是否改动解析或联系上游。