这个笔记,我总结了互联网中的 基石 级别的技术 DNS 相关的一些知识


DNS是什么

DNS,全称为"Domain Name System",中文名为"域名系统"。它是一种用于分布式数据库,提供主机名字和IP地址之间的转换服务。

在互联网中,每一台计算机都有一个唯一的IP地址,这就像每一个人都有一个唯一的身份证号码。但是,IP地址是由一串数字组成的,比如192.168.1.1,这样的数字对于人类来说并不容易记忆。因此,就需要有一种方法能够将这些数字转换成更容易记忆的名称,这就是DNS的主要功能。

例如,当你在浏览器中输入www.google.com时,你的计算机会首先向DNS服务器发送一个请求,询问这个网址对应的IP地址是什么。DNS服务器会回答说,www.google.com的IP地址是64.233.170.113。然后,你的计算机就会向这个IP地址发送请求,获取网页内容。

总的来说,DNS服务器就像是互联网的电话簿,帮助我们找到每个网站的"电话号码"(即IP地址)。

![图1][images/dns-dos-doh-doq/1.png]

如上图 与64.233.170.113相比,www.google.com 更容易被人记住

DNS解析是什么

DNS 解析就是:把域名翻译成对应的资源记录,最常见的是 IP 地址。
它不是一步完成,而是一套查询和缓存流程:

  1. 客户端先查本地缓存。
  2. 缓存没有,就向配置的递归 DNS 服务器发起查询。
  3. 递归服务器缓存没有,就从根域名服务器开始,逐级向顶级域服务器、权威域名服务器查询。
  4. 权威服务器返回该域名对应的记录。
  5. 递归服务器把结果返回给客户端,并按 TTL 缓存。

结果就是客户端拿到目标地址,之后才能建立网络连接。

DNS解析的几类方法

DNS 解析方式可以从不同维度划分,常见有这几类

一,按查询过程分

  1. 递归查询
    客户端只问一次,递归 DNS 服务器负责一路查到最终结果,再把答案返回给客户端。
  2. 迭代查询
    递归服务器自己去问各级 DNS 服务器。每级服务器只返回“下一级该问谁”,由递归服务器继续追问。
  3. 权威查询
    直接向该域名的权威 DNS 服务器查询,拿到的是该域名的最终权威记录。

二,按解析方向分

  1. 正向解析
    域名 → IP 地址或其他记录。
  2. 反向解析
    IP 地址 → 域名,通常用 PTR 记录。

三,按缓存与转发分

  1. 缓存解析
    先查本地或递归服务器缓存,命中就直接返回。
  2. 递归解析
    缓存没有时,从根域名服务器开始逐级查询。
  3. 转发解析
    自己不递归查,直接把请求转发给上游 DNS 服务器

四、按传输协议与加密方式分

  1. 传统 DNS
    UDP 53 为主,TCP 53 为辅,明文传输。
  2. DoT
    DNS over TLS,走 TCP 853,加密。
  3. DoH
    DNS over HTTPS,走 HTTPS 443,加密。
  4. DoQ
    DNS over QUIC,走 UDP 853,加密。
  5. DNSCrypt
    另一种加密 DNS 协议。

五、按角色分

  1. 存根解析器
    客户端本地的解析组件。
  2. 递归解析器
    负责帮客户端查到最终结果。
  3. 转发器
    只把请求转给上游。
  4. 权威服务器
    保存并返回某个域名的权威记录。

几种协议

传统 DNS (Do53)

这是最基础、最原始的 DNS 查询方式,至今仍是绝大多数互联网流量的默认选择。

  • 核心机制:查询和响应默认通过 UDP 53 端口以明文形式发送。选择 UDP 是因为它开销小、速度快,一次查询通常只需一个数据包就能完成。当响应数据过大(如包含 DNSSEC 签名)或进行区域传送时,会自动切换到可靠的 TCP 53 端口(参考1)。

  • 主要问题:由于是明文传输,你的 DNS 查询就像一张“明信片”,中间的任何人都能轻易看到你访问了哪些域名,甚至篡改返回的结果,导致 DNS 劫持或缓存投毒。

加密 DNS 的四种方式

为了解决传统 DNS 的安全和隐私问题,业界提出了多种加密方案。

1. DNS over TLS (DoT):给 DNS 加个“专用加密通道”

