什么是 DNS 污染?与 DNS 劫持的技术区别及防范手段
在科学上网的探索过程中,“DNS 污染”几乎是每一个用户都会遇到的首要概念。只有理解了 DNS 的运作链路,才能正确配置客户端的防泄漏机制。
DNS 解析链路概述
DNS (Domain Name System) 类似于互联网的“电话簿”。当你试图访问 www.google.com 时,你的电脑并不知道这个域名的 IP 地址。
此时,系统会向你配置的本地 DNS 服务器(通常是你家宽带运营商提供的,比如 114.114.114.114)发送一个明文的 UDP 请求:“请问 Google 的 IP 是多少?”
如果这个请求在途经主干网的防火墙时,遭到了拦截或恶意篡改,你就会得到一个错误的 IP。
DNS 污染与 DNS 劫持的区别
这两个术语经常被混用,但它们在技术手段上有本质的区别。
1. DNS 污染 (DNS Pollution / Cache Poisoning)
DNS 污染是国家级防火墙常用的封锁手段。 当你向海外的 DNS 服务器(如 8.8.8.8)查询被封锁的域名时,由于 DNS 查询默认是不加密的(UDP 53 端口),主干网上的防火墙设备(旁路监听设备)会立刻识别出请求特征。 因为防火墙离你更近,它会抢先向你的设备返回一个伪造的、根本不存在或被封停的 IP 地址。由于你的设备先收到了防火墙伪造的响应,随后真正 DNS 服务器返回的正确响应就会被系统抛弃。
2. DNS 劫持 (DNS Hijacking)
DNS 劫持通常发生在路由器、ISP 运营商或恶意软件层面。 在这种攻击中,攻击者掌控了你的网络网关。你的查询请求被直接“强行转向”了攻击者控制的恶意 DNS 服务器。例如,有些小运营商为了节省网间结算费用,会拦截所有的 DNS 查询,强行返回他们内网缓存服务器的 IP。
防范与代理工具中的处理
在代理软件(如 Clash、sing-box 或 V2ray)中,防止 DNS 污染是最核心的模块之一。
远程解析 (Remote DNS)
代理软件会拦截所有发往受污染域名的 DNS 查询,不再让其通过本地网络发出,而是打包放进加密代理隧道中,发送到远端的代理服务器。由远端的服务器在其未受污染的网络环境中完成解析,最后将流量直接转发给目标 IP。
Fake-IP 技术 (与 TUN 的关系)
现代代理客户端广泛使用 Fake-IP 技术配合 TUN 模式(虚拟网卡):
- 操作系统向 TUN 网卡发起 DNS 查询。
- 代理核心直接秒回一个伪造的局域网 IP(例如
198.18.0.1)给操作系统,跳过了真实的解析过程。 - 操作系统随后向这个
198.18.0.1建立 TCP 连接。 - 代理核心收到连接后,直接将域名连同数据一起送入代理隧道,让远端服务器处理真实的解析。 请注意:DNS 解析仅仅是获取 IP,而 TUN 则是接管所有的三层(IP层)数据包。不要将“配置了防污染 DNS”与“开启了全局代理 TUN”混为一谈。
如何测试 DNS 泄漏
当配置完毕后,验证您的 DNS 是否仍然泄漏给了本地运营商至关重要。
- 测试工具:访问 ipleak.net 或 dnsleaktest.com。
- 验证结果:如果在检测结果的 DNS Servers 列表中,看到了中国大陆的运营商 IP 或是您的真实物理位置 IP,则说明发生了 DNS 泄漏,您的查询请求未被正确加密隧道接管。此时需检查代理客户端的分流规则配置。