LiuBai柳白

DNS污染是什么?三分钟看懂原理,附检测和应对方法

发布于 2026年7月30日阅读约 6 分钟进阶
网络知识DNS故障排查

有一类奇怪的故障:网络一切正常,微信照发、国内网站秒开,但某个特定网站就是打不开,浏览器要么转圈超时,要么跳出一个八竿子打不着的错误页。查一下这个域名解析出来的 IP,发现指向一个完全不相关的地址。

这就是 DNS 污染的典型现场。

DNS 在干什么,污染又是怎么发生的

DNS 的工作是把域名翻译成 IP 地址——你输入 example.com,它告诉浏览器“去 93.184.216.34 找”。这个问答过程默认走 UDP 明文传输,不加密、不验证身份,谁先把答案送到,你的电脑就信谁。

污染利用的正是这一点:你的 DNS 查询在半路被第三方设备看到,它抢在真正的 DNS 服务器之前,塞给你一个假答案。假 IP 可能是随机的、不存在的,也可能指向一个无法访问的地址。结果就是域名“解析成功”,但连接永远失败。

关键特征:污染发生在传输路径上,跟你用哪台 DNS 服务器关系不大——就算你手动改成 8.8.8.8,查询包在路上照样会被抢答。这也是“换了 DNS 还是打不开”的原因。

污染和劫持不是一回事

两个词经常被混用,但机制和对付方法完全不同:

DNS 污染 DNS 劫持
发生位置 传输链路(半路抢答) DNS 服务器本身(运营商篡改)
典型表现 特定网站解析出错误 IP 打错域名跳转到广告导航页
换公共 DNS 有用吗 基本没用 通常有效
加密 DNS 有用吗 有效(查询内容看不见了) 有效
常见目的 访问阻断 流量变现、插广告

两种方法确认自己是否中招

方法一:nslookup 对照。在终端里查询同一个域名,对比不同 DNS 的返回结果:

nslookup 目标域名 114.114.114.114
nslookup 目标域名 8.8.8.8

如果两边返回的 IP 都很可疑(和该网站官方公布的服务器地址对不上),或者 8.8.8.8 这一路查询直接超时、返回乱七八糟的地址,污染嫌疑就很大。

方法二:交叉验证。用在线的多地 DNS 检测工具(如 whatsmydns 这类),看同一个域名在境外各地的解析结果——如果境外解析一致且正常,只有你本地拿到的 IP 不同,答案不言自明。

检测结果 判断
本地解析 IP 与境外一致,但连不上 不是 DNS 问题,是 IP 被阻断
本地解析 IP 与境外不同且异常 DNS 污染
换 DNS 后恢复正常 DNS 劫持(运营商层面)
所有地区都解析失败 网站自己挂了

实际应对方案

按实施难度从低到高:

  1. 加密 DNS(DoH/DoT):把 DNS 查询装进 HTTPS/TLS 里传输,半路的设备看不见查询内容,自然无从抢答。主流浏览器和 Windows 11、iOS 都已原生支持,在设置里开启“安全 DNS”并选一个可靠提供商即可。这是普通用户性价比最高的方案
  2. 修改 hosts 文件:手动把域名和正确 IP 写死。立竿见影,但 IP 一变就失效,只适合应急。
  3. 让代理客户端接管 DNS:Clash 系客户端的 fake-ip / redir-host 模式会把 DNS 解析放到代理链路里完成,从根上绕开本地污染。用机场的用户其实默认就在享受这层保护——前提是客户端配置正确开启了 DNS 接管。

用机场时的一个细节:如果发现“连了节点还是打不开某网站”,先检查客户端的 DNS 设置是否为默认推荐值,很多莫名其妙的解锁失败其实是本地 DNS 泄漏导致的。相关问题在常见问答的“故障排查”分类里有更多展开。

延伸阅读


常见问答

为什么有的网站时好时坏? 污染策略是动态调整的,同一域名在不同时段的处理强度可能不同,表现出来就是“抽风”。

改成 1.1.1.1 或 8.8.8.8 为什么没用? 明文查询在路上就被抢答了,根本轮不到目标服务器回答。要么加密查询过程,要么让代理接管解析。

DoH 会拖慢网速吗? 首次连接多一次握手,日常使用有缓存,感知差距接近零,不必顾虑。

本文为 LiuBai柳白 原创内容,仅供技术交流参考 · 转载请注明出处