普通视图

发现新文章,点击刷新页面。
昨天以前首页

才知道 DNS 还能基于 HTTPS 实现!

作者 南一Nanyi
2025年10月18日 23:33

你好,我是本文作者南一。如果有发现错误或者可完善的地方,恳请斧正,万分感谢!!

前言

本文是笔者的学习笔记,会详细介绍 DNS 工作原理,DNS 劫持以及防范措施,标题所指是:DOH(DNS Over HTTPS)

什么是DNS?

DNS 是域名系统 (Domain Name System) 的缩写,作用是将域名解析成 IP 地址,是一个应用层协议。在 1987 年之前,人们使用共享Hosts文件的方式,将计算机名称映射到 IP 地址,随着计算机数量的增长,Hosts文件越来越大,变得难以维护,DNS应运而生。

DNS 的工作原理

本质上DNS仍是查询”域名IP映射表“的过程,只是做了分层处理。

名词释义

  • 根服务器:管理顶级域名(如.com.cn),知道所有顶级域服务器的地址。
  • 顶级域(TLD)服务器:管理二级域名(如example.com),返回该域名的二级域名服务器地址。
  • 二级域名服务器:域名服务器理论上可以无限细分,在企业内网可能存在多级域名服务器(二级、三级...)
  • 权威服务器:存储具体域名(如www.example.com)的IP地址记录(能直接返回IP的就是权威域名服务器)

DNS查询过程

  1. 计算机使用域名时,会调用DNS的客户端服务,进行解析。下面以 www.example.com 为例进行阐述:

  2. 第一步,查询本地解析器缓存,缓存有两个来源:

    1. 启动DNS 客户端服务时,如果本机存在 Hosts 文件,则会将文件中的映射记录加载到缓存中。
    2. 以往发起DNS查询,并成功响应所得到的资源记录,也会被添加到缓存中并保留一段时间。
  3. 第二步,如果本地缓存未查到资源,客户端将查询本地域名服务器来解析域名。

  4. 本地域名服务器先查询缓存,如果有记录直接返回IP地址,如果没有则会向根域名服务器发起查询。

    1. 本地域名服务器向根服务器发起查询:根服务器返回.com顶级域服务器的地址。
    2. 本地域名服务器向顶级域名服务器(TLD)查询:.com服务器返回example.com的权威服务器地址。
    3. 本地域名服务器向权威域名服务器查询:最终获取www.example.com的IP地址
  5. 当本地域名服务器收到响应,表明已获得对请求查询的权威答案时,它会将此答案转发回请求客户端,递归查询过程就完成了。

常考问题

递归查询和迭代查询

  • 递归查询:客户端→本地域名服务器→其他域名服务器→本地域名服务器→客户端 这个过程就是递归。

    • 优点:客户端只需发起一次请求,简化操作;适合对响应速度要求高的场景(如家庭网络)。
    • 缺点:本地域名服务器压力大,需处理多级查询;若服务器故障可能导致解析失败。
  • 迭代查询: DNS服务器仅提供指引(如下一跳服务器地址),客户端需自行完成后续查询。例如,本地DNS服务器返回根服务器地址后,客户端需主动联系根服务器获取顶级域名服务器信息。

    • 优点:分散服务器负载,避免单点压力过大;增强网络容错性(如某级服务器不可用时可切换路径)。

    • 缺点:客户端需多次交互,解析速度较慢;对客户端配置要求较高

DNS系统通常结合两种方式以兼顾效率与可靠性:

  1. 客户端到本地DNS:使用递归查询,快速响应用户请求。

  2. 权威服务器间:使用迭代查询,通过根服务器→顶级域名服务器→权威服务器的层级协作完成解析

递归查询过程可能会占用大量资源,但它对 DNS 服务器而言具有一些性能优势。例如,在递归过程中,执行递归查找的 DNS 服务器会获取有关 DNS 域名空间的信息。这些信息会被服务器缓存,并可再次使用,以加快后续使用或匹配该信息的查询的响应速度。随着时间的推移,这些缓存信息可能会增长,占用服务器内存资源的很大一部分,但这些信息会在 DNS 服务开启和关闭时被清除。

DNS 劫持(DNS 投毒)

什么是DNS劫持?

域名系统劫持,也称为 DNS 重定向攻击,是指从受害者浏览器发送的 DNS 查询被错误解析,将用户重定向到恶意网站。DNS 可以在本地被恶意软件劫持,或通过路由器拦截、或名称服务器被劫持。

DNS劫持的攻击原理与劫持方式

