DNS 服务器根据其功能和在 DNS 解析链中的位置,可以分为多种类型。理解这些类型对于构建可靠的 DNS 架构至关重要。
DNS 服务器分类
按功能分类
| 类型 | 功能 | 示例 |
|---|---|---|
| 递归 DNS 服务器 | 代替客户端完成完整查询 | 8.8.8.8、1.1.1.1 |
| 权威 DNS 服务器 | 存储和管理域名数据 | ns1.example.com |
| 根服务器 | DNS 层次结构的顶层 | a.root-servers.net |
| TLD 服务器 | 管理顶级域 | .com、.org 服务器 |
| 转发 DNS 服务器 | 将查询转发到其他 DNS | 企业内部 DNS |
递归 DNS 服务器
定义和作用
递归 DNS 服务器(Recursive DNS Server)接收客户端的 DNS 查询,并负责完成整个查询过程,返回最终结果。
工作流程
shell客户端 → 递归 DNS 服务器 ↓ 递归 DNS 服务器查询根服务器 ↓ 查询 TLD 服务器 ↓ 查询权威 DNS 服务器 ↓ 返回最终 IP 给客户端
特点
✅ 客户端友好:客户端只需发送一次请求 ✅ 缓存机制:缓存查询结果,提高性能 ✅ 简化客户端:客户端无需了解 DNS 层次结构
❌ 服务器负载高:需要完成所有后续查询 ❌ 可能被滥用:可能被用于 DNS 放大攻击
配置示例
bind; named.conf options { recursion yes; allow-recursion { trusted; }; recursion-clients 1000; }; zone "." { type hint; file "root.hints"; };
常见递归 DNS 服务器
| 服务商 | 地址 | 特点 |
|---|---|---|
| 8.8.8.8 | 稳定可靠 | |
| Cloudflare | 1.1.1.1 | 隐私优先 |
| Quad9 | 9.9.9.9 | 恶意域名拦截 |
| 阿里 | 223.5.5.5 | 国内速度快 |
权威 DNS 服务器
定义和作用
权威 DNS 服务器(Authoritative DNS Server)存储和管理特定域名的 DNS 数据,是该域名的最终数据源。
工作流程
shell递归 DNS 服务器 → 权威 DNS 服务器 ↓ 权威 DNS 服务器查询本地数据 ↓ 返回权威答案
特点
✅ 数据权威:提供域名的最终数据 ✅ 可配置:管理员可以配置 DNS 记录 ✅ 支持 DNSSEC:可以签名 DNS 数据
❌ 不递归:只回答自己负责的域名 ❌ 不缓存其他域名:只存储自己的数据
配置示例
bind; 主服务器 zone "example.com" { type master; file "/etc/bind/db.example.com"; allow-transfer { 192.0.2.10; }; }; ; 从服务器 zone "example.com" { type slave; file "/etc/bind/db.example.com.slave"; masters { 192.0.2.1; }; };
主从架构
shell主服务器(Master) ↓ AXFR/IXFR 从服务器 1(Slave) 从服务器 2(Slave)
优势:
- 高可用性
- 负载分担
- 数据冗余
根服务器
定义和作用
根服务器(Root Name Server)是 DNS 层次结构的最高层,知道所有顶级域(TLD)的服务器位置。
工作流程
shell递归 DNS 服务器 → 根服务器 ↓ 根服务器返回 TLD 服务器地址 ↓ 递归 DNS 服务器查询 TLD 服务器
特点
✅ DNS 起点:所有 DNS 解析的起点 ✅ 任播部署:全球多个节点 ✅ 高度稳定:分布式架构
❌ 数量有限:逻辑上只有 13 个
根服务器列表
| 标识 | 运营商 | 地点 |
|---|---|---|
| A | Verisign | 美国 |
| B | USC-ISI | 美国 |
| C | Cogent | 美国 |
| D | University of Maryland | 美国 |
| E | NASA | 美国 |
| F | ISC | 美国 |
| G | US DoD NIC | 美国 |
| H | US Army Research Lab | 美国 |
| I | Netnod | 瑞典 |
| J | Verisign | 美国 |
| K | RIPE NCC | 英国/荷兰 |
| L | ICANN | 美国 |
| M | WIDE Project | 日本 |
TLD 服务器
定义和作用
TLD 服务器(Top-Level Domain Server)管理顶级域(如 .com、.org、.cn)的 DNS 数据。
工作流程
shell递归 DNS 服务器 → TLD 服务器 ↓ TLD 服务器返回权威 DNS 服务器地址 ↓ 递归 DNS 服务器查询权威 DNS 服务器
常见 TLD
| TLD | 管理机构 | 特点 |
|---|---|---|
| .com | Verisign | 最大的 TLD |
| .org | Public Interest Registry | 非营利组织 |
| .net | Verisign | 网络服务 |
| .cn | CNNIC | 中国国家域名 |
转发 DNS 服务器
定义和作用
转发 DNS 服务器(Forwarding DNS Server)将客户端的 DNS 查询转发到其他 DNS 服务器,而不是自己解析。
工作流程
shell客户端 → 转发 DNS 服务器 ↓ 转发到上游 DNS 服务器 ↓ 上游 DNS 服务器返回结果 ↓ 转发 DNS 服务器返回给客户端
配置示例
bind; named.conf options { forward only; forwarders { 8.8.8.8; 1.1.1.1; }; };
使用场景
- 企业内部:统一使用上游 DNS
- 防火墙限制:限制直接访问互联网
- 缓存优化:本地缓存上游 DNS 结果
DNS 服务器架构设计
典型架构
shell用户 ↓ 本地 DNS(递归) ↓ ┌────┴────┐ ↓ ↓ 根服务器 转发 DNS ↓ ↓ TLD 服务器 上游 DNS ↓ ↓ 权威 DNS 服务器
高可用架构
shell用户 ↓ 本地 DNS 集群(负载均衡) ↓ ┌────┴────┐ ↓ ↓ 主权威 从权威 ↓ ↓ 数据库 数据库
面试常见问题
Q: 递归 DNS 服务器和权威 DNS 服务器有什么区别?
A:
- 递归 DNS 服务器:代替客户端完成完整查询,返回最终结果(如 8.8.8.8)
- 权威 DNS 服务器:存储和管理特定域名的 DNS 数据,提供权威答案(如 ns1.example.com)
Q: 为什么需要主从 DNS 服务器?
A:
- 高可用性:主服务器故障时,从服务器继续服务
- 负载分担:多个服务器分担查询负载
- 数据冗余:防止数据丢失
Q: 转发 DNS 服务器有什么作用?
A:
- 统一管理:企业内部统一使用上游 DNS
- 安全控制:限制直接访问互联网
- 性能优化:本地缓存上游 DNS 结果
Q: 根服务器和 TLD 服务器有什么区别?
A:
- 根服务器:DNS 层次结构的顶层,知道所有 TLD 的位置
- TLD 服务器:管理特定顶级域(如 .com),知道该 TLD 下所有域名的权威服务器
总结
| 类型 | 作用 | 特点 |
|---|---|---|
| 递归 DNS | 代替客户端查询 | 缓存、简化客户端 |
| 权威 DNS | 存储域名数据 | 权威、可配置 |
| 根服务器 | DNS 起点 | 任播、稳定 |
| TLD 服务器 | 管理顶级域 | 分层管理 |
| 转发 DNS | 转发查询 | 统一管理、缓存 |