网络基础笔记 - 关于DNS
目录
这个笔记,我总结了互联网中的
基石级别的技术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 地址。
它不是一步完成,而是一套查询和缓存流程:
- 客户端先查本地缓存。
- 缓存没有,就向配置的递归 DNS 服务器发起查询。
- 递归服务器缓存没有,就从根域名服务器开始,逐级向顶级域服务器、权威域名服务器查询。
- 权威服务器返回该域名对应的记录。
- 递归服务器把结果返回给客户端,并按 TTL 缓存。
结果就是客户端拿到目标地址,之后才能建立网络连接。
DNS解析的几类方法
DNS 解析方式可以从不同维度划分,常见有这几类
一,按查询过程分
- 递归查询
客户端只问一次,递归 DNS 服务器负责一路查到最终结果,再把答案返回给客户端。 - 迭代查询
递归服务器自己去问各级 DNS 服务器。每级服务器只返回“下一级该问谁”,由递归服务器继续追问。 - 权威查询
直接向该域名的权威 DNS 服务器查询,拿到的是该域名的最终权威记录。
二,按解析方向分
- 正向解析
域名 → IP 地址或其他记录。 - 反向解析
IP 地址 → 域名,通常用 PTR 记录。
三,按缓存与转发分
- 缓存解析
先查本地或递归服务器缓存,命中就直接返回。 - 递归解析
缓存没有时,从根域名服务器开始逐级查询。 - 转发解析
自己不递归查,直接把请求转发给上游 DNS 服务器
四、按传输协议与加密方式分
- 传统 DNS
UDP 53 为主,TCP 53 为辅,明文传输。 - DoT
DNS over TLS,走 TCP 853,加密。 - DoH
DNS over HTTPS,走 HTTPS 443,加密。 - DoQ
DNS over QUIC,走 UDP 853,加密。 - DNSCrypt
另一种加密 DNS 协议。
五、按角色分
- 存根解析器
客户端本地的解析组件。 - 递归解析器
负责帮客户端查到最终结果。 - 转发器
只把请求转给上游。 - 权威服务器
保存并返回某个域名的权威记录。
几种协议
传统 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 | 无 | 简单、通用、低延迟 | 无隐私、易被劫持/篡改 |
| DoT | TCP 853 | TLS | 为 DNS 提供专用加密通道,便于网络管理 | 端口易被封锁,TCP 队头阻塞影响性能 |
| DoH | TCP 443 | HTTPS | 隐蔽性极强,与网页流量混合,难以被封锁 | 中心化风险,可能绕过企业安全策略 |
| DoQ | UDP 853 | QUIC (内置 TLS) | 低延迟,无队头阻塞,连接建立快 | 新兴协议,生态支持尚在发展,端口可能被封锁 |
| DNSCrypt | 443 (默认) | 自定义密码学 | 协议灵活,无状态,易于代理 | 标准化和系统级支持有限,相对小众 |