DNS 简介
DNS(Domain Name System,域名系统) 是一个分布式数据库,实现了域名与 IP 地址之间的相互映射,极大地方便了用户访问互联网。 DNS 使用 TCP/UDP 的 53 号端口进行通信,通常查询使用 UDP,传输大量数据(如区域传送)时使用 TCP。
DNS 请求与响应
常见 DNS 记录类型
- A记录(Address Record) 返回域名对应的 IPv4 地址。
- AAAA记录(IPv6 Address Record) 返回域名对应的 IPv6 地址。
- NS记录(Name Server Record) 指定负责该域名解析的权威域名服务器。
- PTR记录(Pointer Record) 反向解析,用于将 IP 地址映射回域名。
- MX记录(Mail Exchange Record) 定义负责接收邮件的服务器信息。
常见 DNS 响应码(RCODE)
| 响应码 | 含义 |
|---|---|
| NOERROR | 无错误,查询成功。 |
| FORMERR | 格式错误,服务器无法理解查询。 |
| SERVFAIL | 服务器故障,无法处理查询。 |
| NXDOMAIN | 查询的域名不存在。 |
| NOTIMP | 服务器不支持请求类型。 |
| REFUSED | 因策略原因拒绝请求。 |
| NODATA | 域名存在,但无指定类型的记录。 |
域名系统工作原理
解析过程
DNS 查询通常是递归查询,大致过程如下:
- 客户端访问
www.example.com,首先检查:- 本地
hosts文件 - 本地 DNS 缓存 若有记录,直接返回结果。
- 本地
- 本地无缓存,向配置的递归服务器发送查询请求。
- 递归服务器若无缓存,向根服务器查询,获取
.com顶级域服务器(TLD Server)的地址。 - 向
.com顶级域服务器查询example.com的权威服务器地址。 - 再向
example.com权威服务器查询www.example.com的具体地址记录。 - 递归服务器将最终结果返回客户端,同时缓存查询结果,以优化后续访问。
域传送(Zone Transfer)
- 域传送是指 DNS 主服务器(Master)与从服务器(Slave)之间同步区域(Zone)数据的过程。
- 常见的传送类型:
- AXFR:全量传送
- IXFR:增量传送
域传送确保从服务器能够及时备份和更新域名解析信息。
DNS 服务器类型
根服务器(Root Server)
- 互联网域名系统的最顶层,标识为
.(点)。 - 根服务器引导 DNS 查询进入正确的顶级域(如
.com、.net等)。 - 全球有 13 个逻辑根服务器(A~M),如
a.root-servers.org至m.root-servers.org, 实际物理服务器数量远超 13 台,采用 Anycast 技术部署。
权威服务器(Authoritative Server)
- 存储某个域名区域(Zone)的真实记录(如 A、MX、NS等)。
- 负责对特定域名范围内的查询给出最终权威回答。
- 需要向 TLD 注册局注册,支持多个权威服务器以提高可靠性。
递归服务器(Recursive Server)
- 接收客户端请求,代为查询完整的解析链。
- 持有一份本地缓存以加速后续解析。
- 起初仅拥有根服务器的 Hint 文件,依赖递归逐级查询。
DNS劫持
DNS劫持有多种方式,比较早期的攻击方式是通过攻击域名解析服务器,或是伪造DNS响应的方法,来将域名解析到恶意的IP地址。
随着互联网应用的不断发展,出现了基于废弃记录的劫持方式。这种方式发生的场景是次级域名的解析记录指向第三方资源,而第三方资源被释放后,解析记录并没有取消,在这种场景下,可以对应申请第三方资源,以获取控制解析记录的能力。
拒绝服务
DNS服务通常会开启UDP端口,当DNS服务器拥有大量二级域NS记录时,通过DNS的UDP反射攻击可以实现高倍的拒绝服务。

Comments NOTHING