☰
为什么网站会突然打不开、还总被跳转到陌生页面?一文搞懂 DNS 污染与 DNS 劫持的原理与处理方法
2026/10/4 9:46:55 网站建设 项目流程

DNS 是互联网最沉默的守门人。它不加密、不签名、不验证,却掌管着我们每一次上网的起点——当"域名到 IP"的翻译可以被悄悄改写,网络安全、网络协议与运维这三件事,就都指向了同一个问题:我们还能不能相信屏幕上打开的那个网站?

一、从一个常见的"灵异现象"说起

日常上网时,你可能遇到过下面这些情况:

  • 明明网络是通的,某个网站却怎么都打不开,换个网络(比如切到手机热点)立刻就能访问;
  • 输入一个正规网址,页面却跳到了陌生的广告页或仿冒页面;
  • ping一个域名,返回的 IP 一看就不对劲,一查归属地压根不属于该网站。

这类"域名解析出了问题"的现象,背后往往指向两个高频词汇:DNS 污染与DNS 劫持。它们听起来很像,成因和处理方式却差别很大。这篇文章就把这两件事彻底讲清楚:原理是什么、如何判断,以及普通用户和站长分别该怎么处理。

二、先复习:一次正常的 DNS 解析长什么样

浏览器访问www.example.com前,需要先把域名翻译成 IP 地址,大致流程如下:

  1. 查本地缓存:浏览器缓存 → 操作系统缓存 → hosts 文件;
  2. 询问本地递归服务器(通常是运营商或路由器下发的 DNS);
  3. 递归服务器逐级查询:根域名服务器 →.com顶级域服务器 →example.com权威服务器;
  4. 返回结果并缓存:按 TTL(存活时间)缓存后返回给客户端。

整个过程基于UDP 53 端口的明文协议,没有握手、没有加密、也没有对响应真伪的验证机制——这正是后面两种攻击的温床。

三、DNS 污染:趁"你没核实",先塞给你一个假答案

3.1 原理

DNS 污染(DNS Pollution),也叫DNS 缓存投毒(DNS Cache Poisoning)或 DNS 欺骗(DNS Spoofing)。核心思路是:利用 DNS"先到先得、不验证真伪"的弱点,抢在真实响应之前,把伪造的解析结果塞给你或塞进缓存。

它利用了两个协议层的关键弱点:

  1. DNS 查询基于 UDP,无连接、无握手:客户端无法确认响应是否真的来自自己请求的那台服务器;
  2. 客户端靠 16 位事务 ID(TxnID)匹配请求与响应:TxnID 空间小,早期实现还接受"最先到达的响应"。攻击者只需猜测出 TxnID 并抢先回一个伪造包,客户端就会信以为真,并把这条假记录缓存下来——所以叫"投毒"。

2008 年披露的Kaminsky 攻击把这类猜测效率大幅提升:攻击者针对不存在的随机子域名发起大量查询,同时用不同 TxnID 高速轰炸伪造响应;一旦命中,伪造的 NS 记录也会被上游缓存,相当于毒化整个域的授权信息。此后业界普遍部署了源端口随机化等缓解手段,但协议层的根治方案要靠DNSSEC(对解析结果做数字签名)。

3.2 典型表现

  • 解析结果指向不存在或错误的服务器 IP,网站完全无法访问;
  • 不同网络环境下解析结果不一致(部分网络被污染,部分正常);
  • 污染结果通常长期稳定(假记录被缓存),反复复现。

四、DNS 劫持:直接"接管"解析环节

4.1 原理

DNS 劫持(DNS Hijacking)思路不同:不跟你抢答,而是直接控制解析链路上某个"本应可信"的环节,让你的查询从一开始就落到劫持者手里。常见形式按位置划分:

劫持位置原理典型场景
本机 hosts 文件恶意软件改写hosts,硬编码"域名 → IP"映射流氓软件、病毒
本机 DNS 设置修改网卡/系统 DNS 指向恶意服务器恶意软件、捆绑插件
路由器弱口令/漏洞登入路由器,篡改 DNS 或让 DHCP 下发假 DNS家庭宽带广告劫持
运营商/公共 Wi-Fi 的递归 DNS递归服务器本身返回广告插页、错误提示页、统计跳转部分宽带 ISP、免费 Wi-Fi
链路中间人拦截明文 53 端口的 DNS 查询并改写响应ARP 欺骗、不安全网络

4.2 典型表现

  • 解析结果稳定指向某个特定 IP(如广告服务器),且该网络下所有人、所有域名都如此;
  • 访问 HTTP 站点时被插入广告或"无法访问"提示页;
  • HTTPS 站点会直接证书报错(假 IP 拿不出真证书)——这是判断劫持的重要线索。

五、一张表分清:DNS 污染 vs DNS 劫持

维度DNS 污染DNS 劫持
攻击方式抢先返回伪造响应、投毒缓存控制解析链路上的可信环节
是否需要控制你的设备/服务器不需要,链路上"抢答"即可通常需要(改 hosts / 路由器 / 递归服务器)
影响范围通常针对特定域名可能影响经过该环节的所有域名
结果稳定性被缓存的假记录较稳定通常非常稳定
HTTPS 表现可能异常也可能正常假 IP 一般证书报错
根治手段DNSSEC、加密 DNS清理设备/路由器、换可信 DNS、加密 DNS

一句话总结:污染是"半路塞给你假答案",劫持是"把答题人换成了自己"。

