我们之前已经科普过 IP 泄露相关知识,近期又收到很多关于 “DNS 泄露” 与 “DNS ECS” 的问题。由于 “DNS 泄露” 在业界并没有一个统一且严格的定义,这里先归纳出两种常见情形,并分别说明其成因和应对措施:
所谓 DNS 泄露可以指:
- 指的是在使用传统明文 DNS 时,链路中的运营商、防火墙、公共 Wi-Fi 提供者等都可能直接截获或监视你的 DNS 查询数据包,得知你访问的网站域名。
解决方法:
- 使用加密的 DNS 服务器(如 DoH)
- 使用全局代理模式,或者优先匹配的代理规则,使得不在本地进行 DNS 解析即可。
虽然理论上存在风险,然而实践中由于现在 app 存在大量网络请求,同时云服务器交叠复用,除非涉及的网站域名十分小众,否则也很难从 DNS 请求记录中获得有效信息。
- 指的是访问的目标网站或者使用的 App自身通过技术手段,检测访问者的真实 IP。
具体技术原理是,构造一个随机的二级域名,通过 DNS 查询中的 ECS 机制,获取到查询者的 IP 地址,以此突破访问者的代理保护获得其实际 IP 地址。
但是,这种检测方法存在诸多不确定性,即使成功,也只能获取到用户的区域,而非真实 IP。
解决方法:
- 使用全局代理模式,或者优先匹配的代理规则,使得不在本地进行 DNS 解析即可。
- 使用不支持 ECS 的 DNS 服务器,如 CloudFlare 的 1.1.1.1。
- 自定义 DNS ECS 字段,提供虚假的 IP 地址也可以解决这个问题,但可能导致 CDN 调度混乱,出现解析错误、访问缓慢或完全连不上的情况。