知识库 · 安全

DNS 污染是什么:原理、症状、和 DNS 泄露的区别,以及客户端里怎么用远程 DNS 和 DoH 规避

DNS 污染是域名被解析到错误 IP 导致网站打不开的现象,和 DNS 泄露是两回事。本文讲污染的原理、怎么确认自己遇到的是污染、为什么开了机场有时仍受影响,以及 Clash、sing-box、Shadowrocket 里用远程解析、Fake-IP、DoH 规避的具体设置。

一句话版本

DNS 污染是:你问「这个网站的 IP 是多少」,得到的答案是假的。于是浏览器去连一个错误的、根本不提供服务的地址,页面显示「无法访问此网站」或一直转圈。它和「DNS 泄露」是两个完全不同的问题,很多人把二者混为一谈,排错时自然找不到方向。

污染是怎么发生的

正常的域名解析是明文 UDP 请求,发往 53 端口。请求和回复都没有加密、没有签名,所以链路中间的设备可以在真正的回复到达前,抢先塞回一个假回复。你的电脑收到第一个回复就信了,后面真的回复被丢弃。

这种抢答是针对特定域名列表进行的,所以症状有明显特征:国内网站一切正常,只有特定一批海外网站打不开。返回的假 IP 往往固定在几个无意义的地址段,有时是别国的 IP,有时甚至是保留地址。

污染和「封锁 IP」不同。IP 被封时,你拿到的 IP 是对的,只是连不上;污染时,你拿到的 IP 一开始就是错的。两者可以同时存在,也经常同时存在。

典型症状

最后一条是最可靠的判据。真实解析结果通常稳定,污染回复则随机。

和 DNS 泄露的区别

维度DNS 污染DNS 泄露
本质解析结果被篡改解析请求走了错误的路径
症状网站打不开网站能打开,但隐私暴露、流媒体判定代理
影响可用性隐私与解锁
根因明文 DNS 在途中被注入客户端用本地 DNS 解析了代理域名
修复方向让解析在远端或加密通道里完成让代理流量的解析也走代理

两者的修复手段高度重叠,核心都是「不要在本地用明文 DNS 解析海外域名」。但目的不同:防污染是为了能打开,防泄露是为了不被看见。DNS 泄露的检测与修复另有专文,见 DNS 泄露是什么。

为什么开了机场还会中招

机场解决的是「流量怎么出去」,但解析发生在流量出去之前。如果客户端的工作方式是「本地先把域名解析成 IP,再把 IP 发给节点」,那么解析这一步仍然在你家宽带上进行,污染照样发生,节点收到的是一个假 IP,自然连不上。

这也是为什么有些人系统代理模式下一切正常,换一个客户端或换一种模式就出问题。系统代理(HTTP / SOCKS5)默认是把域名原样交给节点,由节点在海外解析;而 TUN 模式下,如果 DNS 配置不当,就会退回本地解析。

规避方法一:让远端节点解析

对代理流量来说,最干净的方案是根本不在本地解析。Clash 系客户端里,这取决于 DNS 的 enhanced-mode:

Clash Verge Rev 在「设置 → Clash 设置 → DNS」里切换;FlClash 在「配置 → DNS」里;Mihomo Party 在「DNS 设置」。新手直接选 Fake-IP,兼容性问题通常出在少数局域网设备和游戏上,把它们加进 fake-ip-filter 即可。

规避方法二:加密 DNS(DoH / DoT)

DoH 把查询包进 HTTPS,DoT 包进 TLS。中间设备看到的只是一条加密连接,无法知道你在问哪个域名,也就没法抢答。

在 Clash 的 DNS 段里,nameserver 填 https://1.1.1.1/dns-query 或 https://dns.google/dns-query,并配合 fallback 与 geoip 规则,国内域名走国内 DNS、其他走 DoH。sing-box 在 dns.servers 里加一条 https://1.1.1.1/dns-query 并设置 detour 走代理,效果更好,因为连 DoH 服务器本身的连接都从节点出去。

Shadowrocket:设置 → DNS 覆写,填 DoH 地址。Surge:DNS 设置里直接有「加密 DNS」项。Stash、Loon、Quantumult X 也都有对应项,名字略不同但都在 DNS 相关页面。

一个常见误区是只改系统 DNS 为 8.8.8.8。普通 53 端口查询到任何服务器都会被污染,换服务器不换协议没有意义。

规避方法三:浏览器自带的 DoH

Chrome、Edge、Firefox 都能单独开安全 DNS。它能让浏览器自己绕开污染,但代价是绕开了客户端的分流:浏览器自己把国内域名也拿去 DoH 解析,可能让国内网站被解析到海外 CDN 节点,访问变慢,还可能和 Fake-IP 冲突。

建议:用了机场客户端就关掉浏览器的安全 DNS,让客户端统一管。只有在没开客户端又想临时打开某些被污染但 IP 没封的网站时,浏览器 DoH 才有用处。

排查流程

  1. 关掉客户端,用 nslookup 目标域名 查三次。结果跳动或明显不对,确认污染。
  2. 打开客户端,看 DNS 模式。Fake-IP 直接跳到第 4 步。
  3. Redir-Host 模式下,把 nameserver 改成 DoH 地址,重载配置。
  4. 仍打不开,看日志里该域名匹配的规则:如果被判成 DIRECT,说明规则集把它划成了国内站,手动加一条 DOMAIN-SUFFIX 指向代理。
  5. 规则没问题还是不行,大概率是 IP 层被封,和 DNS 无关,换节点。

更多开了代理却仍打不开部分网站的情况,见 连上了但没网。

对选机场的意义

污染是在你和入口之间发生的,和机场本身没有直接关系,任何机场都无法「防污染」。但机场配套的订阅配置可以帮你省事:好的机场订阅会预设合理的 DNS 段,Fake-IP 加 DoH 加国内外分流,导入即用。订阅里 DNS 段空空如也、全靠客户端默认值的,就需要你自己动手。订阅转换与配置结构见 订阅链接是什么。

相关

DNS 泄露是什么 · 代理模式与规则 · Clash Verge 教程

常见问题

DNS 污染和 DNS 泄露有什么区别?

污染是解析结果被篡改,表现为网站打不开;泄露是解析请求走了国内 DNS,表现为隐私暴露和流媒体判定代理。污染影响能不能用,泄露影响安不安全。

开了机场为什么还会被 DNS 污染?

客户端在本地先解析了域名,拿到的是被污染的假 IP,再把假 IP 发给节点。解决办法是让远程节点解析,或用 Fake-IP 模式。

把系统 DNS 改成 8.8.8.8 能解决污染吗?

不能。污染是在传输途中注入假回复,和你问哪台服务器无关。普通 UDP 53 查询到任何公共 DNS 都可能被污染,只有加密 DNS(DoH / DoT)或在远端解析才有效。

Fake-IP 和 Redir-Host 哪个更能防污染?

Fake-IP 更彻底,因为本地根本不做真实解析。Redir-Host 要配合加密 DNS 和正确的 nameserver-policy 才能避开污染。

怎么确认是 DNS 污染而不是节点挂了?

用 nslookup 查该域名,返回的 IP 明显不属于该服务商、或多次查询结果跳来跳去,就是污染。节点挂了的话所有网站都打不开,而不是只有特定几个。


本文为信息整理与个人经验,不构成购买建议。机场政策与软件界面可能变化,以官方为准。发现过期内容请 联系纠错。

继续阅读

回到 知识库 · 机场推荐 2026 · 排行榜