DNS污染怎么判断和处理?
简答:先不要急着更换DNS:分别查询本地DNS、公共DNS和权威DNS,比较A、AAAA、CNAME结果;再用DoH或DoT复核。只有结果异常且能排除CDN、缓存、IPv6和服务器故障,才可把DNS污染作为主要怀疑对象。
定义:DNS污染是解析请求在传输或递归解析过程中收到错误或被篡改的结果,表现可能与DNS劫持、缓存未更新、CDN调度或AAAA配置错误相似,不能只凭网页打不开直接判定。
先试这一步:5分钟DNS污染速查
把下面的 DOMAIN 替换为实际域名,不要直接把示例文本当成可用地址。Windows使用nslookup;macOS和Linux优先使用dig,没有时可使用host。
- 查本地DNS:
nslookup DOMAIN,或dig DOMAIN A、dig DOMAIN AAAA。 - 查指定DNS:
nslookup DOMAIN 8.8.8.8,或dig @8.8.8.8 DOMAIN A。 - 至少再换一个解析器对比:记录A、AAAA、CNAME、TTL和返回状态,不要只看是否“有IP”。
- 复核传输链路:使用支持DoH或DoT的客户端查询;DoH通过HTTPS传输DNS请求,DoT通过TLS传输,二者可用于和明文DNS结果交叉验证。Google公共DNS对DoH与DoT的说明
- 设定停止条件:如果不同解析器结果一致,但网页仍打不开,停止继续换DNS,转查TCP、HTTPS、代理、路由或服务器。
成功标准:同一记录在多个可信解析器和加密DNS查询中基本一致,且访问结果与解析出的IP相符。失败回退:恢复原DNS设置,保存查询结果后联系域名DNS服务商、CDN或网络运营商。
DNS污染、劫持和其他异常怎么区分
| 现象 | 更可能的原因 | 下一步 |
|---|---|---|
| 本地DNS返回陌生IP,多个外部解析器返回另一组结果 | 本地解析链路异常,可能是劫持、污染或路由器DNS被改写 | 用DoH/DoT复核,并检查设备、路由器的DNS设置 |
| 所有解析器都返回相同IP,但网页仍打不开 | 端口、HTTPS、服务器、代理或路由问题 | 继续检查TCP连接、证书、HTTP状态和访问路径 |
| 只在某个地区或运营商网络异常 | CDN智能调度、区域缓存、网络策略或局部解析异常 | 用不同网络和多地域DNS结果对比 |
| 只有AAAA结果异常,关闭IPv6后恢复 | IPv6链路或AAAA记录配置问题 | 分别查询A与AAAA,检查IPv6连通性和权威记录 |
| 首次修改后仍显示旧结果 | 浏览器、操作系统、路由器或递归DNS缓存尚未更新 | 刷新对应层级缓存,不要立即把旧结果认定为污染 |
Windows的nslookup可以指定要查询的DNS服务器和记录类型,适用于比较本地解析器与指定解析器的回答。Microsoft Learn:nslookup命令;BIND文档将dig定义为用于查询DNS服务器并显示返回结果的工具。BIND 9文档
Windows、macOS和Linux的具体检测方法
Windows:使用nslookup分开查询A和AAAA
- 前置条件:打开命令提示符或PowerShell,准备一个需要检查的域名。
- 查询本地DNS:
nslookup DOMAIN。 - 查询IPv4:
nslookup -type=A DOMAIN 8.8.8.8。 - 查询IPv6:
nslookup -type=AAAA DOMAIN 8.8.8.8。 - 验证:将本地DNS与指定DNS的状态、IP和TTL记录下来,再更换另一个解析器复核。
- 回退:如果指定DNS超时,不要直接判定域名异常;换一个解析器或恢复系统原DNS。
macOS:使用dig查看回答来源
- 前置条件:打开“终端”,确认系统中可运行
dig。 - 查询A记录:
dig DOMAIN A。 - 查询AAAA记录:
dig DOMAIN AAAA。 - 指定解析器:
dig @8.8.8.8 DOMAIN A。 - 验证:比较
status、ANSWER SECTION中的结果和SERVER字段;不要只复制IP。 - 回退:若结果不稳定,先保留原网络设置,再检查Wi-Fi、代理、VPN或本机DNS配置。
Linux:使用dig或host
- 前置条件:终端中安装并可调用
dig或host。 - 查询:
dig @8.8.8.8 DOMAIN A,或host DOMAIN 8.8.8.8。 - 分别测试:重复查询AAAA和CNAME,不要只测试A记录。
- 验证:对比
NOERROR、NXDOMAIN、SERVFAIL以及实际返回内容。 - 回退:若公共DNS与本地DNS均一致,转查网络连接和服务器,不要继续修改解析配置。
如何用DoH或DoT做交叉验证
明文DNS通常通过UDP或TCP传输;DoH把DNS查询放在HTTPS中,DoT则把DNS放在TLS连接中。两者主要解决传输过程中的保密性和篡改风险,但不保证目标域名本身一定可访问,也不会自动修复权威DNS记录。RFC 8484:DNS over HTTPS RFC 7858:DNS over TLS
- 先保存明文结果:记录本地DNS、指定公共DNS的A、AAAA、CNAME、TTL和状态。
- 再使用加密DNS:在浏览器、系统或支持该功能的DNS客户端中启用DoH或DoT。不同系统和客户端的入口不同,不能把某一客户端的菜单当成所有设备通用步骤。
- 比较结果:如果明文DNS异常,而加密DNS返回稳定且合理的结果,说明明文解析路径存在异常可能;这仍需排除解析器策略、CDN调度和缓存差异。
- 验证访问:用加密DNS得到的结果访问域名,并检查HTTPS证书是否匹配。HTTPS可以阻止错误证书的网站建立可信连接,但不能修复错误解析。
- 回退:若启用DoH或DoT后无法解析,先关闭加密DNS,恢复原设置,再确认网络是否阻断相应服务或客户端是否接管了DNS。
以Google公共DNS为例,其官方资料列出了DoH端点和DoT主机名;本文只将其作为核验示例,实际可用性和返回结果应以当前网络与客户端为准。Google公共DNS的DoH说明 Google公共DNS的DoT说明
手机、路由器和客户端该怎么处理
Android
如果系统或客户端提供“私人DNS”或加密DNS设置,应先记录原配置,再按当前系统版本的说明启用。某些VPN、代理或DNS切换应用可能接管DNS,因此系统设置显示的DNS不一定是最终生效的解析器。验证方法是关闭相关客户端后重复查询,再逐项恢复。
iPhone和iPad
手动修改Wi-Fi DNS通常只影响当前Wi-Fi网络,不等于蜂窝网络和其他Wi-Fi也使用同一设置。修改前记录原值;测试完成后切回自动,避免把临时排查设置长期保留。
路由器
- 前置条件:确认你有路由器管理权限,并记录当前DNS服务器地址。
- 操作:在WAN、互联网或DHCP相关设置中查看DNS;不要同时修改多个设备和路由器,避免无法判断是哪一层生效。
- 验证:重连终端后再次执行
nslookup或dig,确认查询服务器已经变化。 - 回退:恢复原DNS并重启网络连接;如果路由器强制下发DNS,优先联系网络设备或运营商管理者。
代理或网络客户端
如果客户端启用了TUN、系统代理、DNS接管或分流规则,DNS请求可能不再由操作系统默认配置发送。排查时先关闭其中一项,分别测试“客户端关闭”和“客户端开启”的结果,避免把客户端行为误判为运营商或域名本身的问题。
确认异常后怎么处理:用户与站长分开做
普通用户
- 刷新浏览器、系统和路由器缓存,但把刷新前后的查询结果保存下来。
- 尝试可信的加密DNS,观察结果是否与明文查询不同。
- 检查hosts文件、代理、VPN、浏览器扩展和安全软件是否改写解析。
- 分别测试A和AAAA;如果只有IPv6访问失败,优先排查IPv6链路,不要笼统称为DNS污染。
- 若多网络、多解析器均异常,向域名服务商或网站维护方提交域名、查询时间、DNS服务器、记录类型、返回值和网络运营商。
站长或网络管理员
- 先核对权威DNS中的A、AAAA、CNAME、NS和TTL,确认记录没有误配。
- 从不同地区和网络查询,区分CDN调度、缓存差异与权威记录错误。
- 为重要域名启用DNSSEC验证能力,并配合HTTPS、HSTS和证书监控;这些措施不能替代DNS记录审查。
- 保存权威DNS、递归DNS、DoH/DoT和实际访问的时间序列结果,便于向DNS服务商、CDN或运营商提交可复现证据。
- 如果解析结果一致但TCP连接或HTTPS失败,转向检查端口、防火墙、路由、证书和源站,不要继续反复更换DNS。
一份可复制的反馈模板
向DNS服务商、CDN或网络运营商反馈时,可以按下面格式整理,删除无法确认的项目:
问题域名:DOMAIN
首次发现时间:YYYY-MM-DD HH:MM,时区:
网络类型:家庭宽带 / 公司网络 / 移动网络
运营商或网络出口:未核实时写“未核实”
本地DNS:
指定DNS:
查询类型:A / AAAA / CNAME / 其他
本地DNS返回:
指定DNS返回:
DoH或DoT返回:
是否更换网络后复现:是 / 否 / 未测试
访问表现:超时 / NXDOMAIN / 证书错误 / 返回异常页面 / 其他
已做操作:刷新缓存、关闭代理、关闭IPv6等
附件:命令输出、时间戳、截图不要把账号、完整IP日志、私钥或订阅内容直接发送给陌生方;只提交解决问题所需的最小证据。
常见问题
网站打不开就一定是DNS污染吗?
不一定。网页打不开也可能由TCP端口、HTTPS证书、服务器故障、代理、路由、CDN或IPv6问题造成。至少比较本地DNS、两个指定解析器和DoH或DoT结果后再判断。
换成公共DNS能解决DNS污染吗?
有时能绕过某个异常递归解析器,但不能保证解决所有问题。换DNS前应记录原结果,并同时检查A、AAAA、CNAME、TTL和实际访问;若多个解析器返回一致结果,重点应转向连接层。
DNS劫持和DNS污染有什么区别?
二者都可能导致错误解析,单凭用户端现象很难严格区分。通常应先比较不同解析器、不同网络和权威记录,再检查是否存在路由器或本机DNS设置被改写;无法形成稳定证据时,建议写“解析异常”而不是下绝对结论。
DoH或DoT一定比普通DNS快吗?
不一定。DoH和DoT主要提供加密传输和服务器身份校验,实际延迟还取决于网络距离、连接复用、解析器负载和客户端实现。应以同一网络下的实测查询结果为准,不要仅凭协议名称判断速度。
为什么关闭IPv6后网页就能打开?
这通常提示IPv6链路、AAAA记录、路由或服务端IPv6配置存在问题,但不能仅凭这一现象认定是DNS污染。应分别查询A和AAAA,并在开启、关闭IPv6的条件下记录解析与连接结果。