基于本文回答

播面 播面

文图音视,全方位拆解八股文
0
评论

什么是 DNS 劫持和 DNS 污染?

知识点图片

为了让你通俗易懂地理解 DNS 劫持DNS 污染,我们需要先简单回顾一下 DNS(域名系统) 是做什么的。

DNS 就像互联网的“电话簿”
当你在浏览器输入 www.google.com(域名)时,电脑并不知道它的具体位置,它需要去问 DNS 服务器:“请问 Google 的 IP 地址是多少?”DNS 服务器回答:“是 142.250.x.x。”然后电脑才能根据这个 IP 地址去访问网站。

如果这个“问路”的过程出了问题,就是 DNS 劫持或 DNS 污染。


1. DNS 劫持 (DNS Hijacking)

通俗解释:
你打电话给查号台(DNS 服务器)问某人的电话,但是查号台的工作人员是假的,或者被收买了。他故意给了你一个错误的号码(比如披萨店的号码),让你打过去听广告,或者骗你的钱。

原理:
DNS 劫持通常发生在用户端ISP(运营商)DNS 服务器之间。攻击者通过某种手段,篡改了你的 DNS 配置,或者拦截了你的 DNS 请求,强行把你引向错误的服务器。

常见形式:

  • 运营商劫持: 早期最常见。当你访问一个不存在的域名时,本该显示“无法访问”,结果运营商把你劫持到了一个满是广告的导航页面。或者你在访问网页时,右下角突然弹出的运营商广告,往往也是通过 DNS 劫持插入的。
  • 路由器/木马劫持: 黑客入侵了你的路由器,或者你的电脑中了病毒,把你电脑里的“首选 DNS 服务器”改成了黑客控制的服务器。你去访问银行网站,它把你解析到一个做得一模一样的假银行网站(钓鱼网站),盗取你的账号密码。

特点:

  • 位置: 通常发生在“最后一公里”,即用户设备、路由器或本地运营商处。
  • 目的: 多为了商业利益(弹广告、推广链接)或网络诈骗(钓鱼)。

2. DNS 污染 (DNS Pollution / DNS Cache Poisoning)

通俗解释:
你站在广场上大喊:“谁知道 Google 的电话号码?”真正的查号台还在翻书准备回答你,旁边突然冲出来一个坏人,抢先大喊了一个假号码。因为你听到了第一个回答,你就信以为真,记下了假号码,不再理会后面真正查号台传来的声音。

原理:
DNS 查询通常使用 UDP 协议,这是一种“不建立连接”的协议(只管发,不确认收到)。
在中国互联网环境下,DNS 污染特指 GFW(防火长城) 的一种封锁手段。当你的 DNS 请求经过骨干网时,如果包含敏感域名(如 Google、Facebook 等),GFW 会检测到,并抢在真正的 DNS 服务器响应之前,伪造一个错误的 DNS 应答包发给你。

你的电脑(或本地 DNS 服务器)收到了这个错误的 IP,就会把它存入缓存(Cache)。接下来的一段时间里,不管你再问多少次,得到的都是这个错误的 IP,导致网站无法访问。

特点:

  • 位置: 发生在骨干网络节点,是一种“旁路攻击”。
  • 目的: 主要用于网络审查,阻止用户访问特定的境外网站。
  • 表现: 网站无法打开,或者解析到的 IP 地址是随机的、不可用的(有时甚至会解析到完全无关的国外服务器上)。

3. 两者的核心区别

特性 DNS 劫持 (Hijacking) DNS 污染 (Pollution)
形象比喻 查号台是黑店,故意给你假号码。 坏人抢答,用假号码淹没真声音。
发生层级 本地设置、路由器、ISP 接入层。 国际出口、骨干网层级。
主要手段 修改配置、拦截端口、重定向。 抢答(伪造数据包抢先响应)。
主要目的 弹窗广告、网络钓鱼、流量变现。 屏蔽网站(国家防火墙主要手段)。
解决难度 较易(修改 DNS、杀毒、投诉运营商)。 较难(需要加密传输或代理)。

4. 如何应对?

针对这两种情况,普通的解决方法如下:

  1. 更换公共 DNS(针对部分劫持):
    不要使用运营商默认分配的 DNS,手动在电脑/路由器网络设置里改为公共 DNS,例如:

    • Google: 8.8.8.8
    • Cloudflare: 1.1.1.1
    • 阿里 DNS: 223.5.5.5
    • 注意:这能解决运营商弹广告的劫持,但无法解决 DNS 污染,因为请求发往 8.8.8.8 的途中依然会被 GFW 抢答。
  2. 使用 DoH (DNS over HTTPS) 或 DoT (DNS over TLS):
    这是目前最有效的手段。

    • 原理: 传统的 DNS 查询是明文的,谁都能看,谁都能改。DoH 把 DNS 请求像普通网页数据(HTTPS)一样加密打包
    • 效果: 运营商和 GFW 既不知道你在问哪个域名,也无法插入伪造的回答。
    • 操作: 现在的 Chrome、Edge、Firefox 浏览器设置里都有“安全 DNS”选项,开启并选择 Cloudflare 或 Google 即可。
  3. 修改 Hosts 文件(最原始的方法):
    直接告诉电脑“不要去问 DNS 服务器了,我直接告诉你这个域名的 IP 是多少”。

    • 前提是你必须知道该网站正确且未被封锁的 IP 地址。
  4. 使用梯子/代理:
    将 DNS 请求通过加密隧道发送到海外,由海外的服务器代为解析,从而绕过本地的污染和劫持。

00:00
00:00