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

本指南只使用你拥有或获准测试的域名、DNS 区域和网页端点,不依赖可能收集标识符、且难以解释结果的第三方“泄漏测试”页面。
先定义什么才算泄漏
出现 DNS 查询并不自动等于泄漏。除非直接配置代理网关 IP,客户端通常必须先解析代理网关。真正要判断的是:目标域名是否在预期的代理边界之外被解析。
先为两类查询写下预期责任方:
| 查询 | 预期解析器 |
|---|---|
| 代理网关主机名 | 通常是客户端侧解析器 |
| 通过 HTTP 代理访问目标 | 取决于请求形式与客户端行为 |
| 通过 CONNECT 访问目标 | 通常把主机名交给代理解析 |
| SOCKS5 本地 DNS 模式 | 客户端侧解析器 |
| SOCKS5 远程 DNS 模式 | 代理侧解析器 |
不要把网关查询误判为目标泄漏;同样,看到网页出口正确,也不能证明目标 DNS 留在代理路径内。
准备受控观察区域
在自有 DNS 区域下创建专用子域,并开启权威 DNS 的最小化日志。准备一个返回合成测试标识的 HTTPS 端点。每次请求使用新的随机标签,使缓存不能掩盖解析路径。
只记录必要证据:查询名、类型、权威服务器接收时间、适度聚合后的解析来源网络、请求标识与网页请求时间。能够使用截断或聚合信息时,不保存完整客户端地址,并在测试前设定较短保留期。
测试主机名不得包含客户名称、账号、邮件或秘密。不要把代理凭据写进 DNS 标签、URL 或日志。
建立协议矩阵
通过每种支持模式访问同一个受控目标:
- 直连,作为本地 DNS 对照;
- 使用绝对目标 URL 的普通 HTTP 代理;
- 通过 HTTP CONNECT 访问 HTTPS 目标;
- 如果支持,测试 HTTPS 代理传输;
- SOCKS5 本地域名解析;
- SOCKS5 远程域名解析;
- IPv4-only、IPv6-only 与双栈目标记录;
- 冷解析,以及超过已知缓存间隔后的重复请求。
先固定一个代理会话和一个区域。理解基本边界后再扩展到轮换出口,否则解析器变化容易与出口轮换混淆。
观察客户端侧
在专用测试主机或容器中捕获 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 或代理技术绕过访问控制或隐藏违规活动。