发送 DNS 请求的浏览器与域名服务器的响应之间的通信点最容易受到攻击,因为它未加密。黑客就在该通信点拦截查询,并将用户重定向到一个恶意网站以进行勒索。目前,网络犯罪分子使用四种不同类型的 DNS 劫持:“本地”、“路由器”、“恶意”和“中间人”。

本地劫持

黑客在您的系统上安装特洛伊木马恶意软件,以攻击本地 DNS 设置。攻击后,他们可以将这些本地设置更改为直接指向他们自己的 DNS 服务器(例如,替代默认服务器)。从此开始,受害者浏览器发出的所有请求都会发送到黑客的服务器,他们可以返回他们所需的任何内容。一般来说,他们还可以将您指向其他恶意 Web 服务器。(也可能修改本地Hosts文件)

路由器劫持

许多路由器有默认密码或存在固件漏洞,可以被黑客轻易找到(许多公司不会花时间对路由器的登录凭据进行个性化设置)。黑客登录后,会修改 DNS 设置并指定首选 DNS 服务器(通常由他们拥有),这样网址到 IP 地址的转换完全由他们控制。从此开始,用户的浏览器请求被转发到恶意网站。这尤其严重,因为受影响的不仅仅是一个用户,而是连接到受感染路由器的所有用户。

域名服务器劫持

这种类型的网络犯罪比本地劫持复杂得多,因为它无法从目标设备进行控制。相反,黑客会劫持 ISP 的现有域名服务器来更改选定的条目。结果,毫无戒心的受害者看似访问了正确的 DNS 服务器,而该服务器实际上已被黑客渗透。随后,网络犯罪分子更改 DNS 记录,将用户的 DNS 请求重定向到恶意网站。由于 ISP 采用较高的网络安全标准,这种攻击较为罕见且更加难以执行。这种攻击发生时,可能会影响大量用户,因为通过该服务器解析查询的任何人都可能是受害者。

中间人攻击

此类攻击侧重于拦截您与 DNS 之间的通信。由于许多 DNS 请求中缺少加密,黑客使用专业工具中断客户端和服务器之间的通信。发出请求的用户随后被提供一个不同的目标 IP 地址,该地址指向一个恶意网站。这也可以用作对本地设备和 DNS 服务器本身的一种 DNS 缓存中毒攻击。结果与上述类型几乎相同。

如何检测 DNS 劫持?

执行“ping 命令”测试

ping 命令主要用于查看一个 IP 地址是否实际存在。如果您的浏览器 ping 一个不存在的 IP 地址却仍获得解析,则 DNS 很可能已被黑客入侵。

ping kaspersky123456.com

检查您的路由器或使用“路由器检查器”

下一跳测试在许多网站上都有提供。数字路由器检查器服务的原理是使用可靠的 DNS 解析器检查您的系统,并查看您是否正在使用授权的 DNS 服务器。或者,您可以访问路由器的在线管理页面并检查其中的 DNS 设置。

发现被攻击如何补救?

如果您意识到您的 DNS 服务器被黑客入侵,或者以前发生过这种情况,那么我们建议您使用替代的公共 DNS 服务,例如 Google 的公共 DNS 服务器。

如何预防 DNS 劫持?

对于普通用户

  1. 切勿点击可疑或不熟悉的链接(防恶意软件,木马病毒)

  2. 使用信誉良好的反病毒软件(防恶意软件,木马病毒)

  3. 更改路由器的密码和用户名(防路由器劫持)

对于网站拥有者

  1. DNS查询过程使用加密,DOH(DNS Over HTTPS)DOT(DNS Over TLS)(防中间人攻击)

  2. 启用客户端锁定:一些 DNS 注册商(例如:Google 公共 DNS)支持“客户端锁定”,这可以防止在未经批准的情况下对 DNS 记录进行任何更改。我们建议尽可能启用该功能。

总结

看到这我们可以知道,DNS 是一个应用层协议,它可以在UDP、TCP、TLS、HTTPS等协议之上实现,以前基于UDP实现DNS,是因为UDP的特性完美匹配了DNS的核心需求——高效、低延迟、轻量级,尤其适合处理海量的小数据包查询场景。而现在看,有个致命缺点——不安全,所以才有 DOH 和 DOT 等方案出现。同时,也不需要担心HTTPS 的延迟问题,因为 HTTP3 QUIC协议,整个建连过程可低至 0~1 RTT。

参考资料

什么是 DNS 劫持?

Google 公共 DNS

How DNS query works

❌
❌