凌晨值班,同一业务域名在北京、上海和异地运营商返回不同地址,部分 IPv6 用户还拿到 DNS64 合成结果。团队常归为“DNS 故障”,实际却可能来自缓存、地理分区解析、EDNS Client Subnet(ECS)透传,甚至链路劫持。只换本地解析器,很难触及根因。
如果你正在选机器,或者想先把线路和配置跑通再谈长期方案,可以先看看这几家的线路说明和技术参数:cloudleadinno(全球云服务器),先看清带宽线路、流量策略和退款条款,再决定要不要迁。
一、地址分叉来自哪些环节
递归解析器先查缓存,未命中才向权威端获取答案。权威服务可按来源网段、ECS 或业务配置返回不同 A/AAAA 记录,所以地理分流通常按递归节点或 ECS 网段选址,并非按最终用户 IP 精确分流。

ECS 的透传策略并不统一:有的递归器会裁剪、忽略或替换子网信息。IPv4 与 IPv6 也可能命中不同记录;纯 IPv6 网络经 DNS64 合成 AAAA,同样会形成表面差异。
时间与链路会放大偏差:未过期缓存、变更后的多级缓存、CNAME 外部链和预取结果,都可能让相邻查询答案不同。看到多个 IP,先确认是否本就属于分流。
二、用分层证据定位偏差
先固定变量:保持客户端不变,切换递归解析器;再保持递归器不变,切换网络位置。记录完整域名、A/AAAA 类型、响应码、TTL、CNAME 链和地址。浏览器 DoH、系统解析器与命令行可能走不同入口,不能混作一组结果。

随后跨层对照:向递归器查询,再通过 +trace 或直接指定权威名称服务器查询,比较地址、TTL 和响应标志,并记录权威应答的 AA 标志、SOA 序列号。客户端偏离而权威稳定,应查本地缓存、hosts、VPN 与中间设备;多个递归器同时偏离权威,则查 ECS、权威配置和同步状态。DNSSEC 比较须保持验证环境一致,不能只看 AD 标志。
识别DNS劫持时,分别测试 UDP 与 TCP 53 端口,并从不同网络复测。异常地址、标志不一致或仅特定链路被改写只能形成线索,不能单独定案;还需核对权威应答、SOA 序列号和运营商日志。使用 ServLlama 归并各节点样本,可避免手工记录遗漏。
常见误区是只测 A 而漏掉 AAAA,或清缓存后立刻比较;前者遗漏协议族与 DNS64,后者会把传播窗口误判成劫持。应保留原始响应、时间戳和递归器地址,让偶现问题能够复现。
解析偏差的剩余原理
递归解析器返回的并非固定地址表;它会结合缓存状态、查询类型、DNSSEC 校验和上游视图生成答案,CDN 还会按访问网段调度节点。因此解析结果偏差未必等于故障。
EDNS Client Subnet(ECS)会把客户端网段带给权威 DNS。权威方可据此返回就近节点;未携带、被忽略或网段不同,结果都会变化。ECS 还参与缓存键,网段过细会降低缓存命中率。
地理分区解析还会参考地址分配区域、注册机构、Anycast 路由位置及 CDN 策略。IP 归属地不等于用户所在地,运营商出口、VPN、移动网络切换均会改变答案,A 与 AAAA 也可能进入不同入口。
DNS劫持多发生在路由器、DHCP、终端或运营商侧,信号包括任意域名返回同一 IP、TTL 异常、答案 IP 的 ASN 与业务不符。DNS 正常也不代表后续路由、CDN 回源和端口正常。

排查步骤与检查清单
常见误区是只比较一次 dig 输出,未固定递归器、域名、类型、传输方式和 ECS;或漏看 hosts、mDNS、浏览器安全 DNS、VPN、应用内置解析器及旧缓存。更换解析器后答案变化,也不能直接证明原 DNS 被劫持,因为 ECS 与缓存同时变化。
检查清单:①记录时间、完整域名、A/AAAA 类型、递归器 IP 和网络出口,用 dig +noall +answer 保存证据;②固定同一递归器,以默认 ECS 和 +subnet=203.0.113.0/24 对照查询 A、AAAA、CNAME,并换成实际出口前缀复测;③在直连、另一网络及可信递归器上复测,用 dig +trace 查委派链,再以 +norecurse 向权威服务器查询;④核对 hosts、DHCP DNS、浏览器安全 DNS,并逐层清理缓存;⑤查询随机不存在域名是否返回广告或通用首页,核对答案 IP 的 ASN、TTL 和归属;⑥比较 UDP 53、TCP 53、DoT、DoH,后两者须使用同一递归器,再检查防火墙、DHCP 和终端安全软件。
处理顺序应是先定位异常链路,再区分缓存、ECS、地理调度与劫持,最后选择可信递归器、加密 DNS 或修正网络配置。不要长期硬编码 CDN 地址;修复后用多地拨测持续复核,并等待 TTL 到期再次确认。


喜欢
顶
难过
囧
围观
无聊





