tech/network · 集群 A · 网络基础原理 · 2/6
DNS 污染是什么:解析被篡改的原理、表现与缓解思路
DNS 污染是指域名解析过程中返回了不正确的 IP 地址,导致后续连接走向错误目标;DNS 泄漏则是本该由代理处理的解析请求走了本地 DNS。两者都会让代理“看起来坏了”。如果你遇到解析异常,可以优先确认客户端的 DNS 模式(远程解析或 Fake-IP)是否开启,再判断是否为节点问题。
DNS 解析是怎么工作的
DNS 的作用是把人能记住的域名翻译成机器能用的 IP 地址,它是几乎所有网络访问的第一步。当你在浏览器输入一个网址,系统会先查本地缓存,没有命中就问配置好的 DNS 服务器(通常是路由器或运营商提供的递归服务器),递归服务器再逐级去问根服务器、顶级域服务器和权威服务器,最后把答案返回给你。
[浏览器] → [系统缓存] → [递归 DNS 服务器]
│
┌─────────────────┼─────────────────┐
▼ ▼ ▼
[根服务器] [顶级域服务器] [权威服务器]
│
▼
返回 IP 地址给浏览器
传统 DNS 查询使用明文 UDP,默认端口 53,没有加密也没有完整性校验。这意味着查询和应答在传输路径上可以被观察,也可能被替换——这就是 DNS 问题的根源。
DNS 污染、劫持与泄漏的区别
DNS 相关的问题有三个常被混用的概念,它们的原理不同,但对用户的表现很接近。
| 概念 | 发生位置 | 原理 | 对代理的影响 |
|---|---|---|---|
| DNS 污染 | 传输路径中 | 在真实应答返回前注入错误应答 | 解析到错误地址,连接失败 |
| DNS 劫持 | 解析服务器 | 请求被导向非预期服务器,或服务器返回篡改结果 | 同上,或被导向广告页 |
| DNS 泄漏 | 本地配置 | 应由代理处理的查询走了本地 DNS | 分流判断错误、暴露访问意图 |
污染与劫持的结果都是“拿到了错误的 IP”,而泄漏的结果是“解析走了不该走的路”。在代理场景中,泄漏不一定导致连不上,但可能导致分流规则按错误的 IP 判断,或者让落地地区与解析地区不一致。
代理场景中 DNS 问题的典型表现
DNS 问题的特点是“看起来像节点坏了,但换节点也没用”。下面是一些常见表现:
- 所有节点访问同一网站都失败,但其他网站正常——可能是该域名的解析结果被污染。
- 解析出的 IP 明显不属于该网站所在地区,例如解析到保留地址或毫不相关的网段。
- 同一网站时而走代理时而直连——分流规则按 IP 匹配时,不同来源的解析结果会命中不同规则。
- 网站提示地区与节点不符——可能是 DNS 走了本地解析,CDN 按解析来源返回了就近节点。
- 首次访问很慢,第二次正常——解析等待时间较长,缓存后恢复。
第 4 种情况与 IP 归属相关,原理可参考 节点与 IP 专题。访问 AI 或流媒体平台时应遵守平台服务条款与支持地区。
代理内核如何处理 DNS
现代代理内核(如 Clash 系内核)通常内置 DNS 模块,主要有两种工作模式:常规解析(redir-host 类)和虚拟 IP(Fake-IP)。
常规解析模式:内核向配置的上游 DNS 服务器查询真实 IP,返回给应用,再按 IP 或域名匹配规则。优点是应用拿到的是真实地址,兼容性好;缺点是解析环节仍可能受污染影响,且需要等待查询完成。
Fake-IP 模式:内核收到查询后立即返回一个保留网段(常见为 198.18.0.0/15)中的虚拟 IP,并记住“这个虚拟 IP 对应哪个域名”。应用用虚拟 IP 发起连接时,内核再按域名匹配规则,如果走代理,就把域名交给远端节点去解析。
Fake-IP 流程:
[应用] 查询 example.com
▼
[内核] 立即返回 198.18.x.x(虚拟)并记录映射
▼
[应用] 连接 198.18.x.x
▼
[内核] 查映射得到 example.com → 匹配规则 → 走代理
▼
[远端节点] 在境外解析 example.com 并连接
| 对比项 | 常规解析 | Fake-IP |
|---|---|---|
| 应用拿到的地址 | 真实 IP | 虚拟 IP |
| 解析等待 | 需要等待上游 | 几乎无等待 |
| 受本地污染影响 | 较大 | 较小(走代理的域名由远端解析) |
| 兼容性 | 较好 | 少数应用需加入例外 |
| 适合场景 | 对真实 IP 敏感的应用 | 大多数浏览与日常使用 |
不同客户端中这两个模式的菜单名称可能不同,且可能随版本变化,具体请以客户端界面为准。桌面客户端的具体设置可参考 桌面客户端 专题。
加密 DNS 的作用与局限
加密 DNS(如 DoH、DoT)把 DNS 查询放进加密通道,使查询内容在传输过程中不能被直接观察或替换,从原理上可以减少污染。但它并不是万能的:
- 加密 DNS 服务器本身也需要可达,如果连接被干扰,查询同样会失败;
- 加密 DNS 只解决“解析”这一步,后续连接是否可达仍取决于路由与传输层;
- 与代理内核同时使用时,需要明确“谁负责解析”,避免系统和内核各解析一次导致结果不一致。
因此,在代理场景中更常见的做法是让代理内核统一接管解析,由内核决定哪些域名本地解析、哪些交给远端节点。
排查 DNS 问题的步骤
当怀疑是 DNS 问题时,可以按下面的顺序检查:
- 确认客户端 DNS 模块是否启用:查看配置中 DNS 相关段落是否开启,模式是 Fake-IP 还是常规解析。
- 对比解析结果:分别用系统 DNS 和代理内核解析同一域名,看结果是否一致、是否有明显异常。
- 查看日志中的规则命中:确认该域名是按域名规则命中还是按 IP 规则命中。
- 检查是否有 DNS 泄漏:系统代理模式下,部分应用会自行解析,此时可考虑 TUN 模式统一接管,原理见 TUN 虚拟网卡原理。
- 清除缓存后重试:系统、浏览器和内核都有 DNS 缓存,修改配置后需要清空才能生效。
如果解析正常但连接仍失败,就应该往下一层排查,例如传输协议是否匹配,参见 TCP 与 UDP 在代理场景中的差异,或按 分层排障法 系统定位。
小结与下一步
DNS 是代理故障中最常被误判的一层:它的问题看起来像节点问题,但换节点解决不了。理解污染、劫持与泄漏的区别,知道代理内核的两种解析模式,就能更快判断问题所在。
如果你在比较服务商时关注客户端与协议支持,可以在 机场品牌库 中查看各品牌资料,或通过 对比工具 并排查看。品牌资料中的数据本站未实测,请以你的实际测试为准。返回 网络原理与排障 专题页可查看更多原理文章。
常见问题
DNS 污染和 DNS 劫持有什么区别?
两者都会导致解析结果错误。一般说的劫持多指解析请求被导向了非预期的 DNS 服务器,污染多指传输过程中被注入了错误应答。对用户来说表现类似,排查思路也相近。
怎么判断是不是 DNS 出了问题?
可以对比不同 DNS 服务器对同一域名的解析结果,看是否返回了明显异常或彼此矛盾的地址;如果开启代理内核的远程解析后问题消失,也说明与解析环节有关。
Fake-IP 是什么,有什么副作用?
Fake-IP 是代理内核先返回一个保留网段内的虚拟 IP,等真正建立连接时再按域名处理。它能减少解析等待和污染影响,但少数依赖真实 IP 的应用可能出现兼容问题,需要加入例外列表。
换一个公共 DNS 就能解决污染吗?
不一定。如果查询本身在传输途中被干扰,单纯更换明文 DNS 服务器效果有限。代理场景下更常见的做法是让代理内核接管解析,或使用加密 DNS。
信息来源与更新时间
- 信息来源
- 品牌清单资料(品牌公开信息整理)
- 测试范围
- 本站未进行测速与解锁实测,所有能力描述均为资料声明或未测试状态。
- 发布时间
- 待核实
- 核实日期
- 待核实
- 最近更新
- 待核实