如何测试不同代理市场的 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
冷缓存和热缓存应分开测试:
- 启动新的客户端或浏览器上下文;
- 仅清理你控制的测试解析器与应用缓存;
- 查询一次并记录答案和 TTL;
- 在 TTL 内重复,不强制刷新;
- TTL 到期后再查询;
- 使用新会话切换到下一代理市场。
不要反复刷新公共解析器,也不要因为 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%。这些只是示例,不是通用承诺。
排错顺序
- 独立验证代理出口。
- 证明主机名由客户端还是代理解析。
- 记录递归解析器和完整答案集合。
- 关闭连接池,以新上下文复测。
- 分别比较 A 与 AAAA。
- 等待已记录 TTL 后再判断答案过期。
- 清除 Cookie 与地区状态后比较业务输出。
- 使用时间戳、匿名会话 ID 和标准化证据升级问题。
两个公开解析器或数据库意见不同,不足以证明供应商欺诈。应先定位层级并复现。
发布检查清单
- [ ] 本地与代理端解析模式均明确配置。
- [ ] 客户端、解析器、出口和服务节点位置分开保存。
- [ ] 冷/热缓存测试遵守 TTL。
- [ ] A 与 AAAA 独立测试。
- [ ] 冷测试组之间关闭连接复用。
- [ ] 比较前对答案集合标准化。
- [ ] 除 IP 外还验证区域业务结果。
- [ ] 日志不含凭据、Cookie 与个人数据。
- [ ] 查询量保持在授权和合理范围。
常见问题
所有代理市场都应该解析到不同地址吗?
不应该这样假设。Anycast 或全球共享基础设施可能返回相同地址,关键是实际服务和业务结果是否满足市场要求。
远端 DNS 能保证市场本地答案吗?
不能。它改变了解析发生位置,但代理也可能使用集中式递归解析器,必须实际测量路径与结果。
TTL 不同就说明有问题吗?
不一定。答案、策略或迁移状态不同都可能产生不同 TTL。只有违反预期或造成过期、失败请求时才需升级。
每个市场查询一次够吗?
不够。应跨多个出口和时间窗抽样。一次查询只代表某个时刻的一个解析器与缓存状态。
合规说明
DNS 与代理测试仅用于合法、授权的质量验证。遵守目标条款、DNS 查询限制、隐私义务和区域数据规则。不得利用解析器操纵绕过访问控制或隐藏被禁止的行为。