购买代理前如何测试 DNS 泄漏

HTTP 请求成功经过代理,并不代表目标域名也由代理解析。查询可能仍然从本地、企业或运营商 DNS 发出。对某些代理模式,这是预期行为;对另一些模式,则可能造成隐私、地域或路由偏差。购买容量前,应明确每个主机名由谁解析,并验证实际路径符合设计。

互联网实验环境将本地 DNS 查询与封闭的代理端解析路径清晰分开

本指南只使用你拥有或获准测试的域名、DNS 区域和网页端点,不依赖可能收集标识符、且难以解释结果的第三方“泄漏测试”页面。

先定义什么才算泄漏

出现 DNS 查询并不自动等于泄漏。除非直接配置代理网关 IP,客户端通常必须先解析代理网关。真正要判断的是:目标域名是否在预期的代理边界之外被解析。

先为两类查询写下预期责任方:

查询预期解析器
代理网关主机名通常是客户端侧解析器
通过 HTTP 代理访问目标取决于请求形式与客户端行为
通过 CONNECT 访问目标通常把主机名交给代理解析
SOCKS5 本地 DNS 模式客户端侧解析器
SOCKS5 远程 DNS 模式代理侧解析器

不要把网关查询误判为目标泄漏;同样,看到网页出口正确,也不能证明目标 DNS 留在代理路径内。

准备受控观察区域

在自有 DNS 区域下创建专用子域,并开启权威 DNS 的最小化日志。准备一个返回合成测试标识的 HTTPS 端点。每次请求使用新的随机标签,使缓存不能掩盖解析路径。

只记录必要证据:查询名、类型、权威服务器接收时间、适度聚合后的解析来源网络、请求标识与网页请求时间。能够使用截断或聚合信息时,不保存完整客户端地址,并在测试前设定较短保留期。

测试主机名不得包含客户名称、账号、邮件或秘密。不要把代理凭据写进 DNS 标签、URL 或日志。

建立协议矩阵

通过每种支持模式访问同一个受控目标:

  1. 直连,作为本地 DNS 对照;
  2. 使用绝对目标 URL 的普通 HTTP 代理;
  3. 通过 HTTP CONNECT 访问 HTTPS 目标;
  4. 如果支持,测试 HTTPS 代理传输;
  5. SOCKS5 本地域名解析;
  6. SOCKS5 远程域名解析;
  7. IPv4-only、IPv6-only 与双栈目标记录;
  8. 冷解析,以及超过已知缓存间隔后的重复请求。

先固定一个代理会话和一个区域。理解基本边界后再扩展到轮换出口,否则解析器变化容易与出口轮换混淆。

观察客户端侧

在专用测试主机或容器中捕获 DNS 活动,筛选唯一目标标签与代理网关名称。具体方式取决于系统,以及解析器使用传统 DNS、DNS over TLS 还是 DNS over HTTPS。

在干净的远程解析场景中,客户端可能解析代理网关,但不应查询唯一目标标签。如果本地出现目标查询,先排除应用预取、证书发现、健康检查或代理库之外的直连验证。

先执行单请求、无重试、清空应用 DNS 缓存的测试,再使用正常连接池和重试重复,以发现隐藏路径。

关联权威 DNS 与网页证据

权威日志能证明有人查询了唯一名称,但可见来源通常是递归解析服务,而不是代理出口。应使用时间与合成标识关联事件,不要假设解析器 IP 必须等于网页出口 IP。

重点解释四种结果:

  • 本地出现查询,网页请求经代理: 目标 DNS 逃离预期的远程解析边界。
  • 本地无查询,权威端在代理请求附近收到查询: 与代理侧解析一致。
  • 权威端没有新查询: 可能是缓存、复用连接或请求尚未进入解析。
  • 同时出现本地和远程特征: 可能存在预取、回退、重试或多层解析器。

每个用例都用新标签重复,一次观察不足以支持采购决定。

验证失败路径

健康策略必须在错误时仍然成立。在受控区域创建不存在的名称、延迟响应和短 TTL 记录变更,确认远程解析失败时客户端不会静默直连重试。

记录 NXDOMAIN、超时与地址族失败由本地解析器、代理网关还是目标流程返回。检查重试仍保持相同的代理与 DNS 策略。即使成功率提高,绕过代理的回退仍属于安全缺陷。

使用代理故障转移演练验证失败关闭,并结合代理延迟归因测试把 DNS 时间从网关与目标延迟中分离。

用业务指标比较服务商

对每个区域和代理模式报告:

  • 符合预期解析责任的请求比例;
  • 验证成功率;
  • 可观察时的 DNS p50 与 p95;
  • 连接及总耗时 p50/p95;
  • 每个有效结果的重试数;
  • IPv4/IPv6 成功率拆分;
  • 出口区域与解析区域一致性;
  • 每个有效业务结果的成本。

如果低 DNS 延迟来自违反策略的本地解析,就不应被评为更优。正确路由和响应验证优先于原始速度。

采购验收条件

可以要求远程解析样本中没有无法解释的本地目标查询、没有直连回退、各支持区域的解析责任稳定,且有效成功率高于业务阈值。允许的缓存与解析器区域差异应提前写明。

客户端升级、代理模式变更、DNS 库变更、容器镜像更新和服务商网关迁移后都要复测。解析责任是一项可能在没有明显应用错误时回归的配置属性。

检查清单

  • [ ] 网关与目标的解析责任分别记录。
  • [ ] DNS 区域和 HTTPS 端点由团队控制且已获授权。
  • [ ] 每次请求使用新的合成主机名标签。
  • [ ] 客户端观察覆盖适用的加密 DNS 路径。
  • [ ] HTTP、CONNECT 与 SOCKS 模式分别测试。
  • [ ] SOCKS 本地 DNS 与远程 DNS 行为没有混淆。
  • [ ] 冷解析、缓存与复用连接分别统计。
  • [ ] NXDOMAIN、超时与记录变更失败仍保持代理路径。
  • [ ] 日志中没有代理凭据或个人数据。
  • [ ] 结果按区域、地址族和有效业务结果比较。

常见问题

代理网关的 DNS 查询本身算泄漏吗?

通常不算。客户端往往必须解析网关才能连接。测试必须区分网关名与目标名。

DNS 解析器 IP 应该和代理出口 IP 一样吗?

不一定。代理服务可以使用独立递归解析集群。应通过受控权威日志、时间关联和服务说明验证责任,而不是只比较两个 IP。

为什么第二次请求没有新的 DNS 查询?

结果可能已缓存,应用也可能复用代理连接。使用新的随机主机名,并分开报告冷、热场景。

HTTPS 能防止 DNS 泄漏吗?

不能。HTTPS 保护选定目标后的应用流量;除非代理模式把主机名交给远端解析,否则 DNS 仍可能在本地发生。

公共 DNS 泄漏测试网站能替代这种方法吗?

它们适合快速提示,却通常无法解释协议模式、缓存、责任方和重试。受控区域能够关联证据,也能减少向第三方暴露标识符。

代理只能用于合法且获授权的业务。遵守隐私要求、目标规则、速率限制和数据最小化原则,不得利用 DNS 或代理技术绕过访问控制或隐藏违规活动。