DNS 解析器

协议和标准
代表客户端接收DNS查询并通过查询权威服务器来检索答案的服务器。
← 返回词汇表

DNS解析器是什么?

DNS解析器(也称为递归解析器或递归DNS服务器)是接收来自客户端设备的DNS查询并通过跟踪根、TLD和权威名称服务器来执行检索域名IP地址工作的服务器。解析器充当客户端和DNS层次结构之间的中介,处理通过根、TLD和权威名称服务器的递归。

DNS解析器如何工作

解析过程

当您在浏览器中键入"example.com"时:

1. 客户端→解析器:"example.com的IP是什么?"

2. 解析器检查缓存

→ 缓存命中:返回缓存的结果

→ 缓存未命中:开始递归

3. 解析器→根服务器:".com在哪里?"

根→解析器:"询问这些.com名称服务器"

4. 解析器→.com TLD:"example.com在哪里?"

.com→解析器:"询问这些名称服务器"

5. 解析器→权威NS:"example.com的IP是什么?"

权威NS→解析器:"203.0.113.50"

6. 解析器→客户端:"203.0.113.50"

(也根据TTL缓存结果)

递归与迭代查询

递归查询(客户端→解析器):
客户端:"给我example.com的最终答案"

解析器:"这是IP:203.0.113.50"

(解析器完成所有工作)

迭代查询(解析器→名称服务器):
解析器:"example.com是什么?"

根:"我不知道,询问.com服务器"

解析器:"example.com是什么?"

.com:"我不知道,询问ns1.example.com"

解析器:"example.com是什么?"

ns1:"203.0.113.50"

解析器类型

存根解析器

内置于操作系统和应用程序:

示例:操作系统DNS客户端、应用程序DNS库

递归解析器

执行完整DNS解析的全功能服务器:

示例:ISP DNS、Google(8.8.8.8)、Cloudflare(1.1.1.1)

转发解析器

将查询转发到另一个解析器而不是执行递归:

客户端→企业解析器(转发)→ISP解析器(递归)→Internet

热门公共解析器

提供商IPv4IPv6功能
Cloudflare1.1.1.1, 1.0.0.12606:4700:4700::1111快速、隐私为中心、无日志
Google8.8.8.8, 8.8.4.42001:4860:4860::8888可靠、全球任播
Quad99.9.9.92620:fe::fe安全过滤、威胁阻止
OpenDNS208.67.222.2222620:119:35::35内容过滤、网络钓鱼保护

更改您的解析器

Windows:
Control Panel → 网络 → 适配器设置

→ 属性 → IPv4 → 使用这些DNS服务器:

首选:1.1.1.1

备用:8.8.8.8

macOS:
系统偏好设置 → 网络 → 高级 → DNS

→ 添加:1.1.1.1, 8.8.8.8

Linux(/etc/resolv.conf):
nameserver 1.1.1.1

nameserver 8.8.8.8

解析器功能

缓存

解析器根据TTL缓存DNS响应:

第一个查询:example.com

→ 完整递归(50ms)

→ 缓存300秒(TTL)

后续查询:example.com

→ 缓存命中(1ms)

→ 在TTL过期前提供

缓存统计显示命中率通常超过80-90%。

负面缓存

解析器也缓存负面响应(NXDOMAIN):

查询:nonexistent.example.com

响应:NXDOMAIN

缓存:基于SOA最小TTL

这防止了对不存在的域的重复查询。

查询最小化

现代解析器最小化信息泄露:

传统方式
对.com的查询:"www.blog.example.com是什么?"

→ 暴露完整的子域结构

查询最小化(RFC 7816)
对.com的查询:"example.com是什么?"

对example.com NS的查询:"blog.example.com是什么?"

对blog.example.com NS的查询:"www.blog.example.com是什么?"

→ 仅在每个级别显示必要的信息

DNSSEC验证

安全感知解析器验证DNSSEC签名:

查询:example.com(DNSSEC签名)

→ 解析器验证签名

→ 如果有效,返回AD(真实数据)标志

→ 如果签名无效,返回SERVFAIL

解析器安全功能

DNS over HTTPS(DoH)

通过HTTPS加密DNS查询:

传统DNS:

客户端→解析器(UDP端口53,明文)

DNS over HTTPS:

客户端→解析器(TCP端口443,加密)