六、如何判断自己遇到了 DNS 问题

按下面的顺序排查,基本可以定位:

# 1. 用默认 DNS 查询nslookupwww.example.com# 2. 指定不同的公共 DNS 对比结果nslookupwww.example.com223.5.5.5nslookupwww.example.com119.29.29.29dig@8.8.8.8 www.example.com +short# 3. 查看本机解析所用的 DNS 服务器ipconfig /all# Windowscat/etc/resolv.conf# Linuxscutil--dns# macOS# 4. 检查 hosts 文件是否被篡改typeC:\Windows\System32\drivers\etc\hosts# Windowscat/etc/hosts# Linux / macOS

判断要点:

  1. 默认查询结果 ≠ 公共 DNS 查询结果→ 本地缓存或本地 DNS 被污染/劫持;
  2. 多个独立公共 DNS 的结果互不一致→ 更偏向污染;
  3. 解析出的 IP 归属地/所属机构与网站不符→ 用 IP 归属查询工具确认;
  4. 换网络(如手机热点)后一切正常→ 问题出在原网络链路(路由器或运营商);
  5. 浏览器提示证书错误→ 极大概率被劫持到了假服务器。

七、处理方法

7.1 普通用户侧

第一步:更换可信的公共 DNS

服务商首选 DNS备用 DNS
阿里 DNS223.5.5.5223.6.6.6
腾讯 DNSPod119.29.29.29182.254.116.116
114 DNS114.114.114.114114.114.115.115
Google8.8.8.88.8.4.4
Cloudflare1.1.1.11.0.0.1

修改位置:网卡 IPv4 设置(Windows:适配器属性;手机:Wi-Fi 高级设置;路由器:LAN/DHCP 设置)。

第二步:清空各级 DNS 缓存

# Windows(本机)ipconfig /flushdns# macOSsudodscacheutil-flushcachesudokillall-HUPmDNSResponder# Linux(systemd)resolvectl flush-caches# 旧版本命令:systemd-resolve --flush-caches

另外,Chrome/Edge 浏览器还有一层内置缓存:地址栏访问chrome://net-internals/#dns→ Clear host cache。

注意:路由器和运营商递归服务器也可能缓存了脏数据。路由器改完 DNS 后建议重启一次;运营商侧的缓存只能等 TTL 过期,或直接用加密 DNS 绕开。

第三步:排查并清理本机与路由器

  • 检查hosts文件,删除可疑映射;
  • 全盘杀毒、卸载流氓软件(它们是"改 DNS / 改 hosts"的主力);
  • 登录路由器管理后台,检查 WAN/LAN 的 DNS 与 DHCP 下发配置,修改弱口令并升级固件。

第四步(强烈推荐):启用加密 DNS,从协议层免疫

明文 53 端口的 DNS 是污染与劫持的温床,加密 DNS 是目前用户侧最有效的方案:

  • DoH(DNS over HTTPS):浏览器(Chrome/Edge/Firefox 的"安全 DNS"设置)或系统级开启(Windows 11、iOS 14+、Android 9+ 均原生支持);
  • DoT(DNS over TLS):适合路由器、企业内网的系统级部署。

开启后,链路上的中间设备既看不到、也无法篡改你的 DNS 查询内容。

7.2 网站/运维侧

如果你是站长,域名"被污染/被劫持"直接影响可用性与品牌信誉,建议:

  1. 部署 DNSSEC:对解析结果做数字签名,递归服务器与客户端可验证真伪,从根上免疫缓存投毒;
  2. 权威 DNS 多服务商冗余:主辅互备,避免单点被劫持后整站瘫痪;
  3. 多地域拨测监控:定时从全国各运营商节点解析域名并比对结果,发现异常立即告警;
  4. 合理设置 TTL:稳定期可用较长 TTL;计划迁移或遇险前提前调低 TTL,加快切换生效;
  5. 全站 HTTPS 并开启 HSTS:虽然防不住解析结果本身出错,但能让用户访问假 IP 时立刻收到证书告警,并阻断二次跳转利用;
  6. 注册商与域名账户安全:开启两步验证,防止"改 NS 记录"这类最致命的劫持。

八、几个常见误区

  • “换了 DNS 马上生效”:本机、路由器、浏览器都有缓存,改完记得 flush;
  • “上了 HTTPS 就不怕 DNS 劫持”:HTTPS 不能阻止你连到假 IP,只能让你及时发现(证书报错);防解析造假要靠 DNSSEC 与加密 DNS;
  • “ping 得通就没事”:ping 通的可能正是劫持者返回的错误 IP;
  • “污染只是小概率事件”:缓存投毒是通用攻击技术,钓鱼、广告劫持、恶意软件都在使用。

九、总结

DNS 污染与劫持的本质,都是利用了传统 DNS明文、无验证的设计缺陷,只是发力点不同:

  • 污染:在链路上抢答,污染你的缓存;
  • 劫持:接管解析环节,改写你的答案。

对应的处理思路也很清晰:

角色立即可做长期方案
普通用户换公共 DNS、flush 缓存、查 hosts 和路由器全局开启 DoH / DoT
站点/运维拨测监控、多权威冗余部署 DNSSEC、账户双因素

把 DNS 这本"互联网电话簿"的安全短板补上,很多看似玄学的网络问题自然就消失了。


如果这篇文章对你有帮助,欢迎点赞、收藏、评论交流。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询