访问一个网站的第一步是把域名换成 IP,这个查询默认走的是明文 UDP 53 端口,没有身份校验,谁先回答就信谁。DNS 污染正是利用了这一点:在真正的解析结果返回之前,抢先注入一个伪造应答。客户端拿到错误 IP 后,连接自然指向了不存在或不相关的服务器。

它在代理场景里的表现

典型症状是”节点显示已连接,网页却打不开”,或者某些站点持续加载失败而换节点也无改善。原因通常是解析发生在了错误的位置——如果客户端先用本地 DNS 解析域名、再把污染后的 IP 交给节点去连,那么节点再干净也无济于事。

主流客户端因此提供了几种应对方式:一是把国外域名的解析交给节点远端完成(常见开关名为 remote-dns、fake-ip 或”代理 DNS 请求”);二是使用 DoH/DoT 这类加密解析,让查询内容不再明文暴露;三是靠分流规则把国内域名交给国内 DNS、国外域名交给远端 DNS,兼顾速度与准确性。开启 TUN 模式时,DNS 一般会被客户端统一接管,配置逻辑也更集中。

容易混淆的两件事

DNS 污染不等于 IP 封锁:前者是解析环节被骗,换一个可信 DNS 或让远端解析往往就能绕过;后者是通往目标 IP 的路径本身不通,只能靠中转链路解决。此外,把公共 DNS 地址改成某个知名服务并不能自动免疫,因为明文查询在路径上依然可被抢答,真正起作用的是加密解析或远端解析。