如何测试不同代理市场的 GeoDNS 一致性

不同区域的互联网解析器把代理请求路由到受控目标节点

代理出口即使位于所需国家,DNS 仍可能把请求引向为另一区域选择的基础设施,造成额外延迟、不同 CDN 节点、不同目录或不一致的故障表现。常见原因包括客户端在本地解析、SOCKS 客户端在本地与远端解析之间切换,或共享递归解析器所代表的地域与代理出口不同。

GeoDNS 测试不是要求所有市场返回相同地址。区域差异可能完全合理。目标是证明每条解析路径可预测、符合目标市场,并能在业务要求的时间窗内保持稳定。

只测试你有权使用的域名、代理容量和端点。

分开记录四个位置

每个样本分别记录:客户端运行位置、向权威服务发问的递归解析器位置、目标站点看到的代理出口位置,以及 DNS 返回并实际连接的 CDN/源站节点位置。

这些位置不同不代表系统必然故障。权威 DNS 可能根据递归解析器定制答案;EDNS Client Subnet 也可能提供部分网络提示;网络拓扑距离同样不等于地理距离。

先通过住宅代理地域验证指南单独确认出口市场,不要把出口验证和 DNS 结论混成一个字段。

明确定义解析模式

建立独立测试组:

  • 本地解析: 客户端先得到地址,再让代理连接该地址。
  • 代理端解析: 客户端把主机名交给代理,由代理路径解析。
  • 指定解析器: 客户端明确使用某个递归或加密 DNS 服务。
  • 应用/浏览器默认: 运行时可能自带 DNS 缓存、安全 DNS 或连接池。

在 curl 风格的 SOCKS 测试中,socks5://socks5h:// 并不等价,后者要求 SOCKS 代理解析主机名。应从客户端配置和实际网络证据确认模式,而不是根据供应商标签猜测。

区域对比前先执行代理 DNS 泄漏验证,避免把意外本地查询误当成 GeoDNS 决策。

建立受控测试矩阵

选择多个已授权、具有可观察区域交付行为的主机名,并加入一个预期不变化的稳定对照。至少测试两个代理市场和两种解析模式。

固定主机名、记录类型、请求路径、代理计划、会话策略、客户端版本、DNS 配置、并发、重试规则和观察窗口。每次只改变一个因素:市场、解析器、本地/远端解析、IPv4/IPv6,或冷/热缓存。

正确采集 DNS 证据

每次查询保存 UTC 时间、查询名、A/AAAA 类型、解析模式、可见的递归解析器、完整答案集合、CNAME 链、TTL、响应码、可用的 DNSSEC 状态、代理出口国家/区域/ASN 类型、实际连接地址、连接耗时、TLS 主机名、HTTP 状态和有限业务输出指纹。

不得记录代理凭据、完整 Cookie 或个人数据。若无需保留正文,可只保存大型响应样本的哈希。

控制缓存与 TTL

冷缓存和热缓存应分开测试:

  1. 启动新的客户端或浏览器上下文;
  2. 仅清理你控制的测试解析器与应用缓存;
  3. 查询一次并记录答案和 TTL;
  4. 在 TTL 内重复,不强制刷新;
  5. TTL 到期后再查询;
  6. 使用新会话切换到下一代理市场。

不要反复刷新公共解析器,也不要因为 TTL 很短就高频请求权威基础设施。若采购问题专门关注地址切换后的恢复,可参考代理 DNS TTL 故障转移测试

以集合方式比较答案

CDN 经常返回多个有效地址且顺序变化。应比较标准化集合,而不是逐行顺序。记录地址集合、地址族、网络前缀/ASN 重叠、CNAME 链、TTL 区间、实际到达节点和业务结果。

不同市场返回不同地址可以是正确的;不同市场返回同一 Anycast 地址也可以是正确的。只有当答案造成错误市场结果、异常延迟、不可达地址族,或超出已知策略的不稳定时,才形成需要处置的发现。

排除伪差异

检查浏览器是否复用了旧连接而没有新 DNS 查询;客户端是否使用 IP 字面量但在 TLS/HTTP 中保留主机名;Service Worker 或应用缓存是否未发起网络请求;NO_PROXY 是否绕过代理;两个测试组是否选择了不同地址族;Cookie、语言头或账号设置是否覆盖 IP 地域;以及重试是否跨越 TTL 或更换出口。

冷测试组之间关闭连接池,并使用不敏感的唯一请求标记关联 DNS、连接与响应证据。

设置验收阈值

按业务需要定义:正确市场业务结果率、各市场/记录类型 DNS 成功率、解析与连接 p50/p95、意外本地解析率、TTL 后过期答案率、IPv4/IPv6 可达差距、TTL 边界外的答案波动,以及每个有效请求成本。

示例规则可以要求:远端解析模式下本地 DNS 查询为零;DNS 成功率至少 99%;两个 TTL 周期后不再使用旧地址;正确区域输出达到 99%。这些只是示例,不是通用承诺。

排错顺序

  1. 独立验证代理出口。
  2. 证明主机名由客户端还是代理解析。
  3. 记录递归解析器和完整答案集合。
  4. 关闭连接池,以新上下文复测。
  5. 分别比较 A 与 AAAA。
  6. 等待已记录 TTL 后再判断答案过期。
  7. 清除 Cookie 与地区状态后比较业务输出。
  8. 使用时间戳、匿名会话 ID 和标准化证据升级问题。

两个公开解析器或数据库意见不同,不足以证明供应商欺诈。应先定位层级并复现。

发布检查清单

  • [ ] 本地与代理端解析模式均明确配置。
  • [ ] 客户端、解析器、出口和服务节点位置分开保存。
  • [ ] 冷/热缓存测试遵守 TTL。
  • [ ] A 与 AAAA 独立测试。
  • [ ] 冷测试组之间关闭连接复用。
  • [ ] 比较前对答案集合标准化。
  • [ ] 除 IP 外还验证区域业务结果。
  • [ ] 日志不含凭据、Cookie 与个人数据。
  • [ ] 查询量保持在授权和合理范围。

常见问题

所有代理市场都应该解析到不同地址吗?

不应该这样假设。Anycast 或全球共享基础设施可能返回相同地址,关键是实际服务和业务结果是否满足市场要求。

远端 DNS 能保证市场本地答案吗?

不能。它改变了解析发生位置,但代理也可能使用集中式递归解析器,必须实际测量路径与结果。

TTL 不同就说明有问题吗?

不一定。答案、策略或迁移状态不同都可能产生不同 TTL。只有违反预期或造成过期、失败请求时才需升级。

每个市场查询一次够吗?

不够。应跨多个出口和时间窗抽样。一次查询只代表某个时刻的一个解析器与缓存状态。

合规说明

DNS 与代理测试仅用于合法、授权的质量验证。遵守目标条款、DNS 查询限制、隐私义务和区域数据规则。不得利用解析器操纵绕过访问控制或隐藏被禁止的行为。