DoT 的核心思想是为 DNS 这个独立服务,单独建立一个 TLS 加密隧道。

  • 核心机制:它直接在 TCP 853 端口上建立 TLS 会话,然后将原始的 DNS 查询和响应数据放入这个加密隧道中传输。

  • 主要特点:

    • 专用端口:使用固定的 853 端口,网络管理员可以清晰地识别和管理 DoT 流量。
    • 两种模式:支持“严格隐私”模式(必须验证服务器证书,连接失败则报错)和“机会性隐私”模式(不验证证书,失败时自动回退到不加密的传统 DNS)。
  • 潜在问题:853 端口并非通用端口,在某些严格的网络环境中可能被防火墙直接封锁。此外,它基于 TCP,存在队头阻塞问题,即一个数据包丢失会阻塞后续所有数据的传输,影响性能(参考2)。

2. DNS over HTTPS (DoH):将 DNS 查询“伪装”成网页流量

DoH 的思路是把 DNS 查询打包成标准的 HTTPS 网页请求,混入海量的普通网页流量中。

  • 核心机制:将 DNS 查询封装在 HTTP 消息中,通过 TCP 443 端口(HTTPS 标准端口)发送(参考2)。

  • 主要特点:

    • 极强的隐蔽性:由于与普通网页浏览共用 443 端口,封锁 DoH 流量几乎等同于封锁整个 HTTPS 网络,这使得 DoH 极难被识别和阻断。
    • 浏览器原生支持:主流浏览器(如 Firefox、Chrome)已原生支持 DoH,用户无需安装额外软件即可启用。
  • 潜在问题:部分观点认为,DoH 将 DNS 查询集中到少数大型服务商(如 Google、Cloudflare),可能带来中心化风险,并绕过企业网络原有的 DNS 安全策略。

3. DNS over QUIC (DoQ):为加密 DNS 打造“高速新干线”

DoQ 是较新的标准(RFC 9250),旨在结合 DoT 的隐私性和传统 UDP 的低延迟优势。

  • 核心机制:它基于 QUIC 协议运行。QUIC 本身建立在 UDP 之上,但内置了 TLS 1.3 加密,并将传输和加密握手合并,实现了 0-RTT 或 1-RTT 的快速连接建立。

  • 主要特点:

    • 低延迟:相比基于 TCP 的 DoT 和 DoH,DoQ 避免了 TCP 队头阻塞,且连接建立更快,性能更接近原生 UDP DNS。
    • 端口选择:标准使用 UDP 853 端口,但这同样可能面临被防火墙拦截的问题。
  • 当前状态:DoQ 是新兴协议,虽然 Quad9 等部分公共解析器已支持,但整体生态仍在发展中。

4. DNSCrypt:加密 DNS 的“先行者”

DNSCrypt 是早期(2011年)出现的加密 DNS 协议,早于 DoT 和 DoH 的标准化。

  • 核心机制:它不依赖 TLS 或 HTTPS,而是自定义了一套密码学协议来加密和认证 DNS 流量。它使用 X25519 算法进行密钥交换,EdDSA 算法进行签名,并采用 XSalsa20-Poly1305 等算法进行认证加密。

  • 主要特点:

    • 协议灵活:它被设计为在标准 DNS 传输机制上运行,默认使用 443 端口,可以很好地伪装。
    • 无状态:每个查询独立处理,无需维护会话状态,这使得它易于代理和扩展。
  • 现状:尽管技术上有其优势,但 DNSCrypt 的标准化进程和操作系统原生支持不如 DoT/DoH 广泛,目前主要在一些特定的软件和社区中使用。

协议端口加密方式核心优势主要挑战
传统 DNS (Do53)UDP/TCP 53无简单、通用、低延迟无隐私、易被劫持/篡改
DoTTCP 853TLS为 DNS 提供专用加密通道,便于网络管理端口易被封锁,TCP 队头阻塞影响性能
DoHTCP 443HTTPS隐蔽性极强,与网页流量混合,难以被封锁中心化风险,可能绕过企业安全策略
DoQUDP 853QUIC (内置 TLS)低延迟,无队头阻塞,连接建立快新兴协议,生态支持尚在发展,端口可能被封锁
DNSCrypt443 (默认)自定义密码学协议灵活,无状态,易于代理标准化和系统级支持有限,相对小众

1.参考1 - datatracker.ietf.org 2.参考2 - ar5iv.labs.arxiv.org