提供商:Cloudflare(https://cloudflare-dns.com/dns-query)、Google

DNS over TLS(DoT)

通过TLS加密DNS查询:

客户端→解析器(TCP端口853,加密)
好处:ISP无法看到或修改DNS查询

恶意软件/钓鱼过滤

某些解析器阻止已知的恶意域:

Quad9(9.9.9.9):阻止与恶意软件、网络钓鱼相关的域 Cloudflare for Families:阻止恶意软件(1.1.1.2)或恶意软件+成人内容(1.1.1.3)

速率限制

防止DNS放大攻击:

如果源IP发送>阈值查询/秒:

→ 暂时速率限制或阻止

检查您当前的解析器

Windows:
ipconfig /all | findstr "DNS Servers"
macOS/Linux:
cat /etc/resolv.conf
在线工具:browserleaks.com/dns显示您的浏览器使用哪个解析器 测试解析
dig example.com

# 在输出中查找"SERVER:"

解析器性能

延迟很重要

解析器响应时间影响Web性能:

解析器平均延迟影响
本地ISP10-30毫秒快速,但不同
Cloudflare10-20毫秒始终快速(任播)
Google20-40毫秒可靠,全球
慢解析器100-200毫秒明显的页面加载延迟

任播路由

主要解析器使用任播实现低延迟:

1.1.1.1任播IP

→ 路由到最近的Cloudflare数据中心

→ 纽约查询→纽约数据中心

→ 伦敦查询→伦敦数据中心

→ 结果:全球低延迟解析

测量解析器性能

使用Namebench(自动测试):
# 使用您的实际查询模式测试多个解析器

namebench

手动测试
# 测试Cloudflare

time dig @1.1.1.1 example.com

# 测试Google

time dig @8.8.8.8 example.com

# 测试ISP(当前)

time dig example.com

常见解析器问题

DNS中毒

攻击者将虚假记录注入解析器缓存:

缓解

解析器劫持

ISP或恶意软件重定向DNS查询:

症状:搜索显示ISP广告、意外重定向 解决方案

缓存陈旧

解析器缓存过时的记录:

症状:DNS更改未反映 解决方案

解析器阻止

某些网络阻止外部解析器:

症状:无法访问8.8.8.8、1.1.1.1 解决方案

配置本地解析器

使用Unbound

# 安装Unbound(Linux)

sudo apt install unbound

# 基本配置(/etc/unbound/unbound.conf)

server:

interface: 127.0.0.1

do-ip4: yes

do-udp: yes

do-tcp: yes

# 启用DNSSEC

auto-trust-anchor-file: "/var/lib/unbound/root.key"

# 隐私(查询最小化)

qname-minimisation: yes

# 启动服务

sudo systemctl start unbound

sudo systemctl enable unbound

使用Pi-hole

网络范围内的广告阻止DNS解析器:

# 安装Pi-hole

curl -sSL https://install.pi-hole.net | bash

# 将设备配置为使用Pi-hole作为解析器

# 设置路由器DHCP为提供Pi-hole IP作为DNS

最佳实践

1. 使用信誉良好的公共解析器:Cloudflare、Google或Quad9以获得可靠性

2. 启用DoH/DoT:为隐私和安全加密查询

3. 考虑解析器功能:根据隐私、速度或安全需求选择

4. 监控解析器性能:定期测试延迟

5. 有备份解析器:配置辅助DNS以实现冗余

6. 使用DNSSEC验证解析器:防止缓存中毒

7. 了解您的解析器的政策:某些进行过滤,某些记录查询

8. 更改后测试:验证DNS解析正确工作

9. 记录解析器选择:记录为什么选择特定的解析器

10. 谨慎更新resolv.conf:不正确的配置会完全破坏DNS

解析器与权威名称服务器

功能解析器权威NS
角色回答客户端查询保存实际DNS记录
递归是的,查询其他服务器否,仅回答自己的区域
缓存是的,缓存响应否(权威数据)
由谁使用客户端、最终用户在递归中由解析器使用
示例8.8.8.8、1.1.1.1ns1.example.com

DNS解析器是DNS系统的工作马——选择快速、安全、隐私尊重的解析器可显著影响您的浏览体验和在线安全。

将知识付诸实践

使用 DomScan 的 API 检查域名可用性、健康状态等。